Skip to content

Commit 2cbd9a3

Browse files
authored
Fix #773 Add Slack Connect API/Event supports (#813)
* Fix #773 Add Slack Connect API/Event supports * Remove irrelevant changes * Fix the rate limit for conversations.inviteShared, update tests
1 parent fbed1a4 commit 2cbd9a3

File tree

52 files changed

+1630
-9
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1630
-9
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package samples;
2+
3+
import com.slack.api.bolt.App;
4+
import com.slack.api.bolt.AppConfig;
5+
import com.slack.api.model.event.SharedChannelInviteAcceptedEvent;
6+
import com.slack.api.model.event.SharedChannelInviteApprovedEvent;
7+
import com.slack.api.model.event.SharedChannelInviteDeclinedEvent;
8+
import com.slack.api.model.event.SharedChannelInviteReceivedEvent;
9+
import lombok.extern.slf4j.Slf4j;
10+
import util.ResourceLoader;
11+
import util.TestSlackAppServer;
12+
13+
@Slf4j
14+
public class EventsSample_SlackConnectInvites {
15+
16+
public static void main(String[] args) throws Exception {
17+
AppConfig config = ResourceLoader.loadAppConfig("appConfig_SlackConnectReceiver.json");
18+
App app = new App(config);
19+
20+
app.event(SharedChannelInviteReceivedEvent.class, (event, ctx) -> {
21+
ctx.logger.info("received - {}", event);
22+
return ctx.ack();
23+
});
24+
app.event(SharedChannelInviteAcceptedEvent.class, (event, ctx) -> {
25+
ctx.logger.info("accepted - {}", event);
26+
return ctx.ack();
27+
});
28+
app.event(SharedChannelInviteApprovedEvent.class, (event, ctx) -> {
29+
ctx.logger.info("approved - {}", event);
30+
return ctx.ack();
31+
});
32+
app.event(SharedChannelInviteDeclinedEvent.class, (event, ctx) -> {
33+
ctx.logger.info("declined - {}", event);
34+
return ctx.ack();
35+
});
36+
37+
TestSlackAppServer server = new TestSlackAppServer(app);
38+
server.start();
39+
}
40+
41+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"ok": false,
3+
"error": "",
4+
"implicit_approval": false,
5+
"channel_id": "C00000000",
6+
"invite_id": "I00000000",
7+
"needed": "",
8+
"provided": ""
9+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"ok": false,
3+
"error": "",
4+
"needed": "",
5+
"provided": ""
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"ok": false,
3+
"error": "",
4+
"needed": "",
5+
"provided": ""
6+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"ok": false,
3+
"error": "",
4+
"url": "https://www.example.com/",
5+
"invite_id": "I00000000",
6+
"conf_code": "",
7+
"is_legacy_shared_channel": false,
8+
"needed": "",
9+
"provided": ""
10+
}
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
{
2+
"ok": false,
3+
"error": "",
4+
"arg": "",
5+
"invites": [
6+
{
7+
"direction": "",
8+
"status": "",
9+
"date_last_updated": 12345,
10+
"invite_type": "",
11+
"invite": {
12+
"id": "I00000000",
13+
"date_created": 12345,
14+
"date_invalid": 12345,
15+
"inviting_team": {
16+
"id": "E00000000",
17+
"name": "",
18+
"icon": {
19+
"image_102": "https://www.example.com/",
20+
"image_132": "https://www.example.com/",
21+
"image_230": "https://www.example.com/",
22+
"image_34": "https://www.example.com/",
23+
"image_44": "https://www.example.com/",
24+
"image_68": "https://www.example.com/",
25+
"image_88": "https://www.example.com/",
26+
"image_default": false,
27+
"image_original": "https://www.example.com/"
28+
},
29+
"is_verified": false,
30+
"domain": "",
31+
"date_created": 12345
32+
},
33+
"inviting_user": {
34+
"id": "U00000000",
35+
"team_id": "E00000000",
36+
"name": "",
37+
"updated": 12345,
38+
"profile": {
39+
"real_name": "",
40+
"display_name": "",
41+
"real_name_normalized": "",
42+
"display_name_normalized": "",
43+
"team": "E00000000",
44+
"avatar_hash": "",
45+
"email": "",
46+
"image_24": "https://www.example.com/",
47+
"image_32": "https://www.example.com/",
48+
"image_48": "https://www.example.com/",
49+
"image_72": "https://www.example.com/",
50+
"image_192": "https://www.example.com/",
51+
"image_512": "https://www.example.com/",
52+
"image_1024": "https://www.example.com/",
53+
"image_original": "https://www.example.com/",
54+
"is_custom_image": false
55+
}
56+
},
57+
"link": "https://www.example.com/",
58+
"recipient_user_id": "U00000000",
59+
"recipient_email": ""
60+
},
61+
"channel": {
62+
"id": "C00000000",
63+
"is_im": false,
64+
"is_private": false,
65+
"name": ""
66+
},
67+
"acceptances": [
68+
{
69+
"approval_status": "",
70+
"date_accepted": 12345,
71+
"date_invalid": 12345,
72+
"date_last_updated": 12345,
73+
"accepting_team": {
74+
"id": "T00000000",
75+
"name": "",
76+
"icon": {
77+
"image_102": "https://www.example.com/",
78+
"image_132": "https://www.example.com/",
79+
"image_230": "https://www.example.com/",
80+
"image_34": "https://www.example.com/",
81+
"image_44": "https://www.example.com/",
82+
"image_68": "https://www.example.com/",
83+
"image_88": "https://www.example.com/",
84+
"image_original": "https://www.example.com/"
85+
},
86+
"is_verified": false,
87+
"domain": "",
88+
"date_created": 12345
89+
},
90+
"accepting_user": {
91+
"id": "U00000000",
92+
"team_id": "T00000000",
93+
"name": "",
94+
"updated": 12345,
95+
"profile": {
96+
"real_name": "",
97+
"display_name": "",
98+
"real_name_normalized": "",
99+
"display_name_normalized": "",
100+
"team": "T00000000",
101+
"avatar_hash": "",
102+
"email": "",
103+
"image_24": "https://www.example.com/",
104+
"image_32": "https://www.example.com/",
105+
"image_48": "https://www.example.com/",
106+
"image_72": "https://www.example.com/",
107+
"image_192": "https://www.example.com/",
108+
"image_512": "https://www.example.com/"
109+
}
110+
},
111+
"reviews": [
112+
{
113+
"type": "",
114+
"date_review": 12345,
115+
"reviewing_team": {
116+
"id": "T00000000",
117+
"name": "",
118+
"icon": {
119+
"image_102": "https://www.example.com/",
120+
"image_132": "https://www.example.com/",
121+
"image_230": "https://www.example.com/",
122+
"image_34": "https://www.example.com/",
123+
"image_44": "https://www.example.com/",
124+
"image_68": "https://www.example.com/",
125+
"image_88": "https://www.example.com/",
126+
"image_original": "https://www.example.com/"
127+
},
128+
"is_verified": false,
129+
"domain": "",
130+
"date_created": 12345
131+
}
132+
}
133+
]
134+
}
135+
]
136+
}
137+
],
138+
"response_metadata": {
139+
"next_cursor": "",
140+
"messages": [
141+
""
142+
]
143+
},
144+
"needed": "",
145+
"provided": ""
146+
}

slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,29 @@ CompletableFuture<AdminConversationsWhitelistListGroupsLinkedToChannelResponse>
795795

796796
CompletableFuture<ConversationsUnarchiveResponse> conversationsUnarchive(RequestConfigurator<ConversationsUnarchiveRequest.ConversationsUnarchiveRequestBuilder> req);
797797

798+
// -------------
799+
// Slack Connect
800+
801+
CompletableFuture<ConversationsInviteSharedResponse> conversationsInviteShared(ConversationsInviteSharedRequest req);
802+
803+
CompletableFuture<ConversationsInviteSharedResponse> conversationsInviteShared(RequestConfigurator<ConversationsInviteSharedRequest.ConversationsInviteSharedRequestBuilder> req);
804+
805+
CompletableFuture<ConversationsAcceptSharedInviteResponse> conversationsAcceptSharedInvite(ConversationsAcceptSharedInviteRequest req);
806+
807+
CompletableFuture<ConversationsAcceptSharedInviteResponse> conversationsAcceptSharedInvite(RequestConfigurator<ConversationsAcceptSharedInviteRequest.ConversationsAcceptSharedInviteRequestBuilder> req);
808+
809+
CompletableFuture<ConversationsApproveSharedInviteResponse> conversationsApproveSharedInvite(ConversationsApproveSharedInviteRequest req);
810+
811+
CompletableFuture<ConversationsApproveSharedInviteResponse> conversationsApproveSharedInvite(RequestConfigurator<ConversationsApproveSharedInviteRequest.ConversationsApproveSharedInviteRequestBuilder> req);
812+
813+
CompletableFuture<ConversationsDeclineSharedInviteResponse> conversationsDeclineSharedInvite(ConversationsDeclineSharedInviteRequest req);
814+
815+
CompletableFuture<ConversationsDeclineSharedInviteResponse> conversationsDeclineSharedInvite(RequestConfigurator<ConversationsDeclineSharedInviteRequest.ConversationsDeclineSharedInviteRequestBuilder> req);
816+
817+
CompletableFuture<ConversationsListConnectInvitesResponse> conversationsListConnectInvites(ConversationsListConnectInvitesRequest req);
818+
819+
CompletableFuture<ConversationsListConnectInvitesResponse> conversationsListConnectInvites(RequestConfigurator<ConversationsListConnectInvitesRequest.ConversationsListConnectInvitesRequestBuilder> req);
820+
798821
// ------------------------------
799822
// dialog
800823
// ------------------------------

