Skip to content

Commit 4ef80b7

Browse files
author
Fil Maj
authored
web-api: add new conversations.externalInvitePermissions.set API (#1834)
1 parent e527b43 commit 4ef80b7

File tree

6 files changed

+98
-43
lines changed

6 files changed

+98
-43
lines changed

packages/web-api/src/methods.ts

+10
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ import type {
145145
ConversationsCloseArguments,
146146
ConversationsCreateArguments,
147147
ConversationsDeclineSharedInviteArguments,
148+
ConversationsExternalInvitePermissionsSetArguments,
148149
ConversationsHistoryArguments,
149150
ConversationsInfoArguments,
150151
ConversationsInviteArguments,
@@ -390,6 +391,7 @@ import type {
390391
ConversationsCloseResponse,
391392
ConversationsCreateResponse,
392393
ConversationsDeclineSharedInviteResponse,
394+
ConversationsExternalInvitePermissionsSetResponse,
393395
ConversationsHistoryResponse,
394396
ConversationsInfoResponse,
395397
ConversationsInviteResponse,
@@ -1505,6 +1507,14 @@ export abstract class Methods extends EventEmitter<WebClientEvent> {
15051507
this,
15061508
'conversations.declineSharedInvite',
15071509
),
1510+
externalInvitePermissions: {
1511+
/**
1512+
* @description Convert a team in a shared channel from an External Limited channel to a fully shared Slack
1513+
* Connect channel or vice versa.
1514+
* @see {@link https://api.slack.com/methods/conversations.externalInvitePermissions.set `conversations.externalInvitePermissions.set` API reference}.
1515+
*/
1516+
set: bindApiCall<ConversationsExternalInvitePermissionsSetArguments, ConversationsExternalInvitePermissionsSetResponse>(this, 'conversations.externalInvitePermissions.set'),
1517+
},
15081518
/**
15091519
* @description Fetches a conversation's history of messages and events.
15101520
* @see {@link https://api.slack.com/methods/conversations.history `conversations.history` API reference}.

packages/web-api/src/types/request/conversations.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,22 @@ export interface ConversationsCreateArguments extends IsPrivate, TokenOverridabl
8080
// https://api.slack.com/methods/conversations.declineSharedInvite
8181
export interface ConversationsDeclineSharedInviteArguments extends InviteID, TargetTeam, TokenOverridable {}
8282

83+
// https://api.slack.com/methods/conversations.externalInvitePermissions.set
84+
export interface ConversationsExternalInvitePermissionsSetArguments extends Channel, Required<TargetTeam>,
85+
TokenOverridable {
86+
/** @description The type of action be taken: `upgrade` or `downgrade`. */
87+
action: 'downgrade' | 'upgrade';
88+
}
89+
8390
// https://api.slack.com/methods/conversations.history
8491
export interface ConversationsHistoryArguments extends Channel, IncludeAllMetadata, TokenOverridable,
8592
CursorPaginationEnabled, TimelinePaginationEnabled {}
8693

8794
// https://api.slack.com/methods/conversations.info
8895
export interface ConversationsInfoArguments extends Channel, TokenOverridable, LocaleAware {
89-
/** @description Set to `true` to include the member count for the specified conversation. Defaults to `false`. */
96+
/**
97+
@description Set to `true` to include the member count for the specified conversation. Defaults to `false`.
98+
*/
9099
include_num_members?: boolean;
91100
}
92101

+42-42
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
1-
export type { WorkflowsStepCompletedArguments, WorkflowsStepFailedArguments, WorkflowsUpdateStepArguments } from './workflows';
2-
export type { ViewsUpdateArguments, ViewsOpenArguments, ViewsPushArguments, ViewsPublishArguments } from './views';
3-
export type { UsersConversationsArguments, UsersDiscoverableContactsLookupArguments, UsersInfoArguments, UsersListArguments, UsersIdentityArguments, UsersSetPhotoArguments, UsersProfileGetArguments, UsersProfileSetArguments, UsersDeletePhotoArguments, UsersGetPresenceArguments, UsersSetPresenceArguments, UsersLookupByEmailArguments } from './users';
4-
export type { ToolingTokensRotateArguments } from './tooling';
5-
export type { SearchAllArguments, SearchFilesArguments, SearchMessagesArguments } from './search';
6-
export type { UsergroupsCreateArguments, UsergroupsDisableArguments, UsergroupsEnableArguments, UsergroupsListArguments, UsergroupsUpdateArguments, UsergroupsUsersListArguments, UsergroupsUsersUpdateArguments } from './usergroups';
7-
export type { TeamAccessLogsArguments, TeamBillableInfoArguments, TeamBillingInfoArguments, TeamExternalTeamsListArguments, TeamInfoArguments, TeamIntegrationLogsArguments, TeamPreferencesListArguments, TeamProfileGetArguments } from './team';
8-
export type { StarsAddRemoveArguments, StarsListArguments } from './stars';
9-
export type { RTMConnectArguments, RTMStartArguments } from './rtm';
10-
export type { RemindersAddArguments, RemindersInfoArguments, RemindersListArguments, RemindersDeleteArguments, RemindersCompleteArguments } from './reminders';
11-
export type { ReactionsAddArguments, ReactionsGetArguments, ReactionsListArguments, ReactionsRemoveArguments } from './reactions';
12-
export type { PinsAddArguments, PinsListArguments, PinsRemoveArguments } from './pins';
13-
export type { OpenIDConnectTokenArguments, OpenIDConnectUserInfoArguments } from './openid';
14-
export type { OAuthAccessArguments, OAuthV2AccessArguments, OAuthV2ExchangeArguments } from './oauth';
15-
export type { MigrationExchangeArguments } from './migration';
16-
export type { FilesDeleteArguments, FilesInfoArguments, FilesListArguments, FilesRevokePublicURLArguments, FilesSharedPublicURLArguments, FilesUploadArguments, FilesUploadV2Arguments, FilesCompleteUploadExternalArguments, FilesGetUploadURLExternalArguments, FilesCommentsDeleteArguments, FilesRemoteUpdateArguments, FilesRemoteRemoveArguments, FilesRemoteShareArguments, FilesRemoteListArguments, FilesRemoteInfoArguments, FilesRemoteAddArguments } from './files';
17-
export type { EmojiListArguments } from './emoji';
18-
export type { DndEndDndArguments, DndEndSnoozeArguments, DndInfoArguments, DndSetSnoozeArguments, DndTeamInfoArguments } from './dnd';
19-
export type { DialogOpenArguments } from './dialog';
20-
export type { ConversationsAcceptSharedInviteArguments, ConversationsApproveSharedInviteArguments, ConversationsArchiveArguments, ConversationsCloseArguments, ConversationsCreateArguments, ConversationsDeclineSharedInviteArguments, ConversationsHistoryArguments, ConversationsInfoArguments, ConversationsInviteArguments, ConversationsInviteSharedArguments, ConversationsJoinArguments, ConversationsKickArguments, ConversationsLeaveArguments, ConversationsListArguments, ConversationsListConnectInvitesArguments, ConversationsMarkArguments, ConversationsMembersArguments, ConversationsOpenArguments, ConversationsRenameArguments, ConversationsRepliesArguments, ConversationsSetPurposeArguments, ConversationsSetTopicArguments, ConversationsUnarchiveArguments } from './conversations';
21-
export type { ChatDeleteArguments, ChatDeleteScheduledMessageArguments, ChatGetPermalinkArguments, ChatMeMessageArguments, ChatPostEphemeralArguments, ChatPostMessageArguments, ChatScheduleMessageArguments, ChatScheduledMessagesListArguments, ChatUnfurlArguments, ChatUpdateArguments } from './chat';
22-
export type { CanvasesAccessDeleteArguments, CanvasesAccessSetArguments, CanvasesCreateArguments, CanvasesDeleteArguments, CanvasesEditArguments, CanvasesSectionsLookupArguments, ConversationsCanvasesCreateArguments } from './canvas';
23-
export type { CallsAddArguments, CallsEndArguments, CallsInfoArguments, CallsUpdateArguments, CallsParticipantsAddArguments, CallsParticipantsRemoveArguments } from './calls';
24-
export type { BotsInfoArguments } from './bots';
25-
export type { BookmarksAddArguments, BookmarksEditArguments, BookmarksListArguments, BookmarksRemoveArguments } from './bookmarks';
26-
export type { AuthRevokeArguments, AuthTestArguments, AuthTeamsListArguments } from './auth';
27-
export type { AppsConnectionsOpenArguments, AppsEventAuthorizationsListArguments, AppsManifestCreateArguments, AppsManifestDeleteArguments, AppsManifestExportArguments, AppsManifestUpdateArguments, AppsManifestValidateArguments, AppsUninstallArguments } from './apps';
28-
export type { APITestArguments } from './api';
29-
export type { AdminAnalyticsGetFileArguments } from './admin/analytics';
30-
export type { AdminAppsActivitiesListArguments, AdminAppsApproveArguments, AdminAppsApprovedListArguments, AdminAppsClearResolutionArguments, AdminAppsConfigLookupArguments, AdminAppsConfigSetArguments, AdminAppsRequestsCancelArguments, AdminAppsRequestsListArguments, AdminAppsRestrictArguments, AdminAppsRestrictedListArguments, AdminAppsUninstallArguments } from './admin/apps';
31-
export type { AdminAuthPolicyAssignEntitiesArguments, AdminAuthPolicyGetEntitiesArguments, AdminAuthPolicyRemoveEntitiesArguments } from './admin/auth';
32-
export type { AdminBarriersCreateArguments, AdminBarriersDeleteArguments, AdminBarriersListArguments, AdminBarriersUpdateArguments } from './admin/barriers';
33-
export type { AdminConversationsArchiveArguments, AdminConversationsBulkArchiveArguments, AdminConversationsBulkDeleteArguments, AdminConversationsBulkMoveArguments, AdminConversationsConvertToPrivateArguments, AdminConversationsConvertToPublicArguments, AdminConversationsCreateArguments, AdminConversationsDeleteArguments, AdminConversationsDisconnectSharedArguments, AdminConversationsEKMListOriginalConnectedChannelInfoArguments, AdminConversationsGetConversationPrefsArguments, AdminConversationsGetCustomRetentionArguments, AdminConversationsGetTeamsArguments, AdminConversationsInviteArguments, AdminConversationsLookupArguments, AdminConversationsRemoveCustomRetentionArguments, AdminConversationsRenameArguments, AdminConversationsRestrictAccessAddGroupArguments, AdminConversationsRestrictAccessListGroupsArguments, AdminConversationsRestrictAccessRemoveGroupArguments, AdminConversationsSearchArguments, AdminConversationsSetConversationPrefsArguments, AdminConversationsSetCustomRetentionArguments, AdminConversationsSetTeamsArguments, AdminConversationsUnarchiveArguments } from './admin/conversations';
34-
export type { AdminEmojiAddArguments, AdminEmojiAddAliasArguments, AdminEmojiListArguments, AdminEmojiRemoveArguments, AdminEmojiRenameArguments } from './admin/emoji';
35-
export type { AdminFunctionsListArguments, AdminFunctionsPermissionsLookupArguments, AdminFunctionsPermissionsSetArguments } from './admin/functions';
36-
export type { FunctionsCompleteErrorArguments, FunctionsCompleteSuccessArguments } from './functions';
37-
export type { AdminInviteRequestsApproveArguments, AdminInviteRequestsApprovedListArguments, AdminInviteRequestsDeniedListArguments, AdminInviteRequestsDenyArguments, AdminInviteRequestsListArguments } from './admin/inviteRequests';
38-
export type { AdminRolesAddAssignmentsArguments, AdminRolesListAssignmentsArguments, AdminRolesRemoveAssignmentsArguments } from './admin/roles';
39-
export type { AdminTeamsAdminsListArguments, AdminTeamsCreateArguments, AdminTeamsListArguments, AdminTeamsOwnersListArguments, AdminTeamsSettingsInfoArguments, AdminTeamsSettingsSetDefaultChannelsArguments, AdminTeamsSettingsSetDescriptionArguments, AdminTeamsSettingsSetDiscoverabilityArguments, AdminTeamsSettingsSetIconArguments, AdminTeamsSettingsSetNameArguments } from './admin/teams';
40-
export type { AdminUsergroupsAddChannelsArguments, AdminUsergroupsAddTeamsArguments, AdminUsergroupsListChannelsArguments, AdminUsergroupsRemoveChannelsArguments } from './admin/usergroups';
41-
export type { AdminUsersAssignArguments, AdminUsersInviteArguments, AdminUsersListArguments, AdminUsersRemoveArguments, AdminUsersSessionListArguments, AdminUsersSessionClearSettingsArguments, AdminUsersSessionGetSettingsArguments, AdminUsersSessionInvalidateArguments, AdminUsersSessionResetArguments, AdminUsersSessionResetBulkArguments, AdminUsersSessionSetSettingsArguments, AdminUsersSetAdminArguments, AdminUsersSetExpirationArguments, AdminUsersSetOwnerArguments, AdminUsersSetRegularArguments, AdminUsersUnsupportedVersionsExportArguments } from './admin/users';
42-
export type { AdminWorkflowsCollaboratorsAddArguments, AdminWorkflowsCollaboratorsRemoveArguments, AdminWorkflowsPermissionsLookupArguments, AdminWorkflowsSearchArguments, AdminWorkflowsUnpublishArguments } from './admin/workflows';
1+
export type * from './workflows';
2+
export type * from './views';
3+
export type * from './users';
4+
export type * from './tooling';
5+
export type * from './search';
6+
export type * from './usergroups';
7+
export type * from './team';
8+
export type * from './stars';
9+
export type * from './rtm';
10+
export type * from './reminders';
11+
export type * from './reactions';
12+
export type * from './pins';
13+
export type * from './openid';
14+
export type * from './oauth';
15+
export type * from './migration';
16+
export type * from './files';
17+
export type * from './emoji';
18+
export type * from './dnd';
19+
export type * from './dialog';
20+
export type * from './conversations';
21+
export type * from './chat';
22+
export type * from './canvas';
23+
export type * from './calls';
24+
export type * from './bots';
25+
export type * from './bookmarks';
26+
export type * from './auth';
27+
export type * from './apps';
28+
export type * from './api';
29+
export type * from './admin/analytics';
30+
export type * from './admin/apps';
31+
export type * from './admin/auth';
32+
export type * from './admin/barriers';
33+
export type * from './admin/conversations';
34+
export type * from './admin/emoji';
35+
export type * from './admin/functions';
36+
export type * from './functions';
37+
export type * from './admin/inviteRequests';
38+
export type * from './admin/roles';
39+
export type * from './admin/teams';
40+
export type * from './admin/usergroups';
41+
export type * from './admin/users';
42+
export type * from './admin/workflows';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/* eslint-disable */
2+
/////////////////////////////////////////////////////////////////////////////////////////
3+
// //
4+
// !!! DO NOT EDIT THIS FILE !!! //
5+
// //
6+
// This file is auto-generated by scripts/generate-web-api-types.sh in the repository. //
7+
// Please refer to the script code to learn how to update the source data. //
8+
// //
9+
/////////////////////////////////////////////////////////////////////////////////////////
10+
11+
import { WebAPICallResult } from '../../WebClient';
12+
export type ConversationsExternalInvitePermissionsSetResponse = WebAPICallResult & {
13+
error?: string;
14+
needed?: string;
15+
ok?: boolean;
16+
provided?: string;
17+
};

packages/web-api/src/types/response/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ export { ConversationsCanvasesCreateResponse } from './ConversationsCanvasesCrea
163163
export { ConversationsCloseResponse } from './ConversationsCloseResponse';
164164
export { ConversationsCreateResponse } from './ConversationsCreateResponse';
165165
export { ConversationsDeclineSharedInviteResponse } from './ConversationsDeclineSharedInviteResponse';
166+
export { ConversationsExternalInvitePermissionsSetResponse } from './ConversationsExternalInvitePermissionsSetResponse';
166167
export { ConversationsHistoryResponse } from './ConversationsHistoryResponse';
167168
export { ConversationsInfoResponse } from './ConversationsInfoResponse';
168169
export { ConversationsInviteResponse } from './ConversationsInviteResponse';

packages/web-api/test/types/methods/conversations.test-d.ts

+18
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { expectAssignable, expectError } from 'tsd';
2+
23
import { WebClient } from '../../../src/WebClient';
34

45
const web = new WebClient('TOKEN');
@@ -71,6 +72,23 @@ expectAssignable<Parameters<typeof web.conversations.declineSharedInvite>>([{
7172
invite_id: 'I1234',
7273
}]);
7374

75+
// conversations.externalInvitePermissions.set
76+
// -- sad path
77+
expectError(web.conversations.externalInvitePermissions.set()); // lacking argument
78+
expectError(web.conversations.externalInvitePermissions.set({})); // empty argument
79+
expectError(web.conversations.externalInvitePermissions.set({ action: 'upgrade' })); // missing target_team, channel
80+
expectError(web.conversations.externalInvitePermissions.set({ channel: 'C1234' })); // missing target_team, action
81+
expectError(web.conversations.externalInvitePermissions.set({ target_team: 'T1234' })); // missing channel, action
82+
expectError(web.conversations.externalInvitePermissions.set({ action: 'upgrade', channel: 'C1234' })); // missing target_team
83+
expectError(web.conversations.externalInvitePermissions.set({ channel: 'C1234', target_team: 'T1234' })); // missing action
84+
expectError(web.conversations.externalInvitePermissions.set({ target_team: 'T1234', action: 'downgrade' })); // missing channel
85+
// -- happy path
86+
expectAssignable<Parameters<typeof web.conversations.externalInvitePermissions.set>>([{
87+
channel: 'C1234',
88+
target_team: 'T1234',
89+
action: 'upgrade',
90+
}]);
91+
7492
// conversations.history
7593
// -- sad path
7694
expectError(web.conversations.history()); // lacking argument

0 commit comments

Comments
 (0)