diff --git a/json-logs/samples/api/slackLists.access.delete.json b/json-logs/samples/api/slackLists.access.delete.json new file mode 100644 index 000000000..86af2c368 --- /dev/null +++ b/json-logs/samples/api/slackLists.access.delete.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.access.set.json b/json-logs/samples/api/slackLists.access.set.json new file mode 100644 index 000000000..86af2c368 --- /dev/null +++ b/json-logs/samples/api/slackLists.access.set.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.create.json b/json-logs/samples/api/slackLists.create.json new file mode 100644 index 000000000..a368b4f22 --- /dev/null +++ b/json-logs/samples/api/slackLists.create.json @@ -0,0 +1,12 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "list_id": "", + "list_metadata": { + "schema": [], + "subtask_schema": [] + } +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.download.get.json b/json-logs/samples/api/slackLists.download.get.json new file mode 100644 index 000000000..cc5f18a75 --- /dev/null +++ b/json-logs/samples/api/slackLists.download.get.json @@ -0,0 +1,9 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "status": "", + "download_url": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.download.start.json b/json-logs/samples/api/slackLists.download.start.json new file mode 100644 index 000000000..7cf2735dd --- /dev/null +++ b/json-logs/samples/api/slackLists.download.start.json @@ -0,0 +1,8 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "job_id": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.items.create.json b/json-logs/samples/api/slackLists.items.create.json new file mode 100644 index 000000000..0e658837b --- /dev/null +++ b/json-logs/samples/api/slackLists.items.create.json @@ -0,0 +1,16 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "item": { + "id": "", + "list_id": "", + "date_created": 0, + "created_by": "", + "updated_by": "", + "fields": [], + "updated_timestamp": "" + } +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.items.delete.json b/json-logs/samples/api/slackLists.items.delete.json new file mode 100644 index 000000000..86af2c368 --- /dev/null +++ b/json-logs/samples/api/slackLists.items.delete.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.items.deleteMultiple.json b/json-logs/samples/api/slackLists.items.deleteMultiple.json new file mode 100644 index 000000000..86af2c368 --- /dev/null +++ b/json-logs/samples/api/slackLists.items.deleteMultiple.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.items.info.json b/json-logs/samples/api/slackLists.items.info.json new file mode 100644 index 000000000..b14c0007e --- /dev/null +++ b/json-logs/samples/api/slackLists.items.info.json @@ -0,0 +1,10 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "list": {}, + "record": {}, + "subtasks": [] +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.items.list.json b/json-logs/samples/api/slackLists.items.list.json new file mode 100644 index 000000000..d388248e0 --- /dev/null +++ b/json-logs/samples/api/slackLists.items.list.json @@ -0,0 +1,21 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "items": [ + { + "id": "", + "list_id": "", + "date_created": 0, + "created_by": "", + "updated_by": "", + "fields": [], + "updated_timestamp": "" + } + ], + "response_metadata": { + "next_cursor": "" + } +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.items.update.json b/json-logs/samples/api/slackLists.items.update.json new file mode 100644 index 000000000..86af2c368 --- /dev/null +++ b/json-logs/samples/api/slackLists.items.update.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.update.json b/json-logs/samples/api/slackLists.update.json new file mode 100644 index 000000000..86af2c368 --- /dev/null +++ b/json-logs/samples/api/slackLists.update.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/metadata/web-api/rate_limit_tiers.json b/metadata/web-api/rate_limit_tiers.json index cdeeba994..42592d469 100644 --- a/metadata/web-api/rate_limit_tiers.json +++ b/metadata/web-api/rate_limit_tiers.json @@ -267,6 +267,18 @@ "search.all": "Tier2", "search.files": "Tier2", "search.messages": "Tier2", + "slackLists.access.delete": "Tier3", + "slackLists.access.set": "Tier3", + "slackLists.create": "Tier2", + "slackLists.download.get": "Tier4", + "slackLists.download.start": "Tier2", + "slackLists.items.create": "Tier3", + "slackLists.items.delete": "Tier2", + "slackLists.items.deleteMultiple": "Tier2", + "slackLists.items.info": "Tier2", + "slackLists.items.list": "Tier2", + "slackLists.items.update": "Tier3", + "slackLists.update": "Tier2", "stars.add": "Tier2", "stars.list": "Tier3", "stars.remove": "Tier2", diff --git a/slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java b/slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java index 02b8038a0..bb16be54d 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java @@ -101,6 +101,18 @@ import com.slack.api.methods.request.search.SearchAllRequest; import com.slack.api.methods.request.search.SearchFilesRequest; import com.slack.api.methods.request.search.SearchMessagesRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slacklists.SlackListsUpdateRequest; import com.slack.api.methods.request.stars.StarsAddRequest; import com.slack.api.methods.request.stars.StarsListRequest; import com.slack.api.methods.request.stars.StarsRemoveRequest; @@ -223,6 +235,18 @@ import com.slack.api.methods.response.search.SearchAllResponse; import com.slack.api.methods.response.search.SearchFilesResponse; import com.slack.api.methods.response.search.SearchMessagesResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slacklists.SlackListsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slacklists.SlackListsUpdateResponse; import com.slack.api.methods.response.stars.StarsAddResponse; import com.slack.api.methods.response.stars.StarsListResponse; import com.slack.api.methods.response.stars.StarsRemoveResponse; @@ -1411,6 +1435,57 @@ CompletableFuture // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders CompletableFuture starsRemove(RequestConfigurator req); + // ------------------------------ + // slackLists + // ------------------------------ + CompletableFuture slackListsAccessDelete(SlackListsAccessDeleteRequest req); + + CompletableFuture slackListsAccessDelete(RequestConfigurator req); + + CompletableFuture slackListsAccessSet(SlackListsAccessSetRequest req); + + CompletableFuture slackListsAccessSet(RequestConfigurator req); + + CompletableFuture slackListsCreate(SlackListsCreateRequest req); + + CompletableFuture slackListsCreate(RequestConfigurator req); + + CompletableFuture slackListsDownloadGet(SlackListsDownloadGetRequest req); + + CompletableFuture slackListsDownloadGet(RequestConfigurator req); + + CompletableFuture slackListsDownloadStart(SlackListsDownloadStartRequest req); + + CompletableFuture slackListsDownloadStart(RequestConfigurator req); + + CompletableFuture slackListsItemsCreate(SlackListsItemsCreateRequest req); + + CompletableFuture slackListsItemsCreate(RequestConfigurator req); + + CompletableFuture slackListsItemsDelete(SlackListsItemsDeleteRequest req); + + CompletableFuture slackListsItemsDelete(RequestConfigurator req); + + CompletableFuture slackListsItemsDeleteMultiple(SlackListsItemsDeleteMultipleRequest req); + + CompletableFuture slackListsItemsDeleteMultiple(RequestConfigurator req); + + CompletableFuture slackListsItemsInfo(SlackListsItemsInfoRequest req); + + CompletableFuture slackListsItemsInfo(RequestConfigurator req); + + CompletableFuture slackListsItemsList(SlackListsItemsListRequest req); + + CompletableFuture slackListsItemsList(RequestConfigurator req); + + CompletableFuture slackListsItemsUpdate(SlackListsItemsUpdateRequest req); + + CompletableFuture slackListsItemsUpdate(RequestConfigurator req); + + CompletableFuture slackListsUpdate(SlackListsUpdateRequest req); + + CompletableFuture slackListsUpdate(RequestConfigurator req); + // ------------------------------ // team // ------------------------------ diff --git a/slack-api-client/src/main/java/com/slack/api/methods/Methods.java b/slack-api-client/src/main/java/com/slack/api/methods/Methods.java index 8415cca90..efa1ce658 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/Methods.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/Methods.java @@ -654,6 +654,23 @@ private Methods() { public static final String STARS_ADD = "stars.add"; public static final String STARS_LIST = "stars.list"; public static final String STARS_REMOVE = "stars.remove"; + + // ------------------------------ + // slackLists + // ------------------------------ + + public static final String SLACKLISTS_ACCESS_DELETE = "slackLists.access.delete"; + public static final String SLACKLISTS_ACCESS_SET = "slackLists.access.set"; + public static final String SLACKLISTS_CREATE = "slackLists.create"; + public static final String SLACKLISTS_DOWNLOAD_GET = "slackLists.download.get"; + public static final String SLACKLISTS_DOWNLOAD_START = "slackLists.download.start"; + public static final String SLACKLISTS_ITEMS_CREATE = "slackLists.items.create"; + public static final String SLACKLISTS_ITEMS_DELETE = "slackLists.items.delete"; + public static final String SLACKLISTS_ITEMS_DELETE_MULTIPLE = "slackLists.items.deleteMultiple"; + public static final String SLACKLISTS_ITEMS_INFO = "slackLists.items.info"; + public static final String SLACKLISTS_ITEMS_LIST = "slackLists.items.list"; + public static final String SLACKLISTS_ITEMS_UPDATE = "slackLists.items.update"; + public static final String SLACKLISTS_UPDATE = "slackLists.update"; // ------------------------------ // team diff --git a/slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java b/slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java index cd24186d3..63bbb70b5 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java @@ -117,6 +117,18 @@ import com.slack.api.methods.request.stars.StarsAddRequest; import com.slack.api.methods.request.stars.StarsListRequest; import com.slack.api.methods.request.stars.StarsRemoveRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slacklists.SlackListsUpdateRequest; import com.slack.api.methods.request.team.*; import com.slack.api.methods.request.team.external_teams.TeamExternalTeamsDisconnectRequest; import com.slack.api.methods.request.team.external_teams.TeamExternalTeamsListRequest; @@ -248,6 +260,18 @@ import com.slack.api.methods.response.search.SearchAllResponse; import com.slack.api.methods.response.search.SearchFilesResponse; import com.slack.api.methods.response.search.SearchMessagesResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slacklists.SlackListsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slacklists.SlackListsUpdateResponse; import com.slack.api.methods.response.stars.StarsAddResponse; import com.slack.api.methods.response.stars.StarsListResponse; import com.slack.api.methods.response.stars.StarsRemoveResponse; @@ -2499,6 +2523,70 @@ StarsListResponse starsList(RequestConfigurator req) throws IOException, SlackApiException; + + // ------------------------------ + // slackLists + // ------------------------------ + + SlackListsAccessDeleteResponse slackListsAccessDelete(SlackListsAccessDeleteRequest req) throws IOException, SlackApiException; + + SlackListsAccessDeleteResponse slackListsAccessDelete(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsAccessSetResponse slackListsAccessSet(SlackListsAccessSetRequest req) throws IOException, SlackApiException; + + SlackListsAccessSetResponse slackListsAccessSet(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsCreateResponse slackListsCreate(SlackListsCreateRequest req) throws IOException, SlackApiException; + + SlackListsCreateResponse slackListsCreate(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsDownloadGetResponse slackListsDownloadGet(SlackListsDownloadGetRequest req) throws IOException, SlackApiException; + + SlackListsDownloadGetResponse slackListsDownloadGet(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsDownloadStartResponse slackListsDownloadStart(SlackListsDownloadStartRequest req) throws IOException, SlackApiException; + + SlackListsDownloadStartResponse slackListsDownloadStart(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsItemsCreateResponse slackListsItemsCreate(SlackListsItemsCreateRequest req) throws IOException, SlackApiException; + + SlackListsItemsCreateResponse slackListsItemsCreate(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsItemsDeleteResponse slackListsItemsDelete(SlackListsItemsDeleteRequest req) throws IOException, SlackApiException; + + SlackListsItemsDeleteResponse slackListsItemsDelete(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsItemsDeleteMultipleResponse slackListsItemsDeleteMultiple(SlackListsItemsDeleteMultipleRequest req) throws IOException, SlackApiException; + + SlackListsItemsDeleteMultipleResponse slackListsItemsDeleteMultiple(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsItemsInfoResponse slackListsItemsInfo(SlackListsItemsInfoRequest req) throws IOException, SlackApiException; + + SlackListsItemsInfoResponse slackListsItemsInfo(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsItemsListResponse slackListsItemsList(SlackListsItemsListRequest req) throws IOException, SlackApiException; + + SlackListsItemsListResponse slackListsItemsList(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsItemsUpdateResponse slackListsItemsUpdate(SlackListsItemsUpdateRequest req) throws IOException, SlackApiException; + + SlackListsItemsUpdateResponse slackListsItemsUpdate(RequestConfigurator req) + throws IOException, SlackApiException; + + SlackListsUpdateResponse slackListsUpdate(SlackListsUpdateRequest req) throws IOException, SlackApiException; + + SlackListsUpdateResponse slackListsUpdate(RequestConfigurator req) + throws IOException, SlackApiException; // ------------------------------ // team diff --git a/slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java b/slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java index 5f44af813..f97155d55 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java @@ -424,10 +424,24 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier setRateLimitTier(SEARCH_FILES, Tier2); setRateLimitTier(SEARCH_MESSAGES, Tier2); + setRateLimitTier(SLACKLISTS_ACCESS_DELETE, Tier3); + setRateLimitTier(SLACKLISTS_ACCESS_SET, Tier3); + setRateLimitTier(SLACKLISTS_CREATE, Tier2); + setRateLimitTier(SLACKLISTS_DOWNLOAD_GET, Tier4); + setRateLimitTier(SLACKLISTS_DOWNLOAD_START, Tier2); + setRateLimitTier(SLACKLISTS_ITEMS_CREATE, Tier3); + setRateLimitTier(SLACKLISTS_ITEMS_DELETE, Tier2); + setRateLimitTier(SLACKLISTS_ITEMS_DELETE_MULTIPLE, Tier2); + setRateLimitTier(SLACKLISTS_ITEMS_INFO, Tier2); + setRateLimitTier(SLACKLISTS_ITEMS_LIST, Tier2); + setRateLimitTier(SLACKLISTS_ITEMS_UPDATE, Tier3); + setRateLimitTier(SLACKLISTS_UPDATE, Tier2); + setRateLimitTier(STARS_ADD, Tier2); setRateLimitTier(STARS_LIST, Tier3); setRateLimitTier(STARS_REMOVE, Tier2); + setRateLimitTier(TEAM_ACCESS_LOGS, Tier2); setRateLimitTier(TEAM_BILLABLE_INFO, Tier2); setRateLimitTier(TEAM_INFO, Tier3); diff --git a/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java b/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java index 109d63f15..7496e0c26 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java @@ -114,6 +114,18 @@ import com.slack.api.methods.request.search.SearchAllRequest; import com.slack.api.methods.request.search.SearchFilesRequest; import com.slack.api.methods.request.search.SearchMessagesRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slacklists.SlackListsUpdateRequest; import com.slack.api.methods.request.stars.StarsAddRequest; import com.slack.api.methods.request.stars.StarsListRequest; import com.slack.api.methods.request.stars.StarsRemoveRequest; @@ -2776,6 +2788,125 @@ public static FormBody.Builder toForm(StarsRemoveRequest req) { return form; } + public static FormBody.Builder toForm(SlackListsAccessDeleteRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + if (req.getUserIds() != null) { + setIfNotNull("user_ids", getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()), form); + } + if (req.getChannelIds() != null) { + setIfNotNull("channel_ids", getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()), form); + } + return form; + } + + public static FormBody.Builder toForm(SlackListsAccessSetRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + setIfNotNull("access_level", req.getAccessLevel(), form); + if (req.getUserIds() != null) { + setIfNotNull("user_ids", getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()), form); + } + if (req.getChannelIds() != null) { + setIfNotNull("channel_ids", getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()), form); + } + return form; + } + + public static FormBody.Builder toForm(SlackListsCreateRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("name", req.getName(), form); + if (req.getDescriptionBlocks() != null) { + String json = getJsonWithGsonAnonymInnerClassHandling(req.getDescriptionBlocks()); + form.add("description_blocks", json); + } + if (req.getSchema() != null) { + String json = getJsonWithGsonAnonymInnerClassHandling(req.getSchema()); + form.add("schema", json); + } + setIfNotNull("copy_from_list_id", req.getCopyFromListId(), form); + setIfNotNull("include_copied_list_records", req.getIncludeCopiedListRecords(), form); + setIfNotNull("todo_mode", req.getTodoMode(), form); + return form; + } + + public static FormBody.Builder toForm(SlackListsDownloadGetRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + setIfNotNull("job_id", req.getJobId(), form); + return form; + } + + public static FormBody.Builder toForm(SlackListsDownloadStartRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + setIfNotNull("include_archived", req.getIncludeArchived(), form); + return form; + } + + public static FormBody.Builder toForm(SlackListsItemsCreateRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + setIfNotNull("duplicated_item_id", req.getDuplicatedItemId(), form); + setIfNotNull("parent_item_id", req.getParentItemId(), form); + if (req.getInitialFields() != null) { + setIfNotNull("intial_fields", getJsonWithGsonAnonymInnerClassHandling(req.getInitialFields()), form); + } + return form; + } + + public static FormBody.Builder toForm(SlackListsItemsDeleteRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + setIfNotNull("id", req.getId(), form); + return form; + } + + public static FormBody.Builder toForm(SlackListsItemsDeleteMultipleRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + if (req.getIds() != null) { + setIfNotNull("ids", getJsonWithGsonAnonymInnerClassHandling(req.getIds()), form); + } + return form; + } + + public static FormBody.Builder toForm(SlackListsItemsInfoRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + setIfNotNull("id", req.getId(), form); + setIfNotNull("include_is_subscribed", req.getIncludeIsSubscribed(), form); + return form; + } + + public static FormBody.Builder toForm(SlackListsItemsListRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("limit", req.getLimit(), form); + setIfNotNull("cursor", req.getCursor(), form); + setIfNotNull("archived", req.getArchived(), form); + return form; + } + + public static FormBody.Builder toForm(SlackListsItemsUpdateRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); + if (req.getCells() != null) { + setIfNotNull("cells", getJsonWithGsonAnonymInnerClassHandling(req.getCells()), form); + } + return form; + } + + public static FormBody.Builder toForm(SlackListsUpdateRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("id", req.getId(), form); + setIfNotNull("name", req.getName(), form); + if (req.getDescriptionBlocks() != null) { + setIfNotNull("description_blocks", getJsonWithGsonAnonymInnerClassHandling(req.getDescriptionBlocks()), form); + } + setIfNotNull("todo_mode", req.getTodoMode(), form); + return form; + } + public static FormBody.Builder toForm(TeamAccessLogsRequest req) { FormBody.Builder form = new FormBody.Builder(); setIfNotNull("before", req.getBefore(), form); diff --git a/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java b/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java index 079f0c2ac..db120fe01 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java @@ -105,6 +105,18 @@ import com.slack.api.methods.request.search.SearchAllRequest; import com.slack.api.methods.request.search.SearchFilesRequest; import com.slack.api.methods.request.search.SearchMessagesRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slacklists.SlackListsUpdateRequest; import com.slack.api.methods.request.stars.StarsAddRequest; import com.slack.api.methods.request.stars.StarsListRequest; import com.slack.api.methods.request.stars.StarsRemoveRequest; @@ -227,6 +239,18 @@ import com.slack.api.methods.response.search.SearchAllResponse; import com.slack.api.methods.response.search.SearchFilesResponse; import com.slack.api.methods.response.search.SearchMessagesResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slacklists.SlackListsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slacklists.SlackListsUpdateResponse; import com.slack.api.methods.response.stars.StarsAddResponse; import com.slack.api.methods.response.stars.StarsListResponse; import com.slack.api.methods.response.stars.StarsRemoveResponse; @@ -2509,6 +2533,126 @@ public CompletableFuture searchFiles(RequestConfigurator slackListsAccessDelete(SlackListsAccessDeleteRequest req) { + return executor.execute(SLACKLISTS_ACCESS_DELETE, toMap(req), () -> methods.slackListsAccessDelete(req)); + } + + @Override + public CompletableFuture slackListsAccessDelete(RequestConfigurator req) { + return slackListsAccessDelete(req.configure(SlackListsAccessDeleteRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsAccessSet(SlackListsAccessSetRequest req) { + return executor.execute(SLACKLISTS_ACCESS_SET, toMap(req), () -> methods.slackListsAccessSet(req)); + } + + @Override + public CompletableFuture slackListsAccessSet(RequestConfigurator req) { + return slackListsAccessSet(req.configure(SlackListsAccessSetRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsCreate(SlackListsCreateRequest req) { + return executor.execute(SLACKLISTS_CREATE, toMap(req), () -> methods.slackListsCreate(req)); + } + + @Override + public CompletableFuture slackListsCreate(RequestConfigurator req) { + return slackListsCreate(req.configure(SlackListsCreateRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsDownloadGet(SlackListsDownloadGetRequest req) { + return executor.execute(SLACKLISTS_DOWNLOAD_GET, toMap(req), () -> methods.slackListsDownloadGet(req)); + } + + @Override + public CompletableFuture slackListsDownloadGet(RequestConfigurator req) { + return slackListsDownloadGet(req.configure(SlackListsDownloadGetRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsDownloadStart(SlackListsDownloadStartRequest req) { + return executor.execute(SLACKLISTS_DOWNLOAD_START, toMap(req), () -> methods.slackListsDownloadStart(req)); + } + + @Override + public CompletableFuture slackListsDownloadStart(RequestConfigurator req) { + return slackListsDownloadStart(req.configure(SlackListsDownloadStartRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsItemsCreate(SlackListsItemsCreateRequest req) { + return executor.execute(SLACKLISTS_ITEMS_CREATE, toMap(req), () -> methods.slackListsItemsCreate(req)); + } + + @Override + public CompletableFuture slackListsItemsCreate(RequestConfigurator req) { + return slackListsItemsCreate(req.configure(SlackListsItemsCreateRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsItemsDelete(SlackListsItemsDeleteRequest req) { + return executor.execute(SLACKLISTS_ITEMS_DELETE, toMap(req), () -> methods.slackListsItemsDelete(req)); + } + + @Override + public CompletableFuture slackListsItemsDelete(RequestConfigurator req) { + return slackListsItemsDelete(req.configure(SlackListsItemsDeleteRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsItemsDeleteMultiple(SlackListsItemsDeleteMultipleRequest req) { + return executor.execute(SLACKLISTS_ITEMS_DELETE_MULTIPLE, toMap(req), () -> methods.slackListsItemsDeleteMultiple(req)); + } + + @Override + public CompletableFuture slackListsItemsDeleteMultiple(RequestConfigurator req) { + return slackListsItemsDeleteMultiple(req.configure(SlackListsItemsDeleteMultipleRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsItemsInfo(SlackListsItemsInfoRequest req) { + return executor.execute(SLACKLISTS_ITEMS_INFO, toMap(req), () -> methods.slackListsItemsInfo(req)); + } + + @Override + public CompletableFuture slackListsItemsInfo(RequestConfigurator req) { + return slackListsItemsInfo(req.configure(SlackListsItemsInfoRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsItemsList(SlackListsItemsListRequest req) { + return executor.execute(SLACKLISTS_ITEMS_LIST, toMap(req), () -> methods.slackListsItemsList(req)); + } + + @Override + public CompletableFuture slackListsItemsList(RequestConfigurator req) { + return slackListsItemsList(req.configure(SlackListsItemsListRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsItemsUpdate(SlackListsItemsUpdateRequest req) { + return executor.execute(SLACKLISTS_ITEMS_UPDATE, toMap(req), () -> methods.slackListsItemsUpdate(req)); + } + + @Override + public CompletableFuture slackListsItemsUpdate(RequestConfigurator req) { + return slackListsItemsUpdate(req.configure(SlackListsItemsUpdateRequest.builder()).build()); + } + + @Override + public CompletableFuture slackListsUpdate(SlackListsUpdateRequest req) { + return executor.execute(SLACKLISTS_UPDATE, toMap(req), () -> methods.slackListsUpdate(req)); + } + + @Override + public CompletableFuture slackListsUpdate(RequestConfigurator req) { + return slackListsUpdate(req.configure(SlackListsUpdateRequest.builder()).build()); + } + @Override @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders public CompletableFuture starsAdd(StarsAddRequest req) { @@ -2545,6 +2689,7 @@ public CompletableFuture starsRemove(RequestConfigurator teamAccessLogs(TeamAccessLogsRequest req) { return executor.execute(TEAM_ACCESS_LOGS, toMap(req), () -> methods.teamAccessLogs(req)); diff --git a/slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java b/slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java index 83956f7d0..33155b83e 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java @@ -116,6 +116,18 @@ import com.slack.api.methods.request.search.SearchAllRequest; import com.slack.api.methods.request.search.SearchFilesRequest; import com.slack.api.methods.request.search.SearchMessagesRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slacklists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slacklists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slacklists.SlackListsUpdateRequest; import com.slack.api.methods.request.stars.StarsAddRequest; import com.slack.api.methods.request.stars.StarsListRequest; import com.slack.api.methods.request.stars.StarsRemoveRequest; @@ -251,6 +263,18 @@ import com.slack.api.methods.response.search.SearchAllResponse; import com.slack.api.methods.response.search.SearchFilesResponse; import com.slack.api.methods.response.search.SearchMessagesResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slacklists.SlackListsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slacklists.SlackListsUpdateResponse; import com.slack.api.methods.response.stars.StarsAddResponse; import com.slack.api.methods.response.stars.StarsListResponse; import com.slack.api.methods.response.stars.StarsRemoveResponse; @@ -3221,6 +3245,126 @@ public StarsRemoveResponse starsRemove(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsAccessDelete(req.configure(SlackListsAccessDeleteRequest.builder()).build()); + } + + @Override + public SlackListsAccessSetResponse slackListsAccessSet(SlackListsAccessSetRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_ACCESS_SET, getToken(req), SlackListsAccessSetResponse.class); + } + + @Override + public SlackListsAccessSetResponse slackListsAccessSet(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsAccessSet(req.configure(SlackListsAccessSetRequest.builder()).build()); + } + + @Override + public SlackListsCreateResponse slackListsCreate(SlackListsCreateRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_CREATE, getToken(req), SlackListsCreateResponse.class); + } + + @Override + public SlackListsCreateResponse slackListsCreate(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsCreate(req.configure(SlackListsCreateRequest.builder()).build()); + } + + @Override + public SlackListsDownloadGetResponse slackListsDownloadGet(SlackListsDownloadGetRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_DOWNLOAD_GET, getToken(req), SlackListsDownloadGetResponse.class); + } + + @Override + public SlackListsDownloadGetResponse slackListsDownloadGet(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsDownloadGet(req.configure(SlackListsDownloadGetRequest.builder()).build()); + } + + @Override + public SlackListsDownloadStartResponse slackListsDownloadStart(SlackListsDownloadStartRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_DOWNLOAD_START, getToken(req), SlackListsDownloadStartResponse.class); + } + + @Override + public SlackListsDownloadStartResponse slackListsDownloadStart(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsDownloadStart(req.configure(SlackListsDownloadStartRequest.builder()).build()); + } + + @Override + public SlackListsItemsCreateResponse slackListsItemsCreate(SlackListsItemsCreateRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_ITEMS_CREATE, getToken(req), SlackListsItemsCreateResponse.class); + } + + @Override + public SlackListsItemsCreateResponse slackListsItemsCreate(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsItemsCreate(req.configure(SlackListsItemsCreateRequest.builder()).build()); + } + + @Override + public SlackListsItemsDeleteResponse slackListsItemsDelete(SlackListsItemsDeleteRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_ITEMS_DELETE, getToken(req), SlackListsItemsDeleteResponse.class); + } + + @Override + public SlackListsItemsDeleteResponse slackListsItemsDelete(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsItemsDelete(req.configure(SlackListsItemsDeleteRequest.builder()).build()); + } + + @Override + public SlackListsItemsDeleteMultipleResponse slackListsItemsDeleteMultiple(SlackListsItemsDeleteMultipleRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_ITEMS_DELETE_MULTIPLE, getToken(req), SlackListsItemsDeleteMultipleResponse.class); + } + + @Override + public SlackListsItemsDeleteMultipleResponse slackListsItemsDeleteMultiple(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsItemsDeleteMultiple(req.configure(SlackListsItemsDeleteMultipleRequest.builder()).build()); + } + + @Override + public SlackListsItemsInfoResponse slackListsItemsInfo(SlackListsItemsInfoRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_ITEMS_INFO, getToken(req), SlackListsItemsInfoResponse.class); + } + + @Override + public SlackListsItemsInfoResponse slackListsItemsInfo(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsItemsInfo(req.configure(SlackListsItemsInfoRequest.builder()).build()); + } + + @Override + public SlackListsItemsListResponse slackListsItemsList(SlackListsItemsListRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_ITEMS_LIST, getToken(req), SlackListsItemsListResponse.class); + } + + @Override + public SlackListsItemsListResponse slackListsItemsList(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsItemsList(req.configure(SlackListsItemsListRequest.builder()).build()); + } + + @Override + public SlackListsItemsUpdateResponse slackListsItemsUpdate(SlackListsItemsUpdateRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_ITEMS_UPDATE, getToken(req), SlackListsItemsUpdateResponse.class); + } + + @Override + public SlackListsItemsUpdateResponse slackListsItemsUpdate(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsItemsUpdate(req.configure(SlackListsItemsUpdateRequest.builder()).build()); + } + + @Override + public SlackListsUpdateResponse slackListsUpdate(SlackListsUpdateRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_UPDATE, getToken(req), SlackListsUpdateResponse.class); + } + + @Override + public SlackListsUpdateResponse slackListsUpdate(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsUpdate(req.configure(SlackListsUpdateRequest.builder()).build()); + } + @Override public TeamAccessLogsResponse teamAccessLogs(TeamAccessLogsRequest req) throws IOException, SlackApiException { this.teamId.ifPresent(currentTeamId -> { diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessDeleteRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessDeleteRequest.java new file mode 100644 index 000000000..024993447 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessDeleteRequest.java @@ -0,0 +1,35 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import java.util.List; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.access.delete + */ +@Data +@Builder +public class SlackListsAccessDeleteRequest implements SlackApiRequest { + + /** + * Authentication token. Requires scope: `lists:write` + */ + private String token; + + /** + * Encoded ID of the List. + */ + private String listId; + + /** + * List of channels you wish to update access for. Can only be used if user_ids is not provided. (Optional) + */ + private List channelIds; + + /** + * List of users you wish to update access for. Can only be used if channel_ids is not provided. (Optional) + */ + private List userIds; +} + diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessSetRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessSetRequest.java new file mode 100644 index 000000000..35832012b --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessSetRequest.java @@ -0,0 +1,40 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import java.util.List; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.access.set + */ +@Data +@Builder +public class SlackListsAccessSetRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + /** + * Encoded ID of the List. + */ + private String listId; + + /** + * Desired level of access. + */ + private String accessLevel; + + /** + * List of channels you wish to update access for. Can only be used if user_ids is not provided. (Optional) + */ + private List channelIds; + + /** + * List of users you wish to update access for. Can only be used if channel_ids is not provided. (Optional) + */ + private List userIds; +} + diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsCreateRequest.java new file mode 100644 index 000000000..ca1f296fb --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsCreateRequest.java @@ -0,0 +1,53 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.block.RichTextBlock; + +import java.util.List; +import java.util.Map; + +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.create + */ +@Data +@Builder +public class SlackListsCreateRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * Name of the List. + */ + private String name; + + /** + * A rich text description of the List. (Optional) + */ + private List descriptionBlocks; + + /** + * Column definition for the List. (Optional) + */ + private List> schema; + + /** + * ID of the List to copy. (Optional) + */ + private String copyFromListId; + + /** + * Boolean indicating whether to include records when a List is copied. (Optional) + */ + private Boolean includeCopiedListRecords; + + /** + * Boolean indicating whether the List should be used to track todo tasks. (Optional) + */ + private Boolean todoMode; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadGetRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadGetRequest.java new file mode 100644 index 000000000..f3b1f63ea --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadGetRequest.java @@ -0,0 +1,28 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.download.get + */ +@Data +@Builder +public class SlackListsDownloadGetRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * ID of the List to export. + */ + private String listId; + + /** + * The ID of the recently started job to export the List. + */ + private String jobId; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadStartRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadStartRequest.java new file mode 100644 index 000000000..9c6a07d95 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadStartRequest.java @@ -0,0 +1,28 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.download.start + */ +@Data +@Builder +public class SlackListsDownloadStartRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * ID of the List to export. + */ + private String listId; + + /** + * Include archived rows. (Optional) + */ + private Boolean includeArchived; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsCreateRequest.java new file mode 100644 index 000000000..c0cb3aa95 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsCreateRequest.java @@ -0,0 +1,42 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; + +import java.util.List; +import java.util.Map; + +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.items.create + */ +@Data +@Builder +public class SlackListsItemsCreateRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * ID of the List containing the items. + */ + private String listId; + + /** + * ID of the record to make a copy of. (Optional) + */ + private String duplicatedItemId; + + /** + * ID of the parent record for this subtask. (Optional) + */ + private String parentItemId; + + /** + * Initial item data. (Optional) + */ + private List> initialFields; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteMultipleRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteMultipleRequest.java new file mode 100644 index 000000000..0b738847b --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteMultipleRequest.java @@ -0,0 +1,29 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import java.util.List; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.items.deleteMultiple + */ +@Data +@Builder +public class SlackListsItemsDeleteMultipleRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * ID of the List containing the items. + */ + private String listId; + + /** + * IDs of items to delete. + */ + private List ids; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteRequest.java new file mode 100644 index 000000000..82ba6bf1f --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteRequest.java @@ -0,0 +1,28 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.items.delete + */ +@Data +@Builder +public class SlackListsItemsDeleteRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * ID of the List containing the items. + */ + private String listId; + + /** + * ID of item to delete. + */ + private String id; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsInfoRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsInfoRequest.java new file mode 100644 index 000000000..1ac11a227 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsInfoRequest.java @@ -0,0 +1,34 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.items.info + */ +@Data +@Builder +public class SlackListsItemsInfoRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * ID of the List containing the items. + */ + private String listId; + + /** + * ID of the row to get. + */ + private String id; + + /** + * Set to true to include is_subscribed data for the returned List row. (Optional) + */ + @Builder.Default + private Boolean includeIsSubscribed = false; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsListRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsListRequest.java new file mode 100644 index 000000000..7d7f94dee --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsListRequest.java @@ -0,0 +1,39 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.items.list + */ +@Data +@Builder +public class SlackListsItemsListRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * ID of the List. + */ + private String listId; + + + /** + * The maximum number of records to return. (Optional) + */ + private Integer limit; + + /** + * Next cursor for pagination. (Optional) + */ + private String cursor; + + /** + * Boolean indicating whether archived items or normal items should be returned. (Optional) + */ + private Boolean archived; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsUpdateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsUpdateRequest.java new file mode 100644 index 000000000..6f66355e9 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsUpdateRequest.java @@ -0,0 +1,33 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; + +import java.util.List; +import java.util.Map; + +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.items.update + */ +@Data +@Builder +public class SlackListsItemsUpdateRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * ID of the List containing the items. + */ + private String listId; + + /** + * Cells to update. + */ + private List> cells; + +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsUpdateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsUpdateRequest.java new file mode 100644 index 000000000..f35c8e0be --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsUpdateRequest.java @@ -0,0 +1,40 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.block.RichTextBlock; +import java.util.List; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/slackLists.update + */ +@Data +@Builder +public class SlackListsUpdateRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.` + */ + private String token; + + /** + * The ID of the List to update. + */ + private String id; + + /** + * Name of the List. (Optional) + */ + private String name; + + /** + * A rich text description of the List. (Optional) + */ + private List descriptionBlocks; + + /** + * Boolean indicating whether the List should be used to track todo tasks. (Optional) + */ + private Boolean todoMode; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessDeleteResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessDeleteResponse.java new file mode 100644 index 000000000..1dab71b10 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessDeleteResponse.java @@ -0,0 +1,20 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsAccessDeleteResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessSetResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessSetResponse.java new file mode 100644 index 000000000..ca1d7bf46 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessSetResponse.java @@ -0,0 +1,20 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsAccessSetResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsCreateResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsCreateResponse.java new file mode 100644 index 000000000..0ec5dc90b --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsCreateResponse.java @@ -0,0 +1,28 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.google.gson.annotations.SerializedName; +import com.slack.api.model.list.ListMetadata; +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsCreateResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + @SerializedName("list_id") + private String listId; + + @SerializedName("list_metadata") + private ListMetadata listMetadata; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadGetResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadGetResponse.java new file mode 100644 index 000000000..f596a8362 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadGetResponse.java @@ -0,0 +1,26 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.google.gson.annotations.SerializedName; +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsDownloadGetResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private String status; + + @SerializedName("download_url") + private String downloadUrl; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadStartResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadStartResponse.java new file mode 100644 index 000000000..dd0d631e6 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadStartResponse.java @@ -0,0 +1,24 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.google.gson.annotations.SerializedName; +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsDownloadStartResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + @SerializedName("job_id") + private String jobId; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsCreateResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsCreateResponse.java new file mode 100644 index 000000000..93f028fd8 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsCreateResponse.java @@ -0,0 +1,22 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.model.list.ListRecord; +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data +public class SlackListsItemsCreateResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private ListRecord item; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteMultipleResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteMultipleResponse.java new file mode 100644 index 000000000..dc10b395d --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteMultipleResponse.java @@ -0,0 +1,20 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsItemsDeleteMultipleResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteResponse.java new file mode 100644 index 000000000..e75c95cc2 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteResponse.java @@ -0,0 +1,20 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsItemsDeleteResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsInfoResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsInfoResponse.java new file mode 100644 index 000000000..2c6160eda --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsInfoResponse.java @@ -0,0 +1,26 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.File; +import com.slack.api.model.list.ListRecord; + +import lombok.Data; + +@Data + +public class SlackListsItemsInfoResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private File list; + private ListRecord record; + private List subtasks; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListResponse.java new file mode 100644 index 000000000..8371f295a --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListResponse.java @@ -0,0 +1,24 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.model.ResponseMetadata; +import com.slack.api.model.list.ListRecord; +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data +public class SlackListsItemsListResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private List items; + private ResponseMetadata responseMetadata; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsUpdateResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsUpdateResponse.java new file mode 100644 index 000000000..e2d703423 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsUpdateResponse.java @@ -0,0 +1,20 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsItemsUpdateResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsUpdateResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsUpdateResponse.java new file mode 100644 index 000000000..c26fe7e5e --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsUpdateResponse.java @@ -0,0 +1,20 @@ +package com.slack.api.methods.response.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.methods.SlackApiTextResponse; + +import lombok.Data; + +@Data + +public class SlackListsUpdateResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} \ No newline at end of file diff --git a/slack-api-client/src/test/java/test_locally/api/MethodsTest.java b/slack-api-client/src/test/java/test_locally/api/MethodsTest.java index 6b0838fb0..b67729384 100644 --- a/slack-api-client/src/test/java/test_locally/api/MethodsTest.java +++ b/slack-api-client/src/test/java/test_locally/api/MethodsTest.java @@ -19,8 +19,8 @@ public class MethodsTest { public void verifyTheCoverage() { // https://docs.slack.dev/reference/methods // var methodNames = [].slice.call(document.getElementsByClassName('apiReferenceFilterableList__listItemLink')).map(e => e.href.replace("https://docs.slack.dev/reference/methods/", ""));console.log(methodNames.toString());console.log(methodNames.length); - // 291 endpoints as of October 14, 2025 - String methods = "admin.analytics.getFile,admin.apps.activities.list,admin.apps.approve,admin.apps.clearResolution,admin.apps.restrict,admin.apps.uninstall,admin.apps.approved.list,admin.apps.config.lookup,admin.apps.config.set,admin.apps.requests.cancel,admin.apps.requests.list,admin.apps.restricted.list,admin.audit.anomaly.allow.getItem,admin.audit.anomaly.allow.updateItem,admin.auth.policy.assignEntities,admin.auth.policy.getEntities,admin.auth.policy.removeEntities,admin.barriers.create,admin.barriers.delete,admin.barriers.list,admin.barriers.update,admin.conversations.archive,admin.conversations.bulkArchive,admin.conversations.bulkDelete,admin.conversations.bulkMove,admin.conversations.convertToPrivate,admin.conversations.convertToPublic,admin.conversations.create,admin.conversations.createForObjects,admin.conversations.delete,admin.conversations.disconnectShared,admin.conversations.getConversationPrefs,admin.conversations.getCustomRetention,admin.conversations.getTeams,admin.conversations.invite,admin.conversations.linkObjects,admin.conversations.lookup,admin.conversations.removeCustomRetention,admin.conversations.rename,admin.conversations.search,admin.conversations.setConversationPrefs,admin.conversations.setCustomRetention,admin.conversations.setTeams,admin.conversations.unarchive,admin.conversations.unlinkObjects,admin.conversations.ekm.listOriginalConnectedChannelInfo,admin.conversations.restrictAccess.addGroup,admin.conversations.restrictAccess.listGroups,admin.conversations.restrictAccess.removeGroup,admin.emoji.add,admin.emoji.addAlias,admin.emoji.list,admin.emoji.remove,admin.emoji.rename,admin.functions.list,admin.functions.permissions.lookup,admin.functions.permissions.set,admin.inviteRequests.approve,admin.inviteRequests.deny,admin.inviteRequests.list,admin.inviteRequests.approved.list,admin.inviteRequests.denied.list,admin.roles.addAssignments,admin.roles.listAssignments,admin.roles.removeAssignments,admin.teams.admins.list,admin.teams.create,admin.teams.list,admin.teams.owners.list,admin.teams.settings.info,admin.teams.settings.setDefaultChannels,admin.teams.settings.setDescription,admin.teams.settings.setDiscoverability,admin.teams.settings.setIcon,admin.teams.settings.setName,admin.usergroups.addChannels,admin.usergroups.addTeams,admin.usergroups.listChannels,admin.usergroups.removeChannels,admin.users.assign,admin.users.invite,admin.users.list,admin.users.remove,admin.users.setAdmin,admin.users.setExpiration,admin.users.setOwner,admin.users.setRegular,admin.users.session.clearSettings,admin.users.session.getSettings,admin.users.session.invalidate,admin.users.session.list,admin.users.session.reset,admin.users.session.resetBulk,admin.users.session.setSettings,admin.users.unsupportedVersions.export,admin.workflows.collaborators.add,admin.workflows.collaborators.remove,admin.workflows.permissions.lookup,admin.workflows.search,admin.workflows.unpublish,admin.workflows.triggers.types.permissions.lookup,admin.workflows.triggers.types.permissions.set,api.test,apps.activities.list,apps.auth.external.delete,apps.auth.external.get,apps.connections.open,apps.datastore.bulkDelete,apps.datastore.bulkGet,apps.datastore.bulkPut,apps.datastore.count,apps.datastore.delete,apps.datastore.get,apps.datastore.put,apps.datastore.query,apps.datastore.update,apps.event.authorizations.list,apps.manifest.create,apps.manifest.delete,apps.manifest.export,apps.manifest.update,apps.manifest.validate,apps.uninstall,assistant.search.context,assistant.threads.setStatus,assistant.threads.setSuggestedPrompts,assistant.threads.setTitle,auth.revoke,auth.test,auth.teams.list,bookmarks.add,bookmarks.edit,bookmarks.list,bookmarks.remove,bots.info,calls.add,calls.end,calls.info,calls.update,calls.participants.add,calls.participants.remove,canvases.access.delete,canvases.access.set,canvases.create,canvases.delete,canvases.edit,canvases.sections.lookup,channels.mark,chat.appendStream,chat.delete,chat.deleteScheduledMessage,chat.getPermalink,chat.meMessage,chat.postEphemeral,chat.postMessage,chat.scheduleMessage,chat.startStream,chat.stopStream,chat.unfurl,chat.update,chat.scheduledMessages.list,conversations.acceptSharedInvite,conversations.approveSharedInvite,conversations.archive,conversations.close,conversations.create,conversations.declineSharedInvite,conversations.history,conversations.info,conversations.invite,conversations.inviteShared,conversations.join,conversations.kick,conversations.leave,conversations.list,conversations.listConnectInvites,conversations.mark,conversations.members,conversations.open,conversations.rename,conversations.replies,conversations.setPurpose,conversations.setTopic,conversations.unarchive,conversations.canvases.create,conversations.externalInvitePermissions.set,conversations.requestSharedInvite.approve,conversations.requestSharedInvite.deny,conversations.requestSharedInvite.list,dialog.open,dnd.endDnd,dnd.endSnooze,dnd.info,dnd.setSnooze,dnd.teamInfo,emoji.list,files.comments.delete,files.completeUploadExternal,files.delete,files.getUploadURLExternal,files.info,files.list,files.revokePublicURL,files.sharedPublicURL,files.upload,files.remote.add,files.remote.info,files.remote.list,files.remote.remove,files.remote.share,files.remote.update,functions.completeError,functions.completeSuccess,functions.distributions.permissions.add,functions.distributions.permissions.list,functions.distributions.permissions.remove,functions.distributions.permissions.set,functions.workflows.steps.list,functions.workflows.steps.responses.export,groups.mark,migration.exchange,oauth.access,oauth.v2.access,oauth.v2.exchange,openid.connect.token,openid.connect.userInfo,pins.add,pins.list,pins.remove,reactions.add,reactions.get,reactions.list,reactions.remove,reminders.add,reminders.complete,reminders.delete,reminders.info,reminders.list,rtm.connect,rtm.start,search.all,search.files,search.messages,stars.add,stars.list,stars.remove,team.accessLogs,team.billableInfo,team.info,team.integrationLogs,team.billing.info,team.externalTeams.disconnect,team.externalTeams.list,team.preferences.list,team.profile.get,tooling.tokens.rotate,usergroups.create,usergroups.disable,usergroups.enable,usergroups.list,usergroups.update,usergroups.users.list,usergroups.users.update,users.conversations,users.deletePhoto,users.getPresence,users.identity,users.info,users.list,users.lookupByEmail,users.setActive,users.setPhoto,users.setPresence,users.discoverableContacts.lookup,users.profile.get,users.profile.set,views.open,views.publish,views.push,views.update,workflows.stepCompleted,workflows.stepFailed,workflows.updateStep,workflows.triggers.permissions.add,workflows.triggers.permissions.list,workflows.triggers.permissions.remove,workflows.triggers.permissions.set,im.list,im.mark,mpim.list,mpim.mark"; + // 303 endpoints as of November 21, 2025 + String methods = "admin.analytics.getFile,admin.apps.activities.list,admin.apps.approve,admin.apps.clearResolution,admin.apps.restrict,admin.apps.uninstall,admin.apps.approved.list,admin.apps.config.lookup,admin.apps.config.set,admin.apps.requests.cancel,admin.apps.requests.list,admin.apps.restricted.list,admin.audit.anomaly.allow.getItem,admin.audit.anomaly.allow.updateItem,admin.auth.policy.assignEntities,admin.auth.policy.getEntities,admin.auth.policy.removeEntities,admin.barriers.create,admin.barriers.delete,admin.barriers.list,admin.barriers.update,admin.conversations.archive,admin.conversations.bulkArchive,admin.conversations.bulkDelete,admin.conversations.bulkMove,admin.conversations.convertToPrivate,admin.conversations.convertToPublic,admin.conversations.create,admin.conversations.createForObjects,admin.conversations.delete,admin.conversations.disconnectShared,admin.conversations.getConversationPrefs,admin.conversations.getCustomRetention,admin.conversations.getTeams,admin.conversations.invite,admin.conversations.linkObjects,admin.conversations.lookup,admin.conversations.removeCustomRetention,admin.conversations.rename,admin.conversations.search,admin.conversations.setConversationPrefs,admin.conversations.setCustomRetention,admin.conversations.setTeams,admin.conversations.unarchive,admin.conversations.unlinkObjects,admin.conversations.ekm.listOriginalConnectedChannelInfo,admin.conversations.restrictAccess.addGroup,admin.conversations.restrictAccess.listGroups,admin.conversations.restrictAccess.removeGroup,admin.emoji.add,admin.emoji.addAlias,admin.emoji.list,admin.emoji.remove,admin.emoji.rename,admin.functions.list,admin.functions.permissions.lookup,admin.functions.permissions.set,admin.inviteRequests.approve,admin.inviteRequests.deny,admin.inviteRequests.list,admin.inviteRequests.approved.list,admin.inviteRequests.denied.list,admin.roles.addAssignments,admin.roles.listAssignments,admin.roles.removeAssignments,admin.teams.admins.list,admin.teams.create,admin.teams.list,admin.teams.owners.list,admin.teams.settings.info,admin.teams.settings.setDefaultChannels,admin.teams.settings.setDescription,admin.teams.settings.setDiscoverability,admin.teams.settings.setIcon,admin.teams.settings.setName,admin.usergroups.addChannels,admin.usergroups.addTeams,admin.usergroups.listChannels,admin.usergroups.removeChannels,admin.users.assign,admin.users.invite,admin.users.list,admin.users.remove,admin.users.setAdmin,admin.users.setExpiration,admin.users.setOwner,admin.users.setRegular,admin.users.session.clearSettings,admin.users.session.getSettings,admin.users.session.invalidate,admin.users.session.list,admin.users.session.reset,admin.users.session.resetBulk,admin.users.session.setSettings,admin.users.unsupportedVersions.export,admin.workflows.collaborators.add,admin.workflows.collaborators.remove,admin.workflows.permissions.lookup,admin.workflows.search,admin.workflows.unpublish,admin.workflows.triggers.types.permissions.lookup,admin.workflows.triggers.types.permissions.set,api.test,apps.activities.list,apps.auth.external.delete,apps.auth.external.get,apps.connections.open,apps.datastore.bulkDelete,apps.datastore.bulkGet,apps.datastore.bulkPut,apps.datastore.count,apps.datastore.delete,apps.datastore.get,apps.datastore.put,apps.datastore.query,apps.datastore.update,apps.event.authorizations.list,apps.manifest.create,apps.manifest.delete,apps.manifest.export,apps.manifest.update,apps.manifest.validate,apps.uninstall,assistant.search.context,assistant.threads.setStatus,assistant.threads.setSuggestedPrompts,assistant.threads.setTitle,auth.revoke,auth.test,auth.teams.list,bookmarks.add,bookmarks.edit,bookmarks.list,bookmarks.remove,bots.info,calls.add,calls.end,calls.info,calls.update,calls.participants.add,calls.participants.remove,canvases.access.delete,canvases.access.set,canvases.create,canvases.delete,canvases.edit,canvases.sections.lookup,channels.mark,chat.appendStream,chat.delete,chat.deleteScheduledMessage,chat.getPermalink,chat.meMessage,chat.postEphemeral,chat.postMessage,chat.scheduleMessage,chat.startStream,chat.stopStream,chat.unfurl,chat.update,chat.scheduledMessages.list,conversations.acceptSharedInvite,conversations.approveSharedInvite,conversations.archive,conversations.close,conversations.create,conversations.declineSharedInvite,conversations.history,conversations.info,conversations.invite,conversations.inviteShared,conversations.join,conversations.kick,conversations.leave,conversations.list,conversations.listConnectInvites,conversations.mark,conversations.members,conversations.open,conversations.rename,conversations.replies,conversations.setPurpose,conversations.setTopic,conversations.unarchive,conversations.canvases.create,conversations.externalInvitePermissions.set,conversations.requestSharedInvite.approve,conversations.requestSharedInvite.deny,conversations.requestSharedInvite.list,dialog.open,dnd.endDnd,dnd.endSnooze,dnd.info,dnd.setSnooze,dnd.teamInfo,emoji.list,files.comments.delete,files.completeUploadExternal,files.delete,files.getUploadURLExternal,files.info,files.list,files.revokePublicURL,files.sharedPublicURL,files.upload,files.remote.add,files.remote.info,files.remote.list,files.remote.remove,files.remote.share,files.remote.update,functions.completeError,functions.completeSuccess,functions.distributions.permissions.add,functions.distributions.permissions.list,functions.distributions.permissions.remove,functions.distributions.permissions.set,functions.workflows.steps.list,functions.workflows.steps.responses.export,groups.mark,migration.exchange,oauth.access,oauth.v2.access,oauth.v2.exchange,openid.connect.token,openid.connect.userInfo,pins.add,pins.list,pins.remove,reactions.add,reactions.get,reactions.list,reactions.remove,reminders.add,reminders.complete,reminders.delete,reminders.info,reminders.list,rtm.connect,rtm.start,search.all,search.files,search.messages,slackLists.access.delete,slackLists.access.set,slackLists.create,slackLists.download.get,slackLists.download.start,slackLists.items.create,slackLists.items.delete,slackLists.items.deleteMultiple,slackLists.items.info,slackLists.items.list,slackLists.items.update,slackLists.update,stars.add,stars.list,stars.remove,team.accessLogs,team.billableInfo,team.info,team.integrationLogs,team.billing.info,team.externalTeams.disconnect,team.externalTeams.list,team.preferences.list,team.profile.get,tooling.tokens.rotate,usergroups.create,usergroups.disable,usergroups.enable,usergroups.list,usergroups.update,usergroups.users.list,usergroups.users.update,users.conversations,users.deletePhoto,users.getPresence,users.identity,users.info,users.list,users.lookupByEmail,users.setActive,users.setPhoto,users.setPresence,users.discoverableContacts.lookup,users.profile.get,users.profile.set,views.open,views.publish,views.push,views.update,workflows.stepCompleted,workflows.stepFailed,workflows.updateStep,workflows.triggers.permissions.add,workflows.triggers.permissions.list,workflows.triggers.permissions.remove,workflows.triggers.permissions.set,im.list,im.mark,mpim.list,mpim.mark"; final List existingMethods = new ArrayList<>(); for (Field f : Methods.class.getDeclaredFields()) { int modifiers = f.getModifiers(); diff --git a/slack-api-client/src/test/java/test_locally/api/methods/SlackListsTest.java b/slack-api-client/src/test/java/test_locally/api/methods/SlackListsTest.java new file mode 100644 index 000000000..f117f320b --- /dev/null +++ b/slack-api-client/src/test/java/test_locally/api/methods/SlackListsTest.java @@ -0,0 +1,311 @@ +package test_locally.api.methods; + +import com.slack.api.Slack; +import com.slack.api.SlackConfig; +import com.slack.api.model.block.RichTextBlock; +import com.slack.api.model.block.element.RichTextSectionElement; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import util.MockSlackApiServer; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static util.MockSlackApi.ValidToken; + +public class SlackListsTest { + + MockSlackApiServer server = new MockSlackApiServer(); + SlackConfig config = new SlackConfig(); + Slack slack = Slack.getInstance(config); + + @Before + public void setup() throws Exception { + server.start(); + config.setMethodsEndpointUrlPrefix(server.getMethodsEndpointPrefix()); + } + + @After + public void tearDown() throws Exception { + server.stop(); + } + + // Create a new list + @Test + public void slackListsCreate() throws Exception { + Map taskNameColumn = new HashMap<>(); + taskNameColumn.put("key", "task_name"); + taskNameColumn.put("name", "Task Name"); + taskNameColumn.put("type", "text"); + taskNameColumn.put("is_primary_column", true); + + Map dueDateColumn = new HashMap<>(); + dueDateColumn.put("key", "due_date"); + dueDateColumn.put("name", "Due Date"); + dueDateColumn.put("type", "date"); + + Map statusChoices = new HashMap<>(); + statusChoices.put("choices", Arrays.asList( + createChoice("not_started", "Not Started", "red"), + createChoice("in_progress", "In Progress", "yellow"), + createChoice("completed", "Completed", "green") + )); + Map statusColumn = new HashMap<>(); + statusColumn.put("key", "status"); + statusColumn.put("name", "Status"); + statusColumn.put("type", "select"); + statusColumn.put("options", statusChoices); + + Map assigneeColumn = new HashMap<>(); + assigneeColumn.put("key", "assignee"); + assigneeColumn.put("name", "Assignee"); + assigneeColumn.put("type", "user"); + + assertThat(slack.methods(ValidToken).slackListsCreate(r -> r + .name("Backlog") + .descriptionBlocks(Arrays.asList(createRichTextBlock("List to keep track of tasks!"))) + .schema(Arrays.asList(taskNameColumn, dueDateColumn, statusColumn, assigneeColumn))) + .isOk(), is(true)); + } + + @Test + public void slackListsCreate_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsCreate(r -> r.name("Backlog")) + .get().isOk(), is(true)); + } + + // Set list access permissions + @Test + public void slackListsAccessSet() throws Exception { + assertThat(slack.methods(ValidToken).slackListsAccessSet(r -> r + .listId("F1234567") + .accessLevel("write") + .userIds(Arrays.asList("U09G4FG3TRN"))) + .isOk(), is(true)); + } + + @Test + public void slackListsAccessSet_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsAccessSet(r -> r + .listId("F1234567") + .accessLevel("write") + .userIds(Arrays.asList("U09G4FG3TRN"))) + .get().isOk(), is(true)); + } + + // Create several list items + @Test + public void slackListsItemsCreate() throws Exception { + Map initialField = new HashMap<>(); + initialField.put("column_id", "col123"); + initialField.put("rich_text", Arrays.asList(createRichTextBlock("CLI app unlink command"))); + + assertThat(slack.methods(ValidToken).slackListsItemsCreate(r -> r + .listId("F1234567") + .initialFields(Arrays.asList(initialField))) + .isOk(), is(true)); + } + + @Test + public void slackListsItemsCreate_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsItemsCreate(r -> r + .listId("F1234567")) + .get().isOk(), is(true)); + } + + // Delete specific list items + @Test + public void slackListsItemsDelete() throws Exception { + assertThat(slack.methods(ValidToken).slackListsItemsDelete(r -> r + .listId("F1234567") + .id("Rec018ALE9718")) + .isOk(), is(true)); + } + + @Test + public void slackListsItemsDelete_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsItemsDelete(r -> r + .listId("F1234567") + .id("Rec018ALE9718")) + .get().isOk(), is(true)); + } + + @Test + public void slackListsItemsDeleteMultiple() throws Exception { + assertThat(slack.methods(ValidToken).slackListsItemsDeleteMultiple(r -> r + .listId("F1234567") + .ids(Arrays.asList("Rec018ALE9720", "Rec018ALE9721"))) + .isOk(), is(true)); + } + + @Test + public void slackListsItemsDeleteMultiple_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsItemsDeleteMultiple(r -> r + .listId("F1234567") + .ids(Arrays.asList("Rec018ALE9720", "Rec018ALE9721"))) + .get().isOk(), is(true)); + } + + // Retrieve info for a single list item + @Test + public void slackListsItemsInfo() throws Exception { + assertThat(slack.methods(ValidToken).slackListsItemsInfo(r -> r + .listId("F1234567") + .id("Rec018ALE9718") + .includeIsSubscribed(true)) + .isOk(), is(true)); + } + + @Test + public void slackListsItemsInfo_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsItemsInfo(r -> r + .listId("F1234567") + .id("Rec018ALE9718") + .includeIsSubscribed(true)) + .get().isOk(), is(true)); + } + + // Retrieve all list items + @Test + public void slackListsItemsList() throws Exception { + assertThat(slack.methods(ValidToken).slackListsItemsList(r -> r + .listId("F1234567") + .limit(50) + .archived(false)) + .isOk(), is(true)); + } + + @Test + public void slackListsItemsList_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsItemsList(r -> r + .listId("F1234567") + .limit(50) + .archived(false)) + .get().isOk(), is(true)); + } + + // Download list data + @Test + public void slackListsDownloadStart() throws Exception { + assertThat(slack.methods(ValidToken).slackListsDownloadStart(r -> r + .listId("F1234567") + .includeArchived(false)) + .isOk(), is(true)); + } + + @Test + public void slackListsDownloadStart_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsDownloadStart(r -> r + .listId("F1234567") + .includeArchived(false)) + .get().isOk(), is(true)); + } + + @Test + public void slackListsDownloadGet() throws Exception { + assertThat(slack.methods(ValidToken).slackListsDownloadGet(r -> r + .listId("F1234567") + .jobId("job123")) + .isOk(), is(true)); + } + + @Test + public void slackListsDownloadGet_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsDownloadGet(r -> r + .listId("F1234567") + .jobId("job123")) + .get().isOk(), is(true)); + } + + // Update an existing list item + @Test + public void slackListsItemsUpdate() throws Exception { + Map cell = new HashMap<>(); + cell.put("column_id", "col123"); + cell.put("rich_text", Arrays.asList(createRichTextBlock("Updated text"))); + cell.put("row_id", "item_id_1"); + + assertThat(slack.methods(ValidToken).slackListsItemsUpdate(r -> r + .listId("F1234567") + .cells(Arrays.asList(cell))) + .isOk(), is(true)); + } + + @Test + public void slackListsItemsUpdate_async() throws Exception { + Map cell = new HashMap<>(); + cell.put("column_id", "col123"); + cell.put("rich_text", Arrays.asList(createRichTextBlock("Updated text"))); + cell.put("row_id", "item_id_1"); + + assertThat(slack.methodsAsync(ValidToken).slackListsItemsUpdate(r -> r + .listId("F1234567") + .cells(Arrays.asList(cell))) + .get().isOk(), is(true)); + } + + // Update list metadata + @Test + public void slackListsUpdate() throws Exception { + assertThat(slack.methods(ValidToken).slackListsUpdate(r -> r + .id("F1234567") + .name("Test List - UPDATED") + .descriptionBlocks(Arrays.asList(createRichTextBlock("This list has been updated via API"))) + .todoMode(false)) + .isOk(), is(true)); + } + + @Test + public void slackListsUpdate_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsUpdate(r -> r + .id("F1234567") + .name("Test List - UPDATED") + .descriptionBlocks(Arrays.asList(createRichTextBlock("This list has been updated via API"))) + .todoMode(false)) + .get().isOk(), is(true)); + } + + // Remove access for the test user + @Test + public void slackListsAccessDelete() throws Exception { + assertThat(slack.methods(ValidToken).slackListsAccessDelete(r -> r + .listId("F1234567") + .userIds(Arrays.asList("U09G4FG3TRN"))) + .isOk(), is(true)); + } + + @Test + public void slackListsAccessDelete_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsAccessDelete(r -> r + .listId("F1234567") + .userIds(Arrays.asList("U09G4FG3TRN"))) + .get().isOk(), is(true)); + } + + // Helper methods + private RichTextBlock createRichTextBlock(String text) { + return RichTextBlock.builder() + .elements(Arrays.asList( + RichTextSectionElement.builder() + .elements(Arrays.asList( + RichTextSectionElement.Text.builder() + .text(text) + .build() + )) + .build() + )) + .build(); + } + + private Map createChoice(String value, String label, String color) { + Map choice = new HashMap<>(); + choice.put("value", value); + choice.put("label", label); + choice.put("color", color); + return choice; + } +} diff --git a/slack-api-client/src/test/java/test_with_remote_apis/methods/slacklists_Test.java b/slack-api-client/src/test/java/test_with_remote_apis/methods/slacklists_Test.java new file mode 100644 index 000000000..0e4feb9f0 --- /dev/null +++ b/slack-api-client/src/test/java/test_with_remote_apis/methods/slacklists_Test.java @@ -0,0 +1,326 @@ +package test_with_remote_apis.methods; + +import com.slack.api.Slack; +import com.slack.api.methods.SlackApiException; +import com.slack.api.methods.response.slacklists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slacklists.SlackListsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slacklists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slacklists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slacklists.SlackListsUpdateResponse; +import config.Constants; +import config.SlackTestConfig; +import lombok.extern.slf4j.Slf4j; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +import java.io.IOException; + +import static org.hamcrest.CoreMatchers.*; +import static org.hamcrest.MatcherAssert.assertThat; + +@Slf4j +public class slacklists_Test { + + static SlackTestConfig testConfig = SlackTestConfig.getInstance(); + static Slack slack = Slack.getInstance(testConfig.getConfig()); + + @BeforeClass + public static void setUp() throws Exception { + SlackTestConfig.initializeRawJSONDataFiles("slackLists.*"); + } + + @AfterClass + public static void tearDown() throws InterruptedException { + SlackTestConfig.awaitCompletion(testConfig); + } + + String botToken = System.getenv(Constants.SLACK_SDK_TEST_BOT_TOKEN); + + /* + * remove the @Ignore from the tests after setting up botToken + */ + @Test + @Ignore + public void create() throws IOException, SlackApiException { + SlackListsCreateResponse response = slack.methods().slackListsCreate(r -> r + .token(botToken) + .name("Backlog")); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void create_async() throws Exception { + SlackListsCreateResponse response = slack.methodsAsync().slackListsCreate(r -> r + .token(botToken) + .name("Backlog")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void create_with_todo_mode() throws IOException, SlackApiException { + SlackListsCreateResponse response = slack.methods().slackListsCreate(r -> r + .token(botToken) + .name("Backlog") + .todoMode(true)); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void update() throws IOException, SlackApiException { + SlackListsUpdateResponse response = slack.methods().slackListsUpdate(r -> r + .token(botToken) + .id("F1234567") + .name("Updated Backlog") + .todoMode(true)); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void update_async() throws Exception { + SlackListsUpdateResponse response = slack.methodsAsync().slackListsUpdate(r -> r + .token(botToken) + .id("F1234567") + .name("Updated Backlog") + .todoMode(true)).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void accessSet() throws IOException, SlackApiException { + SlackListsAccessSetResponse response = slack.methods().slackListsAccessSet(r -> r + .token(botToken) + .listId("F1234567") + .accessLevel("write")); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void accessSet_async() throws Exception { + SlackListsAccessSetResponse response = slack.methodsAsync().slackListsAccessSet(r -> r + .token(botToken) + .listId("F1234567") + .accessLevel("write")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void accessDelete() throws IOException, SlackApiException { + SlackListsAccessDeleteResponse response = slack.methods().slackListsAccessDelete(r -> r + .token(botToken) + .listId("F1234567")); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void accessDelete_async() throws Exception { + SlackListsAccessDeleteResponse response = slack.methodsAsync().slackListsAccessDelete(r -> r + .token(botToken) + .listId("F1234567")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void downloadStart() throws IOException, SlackApiException { + SlackListsDownloadStartResponse response = slack.methods().slackListsDownloadStart(r -> r + .token(botToken) + .listId("F1234567") + .includeArchived(false)); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void downloadStart_async() throws Exception { + SlackListsDownloadStartResponse response = slack.methodsAsync().slackListsDownloadStart(r -> r + .token(botToken) + .listId("F1234567") + .includeArchived(false)).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void downloadGet() throws IOException, SlackApiException { + SlackListsDownloadGetResponse response = slack.methods().slackListsDownloadGet(r -> r + .token(botToken) + .listId("F1234567") + .jobId("job123")); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void downloadGet_async() throws Exception { + SlackListsDownloadGetResponse response = slack.methodsAsync().slackListsDownloadGet(r -> r + .token(botToken) + .listId("F1234567") + .jobId("job123")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void itemsCreate() throws IOException, SlackApiException { + SlackListsItemsCreateResponse response = slack.methods().slackListsItemsCreate(r -> r + .token(botToken) + .listId("F1234567")); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + assertThat(response.getItem(), is(notNullValue())); + assertThat(response.getItem().getId(), is(notNullValue())); + } + + @Test + @Ignore + public void itemsCreate_async() throws Exception { + SlackListsItemsCreateResponse response = slack.methodsAsync().slackListsItemsCreate(r -> r + .token(botToken) + .listId("F1234567")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + assertThat(response.getItem(), is(notNullValue())); + } + + @Test + @Ignore + public void itemsInfo() throws IOException, SlackApiException { + SlackListsItemsInfoResponse response = slack.methods().slackListsItemsInfo(r -> r + .token(botToken) + .listId("F1234567") + .id("Rec018ALE9718") + .includeIsSubscribed(true)); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void itemsInfo_async() throws Exception { + SlackListsItemsInfoResponse response = slack.methodsAsync().slackListsItemsInfo(r -> r + .token(botToken) + .listId("F1234567") + .id("Rec018ALE9718")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void itemsList() throws IOException, SlackApiException { + SlackListsItemsListResponse response = slack.methods().slackListsItemsList(r -> r + .token(botToken) + .limit(100) + .archived(false)); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + assertThat(response.getItems(), is(notNullValue())); + assertThat(response.getResponseMetadata(), is(notNullValue())); + } + + @Test + @Ignore + public void itemsList_async() throws Exception { + SlackListsItemsListResponse response = slack.methodsAsync().slackListsItemsList(r -> r + .token(botToken) + .limit(100) + .archived(false)).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + assertThat(response.getItems(), is(notNullValue())); + } + + @Test + @Ignore + public void itemsUpdate() throws IOException, SlackApiException { + SlackListsItemsUpdateResponse response = slack.methods().slackListsItemsUpdate(r -> r + .token(botToken) + .listId("F1234567")); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void itemsUpdate_async() throws Exception { + SlackListsItemsUpdateResponse response = slack.methodsAsync().slackListsItemsUpdate(r -> r + .token(botToken) + .listId("F1234567")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void itemsDelete() throws IOException, SlackApiException { + SlackListsItemsDeleteResponse response = slack.methods().slackListsItemsDelete(r -> r + .token(botToken) + .listId("F1234567") + .id("Rec018ALE9718")); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void itemsDelete_async() throws Exception { + SlackListsItemsDeleteResponse response = slack.methodsAsync().slackListsItemsDelete(r -> r + .token(botToken) + .listId("F1234567") + .id("Rec018ALE9718")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void itemsDeleteMultiple() throws IOException, SlackApiException { + SlackListsItemsDeleteMultipleResponse response = slack.methods().slackListsItemsDeleteMultiple(r -> r + .token(botToken) + .listId("F1234567")); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + + @Test + @Ignore + public void itemsDeleteMultiple_async() throws Exception { + SlackListsItemsDeleteMultipleResponse response = slack.methodsAsync().slackListsItemsDeleteMultiple(r -> r + .token(botToken) + .listId("F1234567")).get(); + assertThat(response.getError(), is(nullValue())); + assertThat(response.isOk(), is(true)); + } + +} + diff --git a/slack-api-model/src/main/java/com/slack/api/model/list/ListRecord.java b/slack-api-model/src/main/java/com/slack/api/model/list/ListRecord.java index 80123e7d1..c74702da8 100644 --- a/slack-api-model/src/main/java/com/slack/api/model/list/ListRecord.java +++ b/slack-api-model/src/main/java/com/slack/api/model/list/ListRecord.java @@ -53,6 +53,8 @@ public static class Field { private List channel; private List rating; private List timestamp; + private List link; + private List reference; } @Data