Skip to content

Commit a7c05c7

Browse files
zimegClaude
andcommitted
feat(methods): add blocks.validate method
Add the blocks.validate Web API method to the Slack API client. Callers can validate Block Kit payloads via methods().blocksValidate(req) (and the async equivalent), passing blocks, message, or view as JSON-encoded strings. No scopes are required. Adds the endpoint constant, sync and async interface methods and impls, the request form builder, the request/response model classes (with an errors[] list of code/message/pointer/relatedComponent), the Tier3 rate limit, a local test, and a response sample for type generation. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
1 parent 6d52db3 commit a7c05c7

13 files changed

Lines changed: 184 additions & 1 deletion

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"ok": false,
3+
"error": "",
4+
"response_metadata": {
5+
"messages": [
6+
""
7+
]
8+
},
9+
"needed": "",
10+
"provided": "",
11+
"errors": [
12+
{
13+
"code": "",
14+
"message": "",
15+
"pointer": "",
16+
"related_component": ""
17+
}
18+
],
19+
"warning": ""
20+
}

metadata/web-api/rate_limit_tiers.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
"bookmarks.edit": "Tier2",
125125
"bookmarks.list": "Tier3",
126126
"bookmarks.remove": "Tier2",
127+
"blocks.validate": "Tier3",
127128
"bots.info": "Tier3",
128129
"calls.add": "Tier2",
129130
"calls.end": "Tier2",

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
5555
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
5656
import com.slack.api.methods.request.bookmarks.BookmarksRemoveRequest;
57+
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
5758
import com.slack.api.methods.request.bots.BotsInfoRequest;
5859
import com.slack.api.methods.request.calls.CallsAddRequest;
5960
import com.slack.api.methods.request.calls.CallsEndRequest;
@@ -193,6 +194,7 @@
193194
import com.slack.api.methods.response.bookmarks.BookmarksEditResponse;
194195
import com.slack.api.methods.response.bookmarks.BookmarksListResponse;
195196
import com.slack.api.methods.response.bookmarks.BookmarksRemoveResponse;
197+
import com.slack.api.methods.response.blocks.BlocksValidateResponse;
196198
import com.slack.api.methods.response.bots.BotsInfoResponse;
197199
import com.slack.api.methods.response.calls.CallsAddResponse;
198200
import com.slack.api.methods.response.calls.CallsEndResponse;
@@ -915,6 +917,14 @@ CompletableFuture<AdminConversationsWhitelistListGroupsLinkedToChannelResponse>
915917

916918
CompletableFuture<BookmarksRemoveResponse> bookmarksRemove(RequestConfigurator<BookmarksRemoveRequest.BookmarksRemoveRequestBuilder> req);
917919