slack-api-client/src/main/java/com/slack/api/methods/Methods.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,13 @@ private Methods() {
326326
public static final String CONVERSATIONS_SET_TOPIC = "conversations.setTopic";
327327
public static final String CONVERSATIONS_UNARCHIVE = "conversations.unarchive";
328328

329+
// Slack Connect APIs
330+
public static final String CONVERSATIONS_INVITE_SHARED = "conversations.inviteShared";
331+
public static final String CONVERSATIONS_ACCEPT_SHARED_INVITE = "conversations.acceptSharedInvite";
332+
public static final String CONVERSATIONS_APPROVE_SHARED_INVITE = "conversations.approveSharedInvite";
333+
public static final String CONVERSATIONS_DECLINE_SHARED_INVITE = "conversations.declineSharedInvite";
334+
public static final String CONVERSATIONS_LIST_CONNECT_INVITES = "conversations.listConnectInvites";
335+
329336
// ------------------------------
330337
// dialog
331338
// ------------------------------

slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,29 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels(
10781078

10791079
ConversationsUnarchiveResponse conversationsUnarchive(RequestConfigurator<ConversationsUnarchiveRequest.ConversationsUnarchiveRequestBuilder> req) throws IOException, SlackApiException;
10801080

1081+
// -------------
1082+
// Slack Connect
1083+
1084+
ConversationsInviteSharedResponse conversationsInviteShared(ConversationsInviteSharedRequest req) throws IOException, SlackApiException;
1085+
1086+
ConversationsInviteSharedResponse conversationsInviteShared(RequestConfigurator<ConversationsInviteSharedRequest.ConversationsInviteSharedRequestBuilder> req) throws IOException, SlackApiException;
1087+
1088+
ConversationsAcceptSharedInviteResponse conversationsAcceptSharedInvite(ConversationsAcceptSharedInviteRequest req) throws IOException, SlackApiException;
1089+
1090+
ConversationsAcceptSharedInviteResponse conversationsAcceptSharedInvite(RequestConfigurator<ConversationsAcceptSharedInviteRequest.ConversationsAcceptSharedInviteRequestBuilder> req) throws IOException, SlackApiException;
1091+
1092+
ConversationsApproveSharedInviteResponse conversationsApproveSharedInvite(ConversationsApproveSharedInviteRequest req) throws IOException, SlackApiException;
1093+
1094+
ConversationsApproveSharedInviteResponse conversationsApproveSharedInvite(RequestConfigurator<ConversationsApproveSharedInviteRequest.ConversationsApproveSharedInviteRequestBuilder> req) throws IOException, SlackApiException;
1095+
1096+
ConversationsDeclineSharedInviteResponse conversationsDeclineSharedInvite(ConversationsDeclineSharedInviteRequest req) throws IOException, SlackApiException;
1097+
1098+
ConversationsDeclineSharedInviteResponse conversationsDeclineSharedInvite(RequestConfigurator<ConversationsDeclineSharedInviteRequest.ConversationsDeclineSharedInviteRequestBuilder> req) throws IOException, SlackApiException;
1099+
1100+
ConversationsListConnectInvitesResponse conversationsListConnectInvites(ConversationsListConnectInvitesRequest req) throws IOException, SlackApiException;
1101+
1102+
ConversationsListConnectInvitesResponse conversationsListConnectInvites(RequestConfigurator<ConversationsListConnectInvitesRequest.ConversationsListConnectInvitesRequestBuilder> req) throws IOException, SlackApiException;
1103+
10811104
// ------------------------------
10821105
// dialog
10831106
// ------------------------------

slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,12 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier
276276
setRateLimitTier(MPIM_MARK, Tier3);
277277
setRateLimitTier(GROUPS_CREATE_CHILD, Tier2);
278278

279+
setRateLimitTier(CONVERSATIONS_INVITE_SHARED, Tier2);
280+
setRateLimitTier(CONVERSATIONS_ACCEPT_SHARED_INVITE, Tier1);
281+
setRateLimitTier(CONVERSATIONS_APPROVE_SHARED_INVITE, Tier1);
282+
setRateLimitTier(CONVERSATIONS_DECLINE_SHARED_INVITE, Tier1);
283+
setRateLimitTier(CONVERSATIONS_LIST_CONNECT_INVITES, Tier1);
284+
279285
setRateLimitTier(DIALOG_OPEN, Tier4);
280286

281287
setRateLimitTier(DND_END_DND, Tier2);

0 commit comments

Comments
 (0)