Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions json-logs/samples/api/blocks.validate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"ok": false,
"error": "",
"response_metadata": {
"messages": [
""
]
},
"needed": "",
"provided": "",
"errors": [
{
"code": "",
"message": "",
"pointer": "",
"related_component": ""
}
],
"warning": ""
}
1 change: 1 addition & 0 deletions metadata/web-api/rate_limit_tiers.json
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@
"auth.revoke": "Tier3",
"auth.teams.list": "Tier2",
"auth.test": "SpecialTier_auth_test",
"blocks.validate": "SpecialTier_blocks_validate",
"bookmarks.add": "Tier2",
"bookmarks.edit": "Tier2",
"bookmarks.list": "Tier3",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
import com.slack.api.methods.request.auth.AuthRevokeRequest;
import com.slack.api.methods.request.auth.AuthTestRequest;
import com.slack.api.methods.request.auth.teams.AuthTeamsListRequest;
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
import com.slack.api.methods.request.bookmarks.BookmarksAddRequest;
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
Expand Down Expand Up @@ -189,6 +190,7 @@
import com.slack.api.methods.response.auth.AuthRevokeResponse;
import com.slack.api.methods.response.auth.AuthTestResponse;
import com.slack.api.methods.response.auth.teams.AuthTeamsListResponse;
import com.slack.api.methods.response.blocks.BlocksValidateResponse;
import com.slack.api.methods.response.bookmarks.BookmarksAddResponse;
import com.slack.api.methods.response.bookmarks.BookmarksEditResponse;
import com.slack.api.methods.response.bookmarks.BookmarksListResponse;
Expand Down Expand Up @@ -895,6 +897,14 @@ CompletableFuture<AdminConversationsWhitelistListGroupsLinkedToChannelResponse>

CompletableFuture<AuthTeamsListResponse> authTeamsList(RequestConfigurator<AuthTeamsListRequest.AuthTeamsListRequestBuilder> req);

// ------------------------------
// blocks
// ------------------------------

CompletableFuture<BlocksValidateResponse> blocksValidate(BlocksValidateRequest req);

CompletableFuture<BlocksValidateResponse> blocksValidate(RequestConfigurator<BlocksValidateRequest.BlocksValidateRequestBuilder> req);

// ------------------------------
// bookmarks
// ------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,12 @@ private Methods() {

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

// ------------------------------
// blocks
// ------------------------------

public static final String BLOCKS_VALIDATE = "blocks.validate";