920+
// ------------------------------
921+
// blocks
922+
// ------------------------------
923+
924+
CompletableFuture<BlocksValidateResponse> blocksValidate(BlocksValidateRequest req);
925+
926+
CompletableFuture<BlocksValidateResponse> blocksValidate(RequestConfigurator<BlocksValidateRequest.BlocksValidateRequestBuilder> req);
927+
918928
// ------------------------------
919929
// bots
920930
// ------------------------------

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,12 @@ private Methods() {
304304

305305
public static final String AUTH_TEAMS_LIST = "auth.teams.list";
306306

307+
// ------------------------------
308+
// blocks
309+
// ------------------------------
310+
311+
public static final String BLOCKS_VALIDATE = "blocks.validate";
312+
307313
// ------------------------------
308314
// bookmarks
309315
// ------------------------------

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
6161
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
6262
import com.slack.api.methods.request.bookmarks.BookmarksRemoveRequest;
63+
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
6364
import com.slack.api.methods.request.bots.BotsInfoRequest;
6465
import com.slack.api.methods.request.calls.CallsAddRequest;
6566
import com.slack.api.methods.request.calls.CallsEndRequest;
@@ -212,6 +213,7 @@
212213
import com.slack.api.methods.response.bookmarks.BookmarksEditResponse;
213214
import com.slack.api.methods.response.bookmarks.BookmarksListResponse;
214215
import com.slack.api.methods.response.bookmarks.BookmarksRemoveResponse;
216+
import com.slack.api.methods.response.blocks.BlocksValidateResponse;
215217
import com.slack.api.methods.response.bots.BotsInfoResponse;
216218
import com.slack.api.methods.response.calls.CallsAddResponse;
217219
import com.slack.api.methods.response.calls.CallsEndResponse;
@@ -1355,6 +1357,16 @@ AuthTestResponse authTest(RequestConfigurator<AuthTestRequest.AuthTestRequestBui
13551357
AuthTeamsListResponse authTeamsList(RequestConfigurator<AuthTeamsListRequest.AuthTeamsListRequestBuilder> req)
13561358
throws IOException, SlackApiException;
13571359

1360+
// ------------------------------
1361+
// blocks
1362+
// ------------------------------
1363+
1364+
BlocksValidateResponse blocksValidate(BlocksValidateRequest req) throws IOException, SlackApiException;
1365+
1366+
BlocksValidateResponse blocksValidate(
1367+
RequestConfigurator<BlocksValidateRequest.BlocksValidateRequestBuilder> req)
1368+
throws IOException, SlackApiException;
1369+
13581370
// ------------------------------
13591371
// bookmarks
13601372
// ------------------------------

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,8 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier
242242
setRateLimitTier(BOOKMARKS_LIST, Tier3);
243243
setRateLimitTier(BOOKMARKS_REMOVE, Tier2);
244244

245+
setRateLimitTier(BLOCKS_VALIDATE, Tier3);
246+
245247
setRateLimitTier(BOTS_INFO, Tier3);
246248

247249
setRateLimitTier(CALLS_ADD, Tier2);

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
6262
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
6363
import com.slack.api.methods.request.bookmarks.BookmarksRemoveRequest;
64+
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
6465
import com.slack.api.methods.request.bots.BotsInfoRequest;
6566
import com.slack.api.methods.request.calls.CallsAddRequest;
6667
import com.slack.api.methods.request.calls.CallsEndRequest;
@@ -1251,6 +1252,14 @@ public static FormBody.Builder toForm(BookmarksRemoveRequest req) {
12511252
return form;
12521253
}
12531254

1255+
public static FormBody.Builder toForm(BlocksValidateRequest req) {
1256+
FormBody.Builder form = new FormBody.Builder();
1257+
setIfNotNull("blocks", req.getBlocks(), form);
1258+
setIfNotNull("message", req.getMessage(), form);
1259+
setIfNotNull("view", req.getView(), form);
1260+
return form;
1261+
}
1262+
12541263
public static FormBody.Builder toForm(BotsInfoRequest req) {
12551264
FormBody.Builder form = new FormBody.Builder();
12561265
setIfNotNull("bot", req.getBot(), form);

slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
6060
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
6161
import com.slack.api.methods.request.bookmarks.BookmarksRemoveRequest;
62+
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
6263
import com.slack.api.methods.request.bots.BotsInfoRequest;
6364
import com.slack.api.methods.request.calls.CallsAddRequest;
6465
import com.slack.api.methods.request.calls.CallsEndRequest;
@@ -198,6 +199,7 @@
198199
import com.slack.api.methods.response.bookmarks.BookmarksEditResponse;
199200
import com.slack.api.methods.response.bookmarks.BookmarksListResponse;
200201
import com.slack.api.methods.response.bookmarks.BookmarksRemoveResponse;
202+
import com.slack.api.methods.response.blocks.BlocksValidateResponse;
201203
import com.slack.api.methods.response.bots.BotsInfoResponse;
202204
import com.slack.api.methods.response.calls.CallsAddResponse;
203205
import com.slack.api.methods.response.calls.CallsEndResponse;
@@ -1520,6 +1522,16 @@ public CompletableFuture<BookmarksRemoveResponse> bookmarksRemove(RequestConfigu
15201522
return bookmarksRemove(req.configure(BookmarksRemoveRequest.builder()).build());
15211523
}
15221524

1525+
@Override
1526+
public CompletableFuture<BlocksValidateResponse> blocksValidate(BlocksValidateRequest req) {
1527+
return executor.execute(BLOCKS_VALIDATE, toMap(req), () -> methods.blocksValidate(req));
1528+
}
1529+
1530+
@Override
1531+
public CompletableFuture<BlocksValidateResponse> blocksValidate(RequestConfigurator<BlocksValidateRequest.BlocksValidateRequestBuilder> req) {
1532+
return blocksValidate(req.configure(BlocksValidateRequest.builder()).build());
1533+
}
1534+
15231535
@Override
15241536
public CompletableFuture<BotsInfoResponse> botsInfo(BotsInfoRequest req) {
15251537
return executor.execute(BOTS_INFO, toMap(req), () -> methods.botsInfo(req));

slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
6363
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
6464
import com.slack.api.methods.request.bookmarks.BookmarksRemoveRequest;
65+
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
6566
import com.slack.api.methods.request.bots.BotsInfoRequest;
6667
import com.slack.api.methods.request.calls.CallsAddRequest;
6768
import com.slack.api.methods.request.calls.CallsEndRequest;
@@ -214,6 +215,7 @@
214215
import com.slack.api.methods.response.bookmarks.BookmarksEditResponse;
215216
import com.slack.api.methods.response.bookmarks.BookmarksListResponse;
216217
import com.slack.api.methods.response.bookmarks.BookmarksRemoveResponse;
218+
import com.slack.api.methods.response.blocks.BlocksValidateResponse;
217219
import com.slack.api.methods.response.bots.BotsInfoResponse;
218220
import com.slack.api.methods.response.calls.CallsAddResponse;
219221
import com.slack.api.methods.response.calls.CallsEndResponse;
@@ -1598,6 +1600,16 @@ public BookmarksRemoveResponse bookmarksRemove(RequestConfigurator<BookmarksRemo
15981600
return bookmarksRemove(req.configure(BookmarksRemoveRequest.builder()).build());
15991601
}
16001602

1603+
@Override
1604+
public BlocksValidateResponse blocksValidate(BlocksValidateRequest req) throws IOException, SlackApiException {
1605+
return postFormWithTokenAndParseResponse(toForm(req), Methods.BLOCKS_VALIDATE, getToken(req), BlocksValidateResponse.class);
1606+
}
1607+
1608+
@Override
1609+
public BlocksValidateResponse blocksValidate(RequestConfigurator<BlocksValidateRequest.BlocksValidateRequestBuilder> req) throws IOException, SlackApiException {
1610+
return blocksValidate(req.configure(BlocksValidateRequest.builder()).build());
1611+
}
1612+
16011613
@Override
16021614
public BotsInfoResponse botsInfo(BotsInfoRequest req) throws IOException, SlackApiException {
16031615
this.teamId.ifPresent(currentTeamId -> {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.slack.api.methods.request.blocks;
2+
3+
import com.slack.api.methods.SlackApiRequest;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
7+
@Data
8+
@Builder
9+
public class BlocksValidateRequest implements SlackApiRequest {
10+
11+
private String token;
12+
13+
/**
14+
* A JSON-encoded string of an array of blocks to validate.
15+
*/
16+
private String blocks;
17+
18+
/**
19+
* A JSON-encoded string of a message payload to validate.
20+
*/
21+
private String message;
22+
23+
/**
24+
* A JSON-encoded string of a view payload to validate.
25+
*/
26+
private String view;
27+
}

0 commit comments

Comments
 (0)