Skip to content

Commit a3a06ec

Browse files
author
Fil Maj
authored
web-api(feat): add support for conversations.requestShared approve , deny and list APIs (#1843)
1 parent e930db3 commit a3a06ec

File tree

15 files changed

+136
-38
lines changed

15 files changed

+136
-38
lines changed

packages/web-api/src/methods.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ import type {
160160
ConversationsOpenArguments,
161161
ConversationsRenameArguments,
162162
ConversationsRepliesArguments,
163+
ConversationsRequestSharedInviteApproveArguments,
164+
ConversationsRequestSharedInviteDenyArguments,
163165
ConversationsSetPurposeArguments,
164166
ConversationsSetTopicArguments,
165167
ConversationsUnarchiveArguments,
@@ -407,6 +409,8 @@ import type {
407409
ConversationsOpenResponse,
408410
ConversationsRenameResponse,
409411
ConversationsRepliesResponse,
412+
ConversationsRequestSharedInviteApproveResponse,
413+
ConversationsRequestSharedInviteDenyResponse,
410414
ConversationsSetPurposeResponse,
411415
ConversationsSetTopicResponse,
412416
ConversationsUnarchiveResponse,
@@ -1716,6 +1720,24 @@ export abstract class Methods extends EventEmitter<WebClientEvent> {
17161720
* @see {@link https://api.slack.com/methods/conversations.replies `conversations.replies` API reference}.
17171721
*/
17181722
replies: bindApiCall<ConversationsRepliesArguments, ConversationsRepliesResponse>(this, 'conversations.replies'),
1723+
requestSharedInvite: {
1724+
/**
1725+
* @description Approves a request to add an external user to a channel and sends them a Slack Connect invite.
1726+
* @see {@link https://api.slack.com/methods/conversations.requestSharedInvite.approve `conversations.requestSharedInvite.approve` API reference}.
1727+
*/
1728+
approve: bindApiCall<
1729+
ConversationsRequestSharedInviteApproveArguments,
1730+
ConversationsRequestSharedInviteApproveResponse
1731+
>(this, 'conversations.requestSharedInvite.approve'),
1732+
/**
1733+
* @description Denies a request to invite an external user to a channel.
1734+
* @see {@link https://api.slack.com/methods/conversations.requestSharedInvite.deny `conversations.requestSharedInvite.deny` API reference}.
1735+
*/
1736+
deny: bindApiCall<ConversationsRequestSharedInviteDenyArguments, ConversationsRequestSharedInviteDenyResponse>(
1737+
this,
1738+
'conversations.requestSharedInvite.deny',
1739+
),
1740+
},
17191741
/**
17201742
* @description Sets the purpose for a conversation.
17211743
* @see {@link https://api.slack.com/methods/conversations.setPurpose `conversations.setPurpose` API reference}.

packages/web-api/src/retry-policies.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { OperationOptions } from 'retry';
33
/**
44
* Options to create retry policies. Extends from https://github.com/tim-kos/node-retry.
55
*/
6-
export interface RetryOptions extends OperationOptions { }
6+
export interface RetryOptions extends OperationOptions {}
77

88
/**
99
* The default retry policy. Retry up to 10 times, over the span of about 30 minutes. It's not exact because

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,7 @@ export interface AdminConversationsDisconnectSharedArguments extends ChannelID,
103103

104104
// https://api.slack.com/methods/admin.conversations.ekm.listOriginalConnectedChannelInfo
105105
export type AdminConversationsEKMListOriginalConnectedChannelInfoArguments = OptionalArgument<
106-
Partial<TeamIDs> &
107-
TokenOverridable &
108-
CursorPaginationEnabled & {
109-
/** @description A comma-separated list of channels to filter to. */
110-
channel_ids?: string[];
111-
}
106+
Partial<TeamIDs> & TokenOverridable & CursorPaginationEnabled & Partial<ChannelIDs>
112107
>;
113108

114109
// https://api.slack.com/methods/admin.conversations.getConversationPrefs

packages/web-api/src/types/request/admin/functions.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { CursorPaginationEnabled, TokenOverridable } from '../common';
1+
import type { CursorPaginationEnabled, TokenOverridable, UserIDs } from '../common';
22

33
// https://api.slack.com/methods/admin.functions.list
44
export interface AdminFunctionsListArguments extends TokenOverridable, CursorPaginationEnabled {
@@ -15,11 +15,9 @@ export interface AdminFunctionsPermissionsLookupArguments extends TokenOverridab
1515
}
1616

1717
// https://api.slack.com/methods/admin.functions.permissions.set
18-
export interface AdminFunctionsPermissionsSetArguments extends TokenOverridable {
18+
export interface AdminFunctionsPermissionsSetArguments extends TokenOverridable, Partial<UserIDs> {
1919
/** @description The function ID to set permissions for. */
2020
function_id: string;
2121
/** @description The function visibility. */
2222
visibility: 'everyone' | 'app_collaborators' | 'named_entities' | 'no_one';
23-
/** @description List of user IDs to allow for `named_entities` visibility. */
24-
user_ids?: string[];
2523
}

packages/web-api/src/types/request/admin/users.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,10 @@ import type {
66
OptionalTeamAssignable,
77
TeamID,
88
TokenOverridable,
9+
UserID,
910
UserIDs,
1011
} from '../common';
1112

12-
interface UserID {
13-
/** @description The ID of the user. */
14-
user_id: string;
15-
}
16-
1713
interface IsRestricted {
1814
/** @description Set to `true` if user should be added to the workspace as a guest. */
1915
is_restricted?: boolean;
Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
import type { TokenOverridable } from './common';
1+
import type { ChannelID, TokenOverridable } from './common';
22

3-
interface Channel {
4-
/** @description Channel containing bookmark. */
5-
channel_id: string;
6-
}
73
interface ID {
84
bookmark_id: string;
95
}
@@ -17,7 +13,7 @@ interface BookmarkFields {
1713
}
1814

1915
// https://api.slack.com/methods/bookmarks.add
20-
export interface BookmarksAddArguments extends Channel, BookmarkFields, TokenOverridable {
16+
export interface BookmarksAddArguments extends ChannelID, BookmarkFields, TokenOverridable {
2117
/** @description Type of the bookmark. Only `link` is supported at the moment. */
2218
type: 'link';
2319
/** @description ID of the entity being bookmarked. Only applies to message and file types. */
@@ -26,10 +22,10 @@ export interface BookmarksAddArguments extends Channel, BookmarkFields, TokenOve
2622
parent_id?: string;
2723
}
2824
// https://api.slack.com/methods/bookmarks.edit
29-
export interface BookmarksEditArguments extends Channel, ID, Partial<BookmarkFields>, TokenOverridable {}
25+
export interface BookmarksEditArguments extends ChannelID, ID, Partial<BookmarkFields>, TokenOverridable {}
3026

3127
// https://api.slack.com/methods/bookmarks.list
32-
export interface BookmarksListArguments extends Channel, TokenOverridable {}
28+
export interface BookmarksListArguments extends ChannelID, TokenOverridable {}
3329

3430
// https://api.slack.com/methods/bookmarks.remove
35-
export interface BookmarksRemoveArguments extends Channel, ID, TokenOverridable {}
31+
export interface BookmarksRemoveArguments extends ChannelID, ID, TokenOverridable {}

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { OptionalArgument } from '../helpers';
2-
import type { ChannelIDs, TokenOverridable, UserIDs } from './common';
2+
import type { ChannelID, ChannelIDs, TokenOverridable, UserIDs } from './common';
33

44
interface CanvasID {
55
/** @description Encoded ID of the canvas. */
@@ -89,9 +89,7 @@ export interface CanvasesEditArguments extends CanvasID, TokenOverridable {
8989
}
9090

9191
// https://api.slack.com/methods/conversations.canvases.create
92-
export interface ConversationsCanvasesCreateArguments extends TokenOverridable {
93-
/** @description Channel ID of the channel to create a canvas in. */
94-
channel_id: string;
92+
export interface ConversationsCanvasesCreateArguments extends ChannelID, TokenOverridable {
9593
/** @description Structure describing the type and contents of the Canvas being created. */
9694
document_content?: DocumentContent;
9795
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ export interface UserIDs {
9191
/** @description List of encoded user IDs. */
9292
user_ids: [string, ...string[]];
9393
}
94+
export interface UserID {
95+
/** @description Encoded user ID. */
96+
user_id: string;
97+
}
9498

9599
export interface AppID {
96100
/** @description The ID of the app. */

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

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,14 @@ export interface IsPrivate {
3131
/** @description Whether the channel should be private. */
3232
is_private?: boolean;
3333
}
34-
interface Message extends Channel {
34+
interface MessageSpecifier extends Channel {
3535
/** @description Unique identifier of message. */
3636
ts: string;
3737
}
38+
interface Message {
39+
/** @description A message to send to the user who requested the invite. */
40+
message?: string;
41+
}
3842
export interface UserIDs {
3943
/** List of user IDs to receive this invite. Either `emails` or `user_ids` must be provided. */
4044
user_ids: string[];
@@ -156,7 +160,7 @@ export type ConversationsListConnectInvitesArguments = OptionalArgument<
156160
>;
157161

158162
// https://api.slack.com/methods/conversations.mark
159-
export interface ConversationsMarkArguments extends Message, TokenOverridable {}
163+
export interface ConversationsMarkArguments extends MessageSpecifier, TokenOverridable {}
160164

161165
// https://api.slack.com/methods/conversations.members
162166
export interface ConversationsMembersArguments extends Channel, TokenOverridable, CursorPaginationEnabled {}
@@ -181,12 +185,34 @@ export interface ConversationsRenameArguments extends Channel, TokenOverridable
181185

182186
// https://api.slack.com/methods/conversations.replies
183187
export interface ConversationsRepliesArguments
184-
extends Message,
188+
extends MessageSpecifier,
185189
IncludeAllMetadata,
186190
TokenOverridable,
187191
CursorPaginationEnabled,
188192
TimelinePaginationEnabled {}
189193

194+
// https://api.slack.com/methods/conversations.requestSharedInvite.approve
195+
export interface ConversationsRequestSharedInviteApproveArguments extends InviteID, Partial<ChannelID> {
196+
/**
197+
* @description Whether the invited team will have post-only permissions in the channel.
198+
* Will override the value on the requested invite.
199+
*/
200+
is_external_limited?: boolean;
201+
/** @description Optional additional messaging to attach to the invite approval message. */
202+
message?: {
203+
/**
204+
* @description When `true`, will override the user specified message. Otherwise, `text` will be appended to the
205+
* user specified message on the invite request.
206+
*/
207+
is_override: boolean;
208+
/** @description Text to include along with the email invite. */
209+
text: string;
210+
};
211+
}
212+
213+
// https://api.slack.com/methods/conversations.requestSharedInvite.deny
214+
export interface ConversationsRequestSharedInviteDenyArguments extends InviteID, Message {}
215+
190216
// https://api.slack.com/methods/conversations.setPurpose
191217
export interface ConversationsSetPurposeArguments extends Channel, TokenOverridable {
192218
/** @description A new, specialer purpose. */

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ export type {
108108
ConversationsOpenArguments,
109109
ConversationsRenameArguments,
110110
ConversationsRepliesArguments,
111+
ConversationsRequestSharedInviteApproveArguments,
112+
ConversationsRequestSharedInviteDenyArguments,
111113
ConversationsSetPurposeArguments,
112114
ConversationsSetTopicArguments,
113115
ConversationsUnarchiveArguments,

0 commit comments

Comments
 (0)