// ------------------------------
// bookmarks
// ------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import com.slack.api.methods.request.auth.AuthRevokeRequest;
import com.slack.api.methods.request.auth.AuthTestRequest;
import com.slack.api.methods.request.auth.teams.AuthTeamsListRequest;
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
import com.slack.api.methods.request.bookmarks.BookmarksAddRequest;
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
Expand Down Expand Up @@ -208,6 +209,7 @@
import com.slack.api.methods.response.auth.AuthRevokeResponse;
import com.slack.api.methods.response.auth.AuthTestResponse;
import com.slack.api.methods.response.auth.teams.AuthTeamsListResponse;
import com.slack.api.methods.response.blocks.BlocksValidateResponse;
import com.slack.api.methods.response.bookmarks.BookmarksAddResponse;
import com.slack.api.methods.response.bookmarks.BookmarksEditResponse;
import com.slack.api.methods.response.bookmarks.BookmarksListResponse;
Expand Down Expand Up @@ -1355,6 +1357,16 @@ AuthTestResponse authTest(RequestConfigurator<AuthTestRequest.AuthTestRequestBui
AuthTeamsListResponse authTeamsList(RequestConfigurator<AuthTeamsListRequest.AuthTeamsListRequestBuilder> req)
throws IOException, SlackApiException;

// ------------------------------
// blocks
// ------------------------------

BlocksValidateResponse blocksValidate(BlocksValidateRequest req) throws IOException, SlackApiException;

BlocksValidateResponse blocksValidate(
RequestConfigurator<BlocksValidateRequest.BlocksValidateRequestBuilder> req)
throws IOException, SlackApiException;

// ------------------------------
// bookmarks
// ------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,14 @@ public enum MethodsRateLimitTier {
/**
* This method allows hundreds of requests per minute. Use it as often as is reasonably required.
*/
SpecialTier_chat_getPermalink;
SpecialTier_chat_getPermalink,

/**
* blocks.validate has special rate limiting conditions rather than a standard tier.
* It requires no scopes and is a lightweight validation call, so it allows hundreds of
* requests per minute. See https://docs.slack.dev/reference/methods/blocks.validate.
*/
SpecialTier_blocks_validate;

// --------------------------------------------------------------------------------------------

Expand All @@ -72,6 +79,7 @@ public enum MethodsRateLimitTier {
allowedRequestsPerMinute.put(MethodsRateLimitTier.SpecialTier_chat_getPermalink, 600);
allowedRequestsPerMinute.put(MethodsRateLimitTier.SpecialTier_chat_postMessage, 60); // per channel
allowedRequestsPerMinute.put(MethodsRateLimitTier.SpecialTier_assistant_threads_setStatus, 60); // per DM
allowedRequestsPerMinute.put(MethodsRateLimitTier.SpecialTier_blocks_validate, 600);
}

public static Integer getAllowedRequestsPerMinute(MethodsRateLimitTier tier) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,8 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier
setRateLimitTier(AUTH_TEST, SpecialTier_auth_test);
setRateLimitTier(AUTH_TEAMS_LIST, Tier2);

setRateLimitTier(BLOCKS_VALIDATE, SpecialTier_blocks_validate);

setRateLimitTier(BOOKMARKS_ADD, Tier2);
setRateLimitTier(BOOKMARKS_EDIT, Tier2);
setRateLimitTier(BOOKMARKS_LIST, Tier3);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
import com.slack.api.methods.request.auth.AuthRevokeRequest;
import com.slack.api.methods.request.auth.AuthTestRequest;
import com.slack.api.methods.request.auth.teams.AuthTeamsListRequest;
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
import com.slack.api.methods.request.bookmarks.BookmarksAddRequest;
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
Expand Down Expand Up @@ -1216,6 +1217,14 @@ public static FormBody.Builder toForm(AuthTeamsListRequest req) {
return form;
}

public static FormBody.Builder toForm(BlocksValidateRequest req) {
FormBody.Builder form = new FormBody.Builder();
setIfNotNull("blocks", req.getBlocks(), form);
setIfNotNull("message", req.getMessage(), form);
setIfNotNull("view", req.getView(), form);
return form;
}

public static FormBody.Builder toForm(BookmarksAddRequest req) {
FormBody.Builder form = new FormBody.Builder();
setIfNotNull("channel_id", req.getChannelId(), form);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
import com.slack.api.methods.request.auth.AuthRevokeRequest;
import com.slack.api.methods.request.auth.AuthTestRequest;
import com.slack.api.methods.request.auth.teams.AuthTeamsListRequest;
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
import com.slack.api.methods.request.bookmarks.BookmarksAddRequest;
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
Expand Down Expand Up @@ -194,6 +195,7 @@
import com.slack.api.methods.response.auth.AuthRevokeResponse;
import com.slack.api.methods.response.auth.AuthTestResponse;
import com.slack.api.methods.response.auth.teams.AuthTeamsListResponse;
import com.slack.api.methods.response.blocks.BlocksValidateResponse;
import com.slack.api.methods.response.bookmarks.BookmarksAddResponse;
import com.slack.api.methods.response.bookmarks.BookmarksEditResponse;
import com.slack.api.methods.response.bookmarks.BookmarksListResponse;
Expand Down Expand Up @@ -1480,6 +1482,16 @@ public CompletableFuture<AuthTeamsListResponse> authTeamsList(RequestConfigurato
return authTeamsList(req.configure(AuthTeamsListRequest.builder()).build());
}

@Override
public CompletableFuture<BlocksValidateResponse> blocksValidate(BlocksValidateRequest req) {
return executor.execute(BLOCKS_VALIDATE, toMap(req), () -> methods.blocksValidate(req));
}

@Override
public CompletableFuture<BlocksValidateResponse> blocksValidate(RequestConfigurator<BlocksValidateRequest.BlocksValidateRequestBuilder> req) {
return blocksValidate(req.configure(BlocksValidateRequest.builder()).build());
}

@Override
public CompletableFuture<BookmarksAddResponse> bookmarksAdd(BookmarksAddRequest req) {
return executor.execute(BOOKMARKS_ADD, toMap(req), () -> methods.bookmarksAdd(req));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
import com.slack.api.methods.request.auth.AuthRevokeRequest;
import com.slack.api.methods.request.auth.AuthTestRequest;
import com.slack.api.methods.request.auth.teams.AuthTeamsListRequest;
import com.slack.api.methods.request.blocks.BlocksValidateRequest;
import com.slack.api.methods.request.bookmarks.BookmarksAddRequest;
import com.slack.api.methods.request.bookmarks.BookmarksEditRequest;
import com.slack.api.methods.request.bookmarks.BookmarksListRequest;
Expand Down Expand Up @@ -210,6 +211,7 @@
import com.slack.api.methods.response.auth.AuthRevokeResponse;
import com.slack.api.methods.response.auth.AuthTestResponse;
import com.slack.api.methods.response.auth.teams.AuthTeamsListResponse;
import com.slack.api.methods.response.blocks.BlocksValidateResponse;
import com.slack.api.methods.response.bookmarks.BookmarksAddResponse;
import com.slack.api.methods.response.bookmarks.BookmarksEditResponse;
import com.slack.api.methods.response.bookmarks.BookmarksListResponse;
Expand Down Expand Up @@ -1558,6 +1560,16 @@ public AuthTeamsListResponse authTeamsList(RequestConfigurator<AuthTeamsListRequ
return authTeamsList(req.configure(AuthTeamsListRequest.builder()).build());
}

@Override
public BlocksValidateResponse blocksValidate(BlocksValidateRequest req) throws IOException, SlackApiException {
return postFormAndParseResponse(toForm(req), Methods.BLOCKS_VALIDATE, BlocksValidateResponse.class);
}

@Override
public BlocksValidateResponse blocksValidate(RequestConfigurator<BlocksValidateRequest.BlocksValidateRequestBuilder> req) throws IOException, SlackApiException {
return blocksValidate(req.configure(BlocksValidateRequest.builder()).build());
}

@Override
public BookmarksAddResponse bookmarksAdd(BookmarksAddRequest req) throws IOException, SlackApiException {
return postFormWithTokenAndParseResponse(toForm(req), Methods.BOOKMARKS_ADD, getToken(req), BookmarksAddResponse.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.slack.api.methods.request.blocks;

import com.slack.api.methods.SlackApiRequest;
import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class BlocksValidateRequest implements SlackApiRequest {

/**
* A JSON-encoded string of an array of blocks to validate.
*/
private String blocks;

/**
* A JSON-encoded string of a message payload to validate.
*/
private String message;

/**
* A JSON-encoded string of a view payload to validate.
*/
private String view;

/**
* blocks.validate requires no token or scopes.
* See https://docs.slack.dev/reference/methods/blocks.validate.
*/
@Override
public String getToken() {
return null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.slack.api.methods.response.blocks;

import com.slack.api.methods.SlackApiTextResponse;
import com.slack.api.model.ResponseMetadata;
import lombok.Data;

import java.util.List;
import java.util.Map;

@Data
public class BlocksValidateResponse implements SlackApiTextResponse {

private boolean ok;
private String warning;
private String error;
private String needed;
private String provided;
private transient Map<String, List<String>> httpResponseHeaders;

private ResponseMetadata responseMetadata;
private List<Error> errors;

@Data
public static class Error {
private String code;
private String message;
private String pointer;
private String relatedComponent;
}
}
Loading
Loading