From 111d3343ab9690e91164c41fb482ade611b8b6df Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 11:35:17 -0500 Subject: [PATCH 01/24] feat(web-api): add slackLists methods --- json-logs/samples/api/slackLists.create.json | 8 +++ metadata/web-api/rate_limit_tiers.json | 1 + .../slack/api/methods/AsyncMethodsClient.java | 9 +++ .../java/com/slack/api/methods/Methods.java | 6 ++ .../com/slack/api/methods/MethodsClient.java | 14 +++- .../slack/api/methods/MethodsRateLimits.java | 2 + .../slack/api/methods/RequestFormBuilder.java | 18 +++++ .../methods/impl/AsyncMethodsClientImpl.java | 6 ++ .../api/methods/impl/MethodsClientImpl.java | 11 ++++ .../slacklists/SlackListsCreateRequest.java | 54 +++++++++++++++ .../slacklists/SlackListsCreateResponse.java | 28 ++++++++ .../java/test_locally/api/MethodsTest.java | 2 +- .../api/methods/SlackListsTest.java | 42 ++++++++++++ .../methods/slacklists_Test.java | 66 +++++++++++++++++++ .../slack/api/model/list/ListMetadata.java | 1 + 15 files changed, 265 insertions(+), 3 deletions(-) create mode 100644 json-logs/samples/api/slackLists.create.json create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsCreateRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsCreateResponse.java create mode 100644 slack-api-client/src/test/java/test_locally/api/methods/SlackListsTest.java create mode 100644 slack-api-client/src/test/java/test_with_remote_apis/methods/slacklists_Test.java diff --git a/json-logs/samples/api/slackLists.create.json b/json-logs/samples/api/slackLists.create.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.create.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ 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..e4d79f29b 100644 --- a/metadata/web-api/rate_limit_tiers.json +++ b/metadata/web-api/rate_limit_tiers.json @@ -267,6 +267,7 @@ "search.all": "Tier2", "search.files": "Tier2", "search.messages": "Tier2", + "slackLists.create": "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..8e7a6c758 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 @@ -104,6 +104,7 @@ 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.SlackListsCreateRequest; 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; @@ -1411,6 +1412,14 @@ CompletableFuture // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders CompletableFuture starsRemove(RequestConfigurator req); + // ------------------------------ + // slackLists + // ------------------------------ + + CompletableFuture slackListsCreate(SlackListsCreateRequest req); + + CompletableFuture slackListsCreate(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..7a71cbd2e 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,12 @@ 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_CREATE = "slackLists.create" // ------------------------------ // 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..68758e59c 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,7 @@ 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.SlackListsCreateRequest; 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; @@ -2499,11 +2500,20 @@ StarsListResponse starsList(RequestConfigurator req) throws IOException, SlackApiException; - + // ------------------------------ - // team + // slackLists // ------------------------------ + + SlackListsCreateResponse slackListsCreate(SlackListsCreateRequest req) throws IOException, SlackApiException; + + SlackListsCreateResponse slackListsCreate(RequestConfigurator req) + throws IOException, SlackApiException; + // ------------------------------å + // team + // ------------------------------ +å TeamAccessLogsResponse teamAccessLogs(TeamAccessLogsRequest req) throws IOException, SlackApiException; TeamAccessLogsResponse teamAccessLogs(RequestConfigurator req) 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..57a9240c3 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 @@ -428,6 +428,8 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier setRateLimitTier(STARS_LIST, Tier3); setRateLimitTier(STARS_REMOVE, Tier2); + setRateLimitTier(SLACKLISTS_CREATE, 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..22b1ad196 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 @@ -117,6 +117,7 @@ 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.SlackListsCreateRequest; 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; @@ -2776,6 +2777,23 @@ public static FormBody.Builder toForm(StarsRemoveRequest req) { 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(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..688f316a3 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 @@ -108,6 +108,7 @@ 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.SlackListsCreateRequest; 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; @@ -2545,6 +2546,11 @@ public CompletableFuture starsRemove(RequestConfigurator slackListsCreate(RequestConfigurator req) { + return slackListsCreate(req.configure(SlackListsCreateRequest.builder()).build()); + } + @Override public CompletableFuture 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..b0deba891 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 @@ -119,6 +119,7 @@ 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.SlackListsCreateRequest; 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; @@ -3221,6 +3222,16 @@ public StarsRemoveResponse starsRemove(RequestConfigurator req) throws IOException, SlackApiException { + return slackListsCreate(req.configure(SlackListsCreateRequest.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/SlackListsCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsCreateRequest.java new file mode 100644 index 000000000..1dadbf8df --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsCreateRequest.java @@ -0,0 +1,54 @@ +package com.slack.api.methods.request.slacklists; + +import java.util.List; +import java.util.Map; + +import com.slack.api.model.block.RichTextBlock; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +/** + * https://docs.slack.dev/reference/methods/search.all + */ +@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/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/test/java/test_locally/api/MethodsTest.java b/slack-api-client/src/test/java/test_locally/api/MethodsTest.java index 6b0838fb0..30f2af3ed 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 @@ -20,7 +20,7 @@ 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"; + 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.create,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..d87af163e --- /dev/null +++ b/slack-api-client/src/test/java/test_locally/api/methods/SlackListsTest.java @@ -0,0 +1,42 @@ +package test_locally.api.methods; + +import com.slack.api.Slack; +import com.slack.api.SlackConfig; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import util.MockSlackApiServer; + +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(); + } + + @Test + public void test() throws Exception { + assertThat(slack.methods(ValidToken).slackListsCreate(r -> r.name("Backlog")) + .isOk(), is(true)); + } + + @Test + public void test_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).slackListsCreate(r -> r.name("Backlog")) + .get().isOk(), is(true)); + } +} 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..dd89ff819 --- /dev/null +++ b/slack-api-client/src/test/java/test_with_remote_apis/methods/slacklists_Test.java @@ -0,0 +1,66 @@ +package test_with_remote_apis.methods; + +import com.slack.api.Slack; +import com.slack.api.methods.SlackApiException; +import com.slack.api.methods.response.slacklists.SlackListsCreateResponse; +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); + + @Test + 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 + 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 + 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)); + } + +} + diff --git a/slack-api-model/src/main/java/com/slack/api/model/list/ListMetadata.java b/slack-api-model/src/main/java/com/slack/api/model/list/ListMetadata.java index f17e11e8f..e2faacb1b 100644 --- a/slack-api-model/src/main/java/com/slack/api/model/list/ListMetadata.java +++ b/slack-api-model/src/main/java/com/slack/api/model/list/ListMetadata.java @@ -23,6 +23,7 @@ public class ListMetadata { private boolean trial; private ListCreationSource creationSource; private List schema; + private List subtaskSchema; private List views; private List integrations; private List descriptionBlocks; From 296f4030e4ffd9f5afa3d65c94fc838d259ae470 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 11:54:46 -0500 Subject: [PATCH 02/24] fix: linter errors --- .../src/main/java/com/slack/api/methods/Methods.java | 2 +- .../src/main/java/com/slack/api/methods/MethodsClient.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 7a71cbd2e..5d5f0a55e 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 @@ -659,7 +659,7 @@ private Methods() { // slackLists // ------------------------------ - public static final String SLACKLISTS_CREATE = "slackLists.create" + public static final String SLACKLISTS_CREATE = "slackLists.create"; // ------------------------------ // 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 68758e59c..51d657084 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 @@ -2510,10 +2510,10 @@ StarsRemoveResponse starsRemove(RequestConfigurator req) throws IOException, SlackApiException; - // ------------------------------å + // ------------------------------ // team // ------------------------------ -å + TeamAccessLogsResponse teamAccessLogs(TeamAccessLogsRequest req) throws IOException, SlackApiException; TeamAccessLogsResponse teamAccessLogs(RequestConfigurator req) From 26f3f7e352d6e8531bdfc9982b987d8755890e1f Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 12:36:43 -0500 Subject: [PATCH 03/24] fix: missing slacklists response object --- .../com/slack/api/methods/AsyncMethodsClient.java | 1 + .../java/com/slack/api/methods/MethodsClient.java | 1 + .../api/methods/impl/AsyncMethodsClientImpl.java | 12 +++++++++--- .../slack/api/methods/impl/MethodsClientImpl.java | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) 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 8e7a6c758..8b557d394 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 @@ -224,6 +224,7 @@ 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.SlackListsCreateResponse; import com.slack.api.methods.response.stars.StarsAddResponse; import com.slack.api.methods.response.stars.StarsListResponse; import com.slack.api.methods.response.stars.StarsRemoveResponse; 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 51d657084..63abea5e0 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 @@ -249,6 +249,7 @@ 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.SlackListsCreateResponse; import com.slack.api.methods.response.stars.StarsAddResponse; import com.slack.api.methods.response.stars.StarsListResponse; import com.slack.api.methods.response.stars.StarsRemoveResponse; 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 688f316a3..11d7f9317 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 @@ -228,6 +228,7 @@ 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.SlackListsCreateResponse; import com.slack.api.methods.response.stars.StarsAddResponse; import com.slack.api.methods.response.stars.StarsListResponse; import com.slack.api.methods.response.stars.StarsRemoveResponse; @@ -2546,10 +2547,15 @@ public CompletableFuture starsRemove(RequestConfigurator slackListsCreate(RequestConfigurator req) { + @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 teamAccessLogs(TeamAccessLogsRequest 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 b0deba891..1c8052c24 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 @@ -252,6 +252,7 @@ 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.SlackListsCreateResponse; import com.slack.api.methods.response.stars.StarsAddResponse; import com.slack.api.methods.response.stars.StarsListResponse; import com.slack.api.methods.response.stars.StarsRemoveResponse; From 353863a96e04a1883e504c2145f6b80aea01f804 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 13:38:17 -0500 Subject: [PATCH 04/24] docs: json samples for slackList methods --- json-logs/samples/api/slackLists.accessDelete.json | 8 ++++++++ json-logs/samples/api/slackLists.accessSet.json | 8 ++++++++ json-logs/samples/api/slackLists.downloadGet.json | 8 ++++++++ json-logs/samples/api/slackLists.downloadStart.json | 8 ++++++++ json-logs/samples/api/slackLists.itemsCreate.json | 8 ++++++++ json-logs/samples/api/slackLists.itemsDelete.json | 8 ++++++++ json-logs/samples/api/slackLists.itemsDeleteMultiple.json | 8 ++++++++ json-logs/samples/api/slackLists.itemsInfo.json | 8 ++++++++ json-logs/samples/api/slackLists.itemsList.json | 8 ++++++++ json-logs/samples/api/slackLists.itemsUpdate.json | 8 ++++++++ json-logs/samples/api/slackLists.update.json | 8 ++++++++ 11 files changed, 88 insertions(+) create mode 100644 json-logs/samples/api/slackLists.accessDelete.json create mode 100644 json-logs/samples/api/slackLists.accessSet.json create mode 100644 json-logs/samples/api/slackLists.downloadGet.json create mode 100644 json-logs/samples/api/slackLists.downloadStart.json create mode 100644 json-logs/samples/api/slackLists.itemsCreate.json create mode 100644 json-logs/samples/api/slackLists.itemsDelete.json create mode 100644 json-logs/samples/api/slackLists.itemsDeleteMultiple.json create mode 100644 json-logs/samples/api/slackLists.itemsInfo.json create mode 100644 json-logs/samples/api/slackLists.itemsList.json create mode 100644 json-logs/samples/api/slackLists.itemsUpdate.json create mode 100644 json-logs/samples/api/slackLists.update.json diff --git a/json-logs/samples/api/slackLists.accessDelete.json b/json-logs/samples/api/slackLists.accessDelete.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.accessDelete.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.accessSet.json b/json-logs/samples/api/slackLists.accessSet.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.accessSet.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.downloadGet.json b/json-logs/samples/api/slackLists.downloadGet.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.downloadGet.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.downloadStart.json b/json-logs/samples/api/slackLists.downloadStart.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.downloadStart.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.itemsCreate.json b/json-logs/samples/api/slackLists.itemsCreate.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.itemsCreate.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.itemsDelete.json b/json-logs/samples/api/slackLists.itemsDelete.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.itemsDelete.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.itemsDeleteMultiple.json b/json-logs/samples/api/slackLists.itemsDeleteMultiple.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.itemsDeleteMultiple.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.itemsInfo.json b/json-logs/samples/api/slackLists.itemsInfo.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.itemsInfo.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.itemsList.json b/json-logs/samples/api/slackLists.itemsList.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.itemsList.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.itemsUpdate.json b/json-logs/samples/api/slackLists.itemsUpdate.json new file mode 100644 index 000000000..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.itemsUpdate.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ 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..217f9755a --- /dev/null +++ b/json-logs/samples/api/slackLists.update.json @@ -0,0 +1,8 @@ +{ + "channel": "", + "error": "", + "needed": "", + "ok": false, + "provided": "", + "ts": "" +} \ No newline at end of file From d31395ca2561517a290c668c7830a1a234f05410 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 13:45:49 -0500 Subject: [PATCH 05/24] rate limits for slacklists methods --- metadata/web-api/rate_limit_tiers.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/metadata/web-api/rate_limit_tiers.json b/metadata/web-api/rate_limit_tiers.json index e4d79f29b..042dae77b 100644 --- a/metadata/web-api/rate_limit_tiers.json +++ b/metadata/web-api/rate_limit_tiers.json @@ -267,7 +267,18 @@ "search.all": "Tier2", "search.files": "Tier2", "search.messages": "Tier2", + "slackLists.accessDelete": "Tier3", + "slackLists.accessSet": "Tier3", "slackLists.create": "Tier2", + "slackLists.downloadGet": "Tier4", + "slackLists.downloadStart": "Tier2", + "slackLists.itemsCreate": "Tier3", + "slackLists.itemsDelete": "Tier2", + "slackLists.itemsDeleteMultiple": "Tier2", + "slackLists.itemsInfo": "Tier2", + "slackLists.itemsList": "Tier2", + "slackLists.itemsUpdate": "Tier3", + "slackLists.update": "Tier2", "stars.add": "Tier2", "stars.list": "Tier3", "stars.remove": "Tier2", From 561606f91c32a57158c57453ec5772f0885f62d0 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 15:43:34 -0500 Subject: [PATCH 06/24] methods/request for slacklists --- metadata/web-api/rate_limit_tiers.json | 20 ++--- .../slack/api/methods/AsyncMethodsClient.java | 67 +++++++++++++++- .../java/com/slack/api/methods/Methods.java | 11 +++ .../com/slack/api/methods/MethodsClient.java | 77 +++++++++++++++++++ .../slack/api/methods/MethodsRateLimits.java | 14 +++- .../slack/api/methods/RequestFormBuilder.java | 48 ++++++++++++ .../SlackListsAccessDeleteRequest.java | 35 +++++++++ .../SlackListsAccessSetRequest.java | 40 ++++++++++ .../slacklists/SlackListsCreateRequest.java | 9 +-- .../SlackListsDownloadGetRequest.java | 28 +++++++ .../SlackListsDownloadStartRequest.java | 28 +++++++ .../SlackListsItemsCreateRequest.java | 43 +++++++++++ .../SlackListsItemsDeleteMultipleRequest.java | 29 +++++++ .../SlackListsItemsDeleteRequest.java | 28 +++++++ .../SlackListsItemsInfoRequest.java | 34 ++++++++ .../SlackListsItemsListRequest.java | 33 ++++++++ .../SlackListsItemsUpdateRequest.java | 33 ++++++++ .../slacklists/SlackListsUpdateRequest.java | 39 ++++++++++ 18 files changed, 599 insertions(+), 17 deletions(-) create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessDeleteRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessSetRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadGetRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadStartRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsCreateRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteMultipleRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsInfoRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsListRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsUpdateRequest.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsUpdateRequest.java diff --git a/metadata/web-api/rate_limit_tiers.json b/metadata/web-api/rate_limit_tiers.json index 042dae77b..42592d469 100644 --- a/metadata/web-api/rate_limit_tiers.json +++ b/metadata/web-api/rate_limit_tiers.json @@ -267,17 +267,17 @@ "search.all": "Tier2", "search.files": "Tier2", "search.messages": "Tier2", - "slackLists.accessDelete": "Tier3", - "slackLists.accessSet": "Tier3", + "slackLists.access.delete": "Tier3", + "slackLists.access.set": "Tier3", "slackLists.create": "Tier2", - "slackLists.downloadGet": "Tier4", - "slackLists.downloadStart": "Tier2", - "slackLists.itemsCreate": "Tier3", - "slackLists.itemsDelete": "Tier2", - "slackLists.itemsDeleteMultiple": "Tier2", - "slackLists.itemsInfo": "Tier2", - "slackLists.itemsList": "Tier2", - "slackLists.itemsUpdate": "Tier3", + "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", 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 8b557d394..f856ebed5 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,10 +101,21 @@ 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.SlackListsDownloadSetRequest; +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; -import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; 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; @@ -224,7 +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.SlackListsDownloadSetResponse; +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; @@ -1416,10 +1438,53 @@ CompletableFuture // ------------------------------ // 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 5d5f0a55e..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 @@ -659,7 +659,18 @@ private Methods() { // 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 63abea5e0..f1c7b4bc1 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,7 +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.SlackListsDownloadSetRequest; +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; @@ -249,7 +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.SlackListsDownloadSetResponse; +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; @@ -2506,10 +2528,65 @@ StarsRemoveResponse starsRemove(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 57a9240c3..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,11 +424,23 @@ 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(SLACKLISTS_CREATE, Tier2); setRateLimitTier(TEAM_ACCESS_LOGS, Tier2); setRateLimitTier(TEAM_BILLABLE_INFO, Tier2); 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 22b1ad196..0c0784dcc 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 @@ -2777,6 +2777,22 @@ 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.getId(), 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) { + + } + public static FormBody.Builder toForm(SlackListsCreateRequest req) { FormBody.Builder form = new FormBody.Builder(); setIfNotNull("name", req.getName(), form); @@ -2794,6 +2810,38 @@ public static FormBody.Builder toForm(SlackListsCreateRequest req) { return form; } + public static FormBody.Builder toForm(SlackListsDownloadGetRequest req) { + + } + + public static FormBody.Builder toForm(SlackListsDownloadSetRequest req) { + + } + + public static FormBody.Builder toForm(SlackListsItemsCreateRequest req) { + + } + + public static FormBody.Builder toForm(SlackListsItemsDeleteRequest req) { + + } + + public static FormBody.Builder toForm(SlackListsItemsInfoRequest req) { + + } + + public static FormBody.Builder toForm(SlackListsItemsListRequest req) { + + } + + public static FormBody.Builder toForm(SlackListsItemsUpdateRequest req) { + + } + + public static FormBody.Builder toForm(SlackListsUpdateRequest req) { + + } + 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/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..822a2fe0f --- /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 bearing required scopes. + */ + 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 index 1dadbf8df..ca1f296fb 100644 --- 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 @@ -1,16 +1,16 @@ 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 com.slack.api.model.block.RichTextBlock; - -import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; /** - * https://docs.slack.dev/reference/methods/search.all + * https://docs.slack.dev/reference/methods/slackLists.create */ @Data @Builder @@ -50,5 +50,4 @@ public class SlackListsCreateRequest implements SlackApiRequest { * 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..35f166bc3 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsCreateRequest.java @@ -0,0 +1,43 @@ +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> intialFields; +} \ 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..283c547a9 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsListRequest.java @@ -0,0 +1,33 @@ +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; + + /** + * 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..8142c8aed --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsUpdateRequest.java @@ -0,0 +1,39 @@ +package com.slack.api.methods.request.slacklists; + +import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.block.RichTextBlock; +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 From ba71548855cacf53112b558996c6acc55bda6031 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 16:11:45 -0500 Subject: [PATCH 07/24] methods/response for slacklists --- .../SlackListsItemsCreateRequest.java | 1 - .../SlackListsAccessDeleteResponse.java | 20 ++++++++++++++ .../SlackListsAccessSetResponse.java | 20 ++++++++++++++ .../SlackListsDownloadGetResponse.java | 26 +++++++++++++++++++ .../SlackListsDownloadStartResponse.java | 24 +++++++++++++++++ .../SlackListsItemsCreateResponse.java | 22 ++++++++++++++++ ...SlackListsItemsDeleteMultipleResponse.java | 20 ++++++++++++++ .../SlackListsItemsDeleteResponse.java | 20 ++++++++++++++ .../SlackListsItemsInfoResponse.java | 20 ++++++++++++++ .../SlackListsItemsListsResponse.java | 24 +++++++++++++++++ .../SlackListsItemsUpdateResponse.java | 20 ++++++++++++++ .../slacklists/SlackListsUpdateResponse.java | 20 ++++++++++++++ 12 files changed, 236 insertions(+), 1 deletion(-) create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessDeleteResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessSetResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadGetResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadStartResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsCreateResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteMultipleResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsInfoResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListsResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsUpdateResponse.java create mode 100644 slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsUpdateResponse.java 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 index 35f166bc3..479a930cd 100644 --- 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 @@ -8,7 +8,6 @@ import lombok.Builder; import lombok.Data; - /** * https://docs.slack.dev/reference/methods/slackLists.items.create */ 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/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..e260cc695 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsInfoResponse.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 SlackListsItemsInfoResponse 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/SlackListsItemsListsResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListsResponse.java new file mode 100644 index 000000000..553ffe909 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListsResponse.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 SlackListsItemsListsResponse 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 From 42c536a88e96c62104209928ccd56a58d2aac582 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 16:28:23 -0500 Subject: [PATCH 08/24] methods/impl for slacklists --- .../slack/api/methods/RequestFormBuilder.java | 72 ++++++++-- .../methods/impl/AsyncMethodsClientImpl.java | 129 ++++++++++++++++-- .../api/methods/impl/MethodsClientImpl.java | 110 +++++++++++++++ ....java => SlackListsItemsListResponse.java} | 2 +- 4 files changed, 294 insertions(+), 19 deletions(-) rename slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/{SlackListsItemsListsResponse.java => SlackListsItemsListResponse.java} (88%) 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 0c0784dcc..7cde2de88 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 @@ -2790,7 +2790,16 @@ public static FormBody.Builder toForm(SlackListsAccessDeleteRequest req) { } 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) { @@ -2811,35 +2820,80 @@ public static FormBody.Builder toForm(SlackListsCreateRequest req) { } 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(SlackListsDownloadSetRequest req) { - + 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.getIntialFields() != null) { + setIfNotNull("intial_fields", getJsonWithGsonAnonymInnerClassHandling(req.getIntialFields()), 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) { 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 11d7f9317..ec3385556 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 @@ -2511,6 +2511,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) { @@ -2547,15 +2667,6 @@ public CompletableFuture starsRemove(RequestConfigurator 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 teamAccessLogs(TeamAccessLogsRequest 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 1c8052c24..b7c3b01ea 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 @@ -3223,6 +3223,26 @@ 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); @@ -3233,6 +3253,96 @@ public SlackListsCreateResponse slackListsCreate(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/response/slacklists/SlackListsItemsListsResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListResponse.java similarity index 88% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListsResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListResponse.java index 553ffe909..8371f295a 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListsResponse.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListResponse.java @@ -10,7 +10,7 @@ import lombok.Data; @Data -public class SlackListsItemsListsResponse implements SlackApiTextResponse { +public class SlackListsItemsListResponse implements SlackApiTextResponse { private boolean ok; private String warning; From 5009c2b76a1b5224d7ff0db4af4e85d054d2abf1 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Tue, 18 Nov 2025 17:26:31 -0500 Subject: [PATCH 09/24] fix: linter errors --- .../slack/api/methods/AsyncMethodsClient.java | 4 ++-- .../com/slack/api/methods/MethodsClient.java | 4 ++-- .../slack/api/methods/RequestFormBuilder.java | 15 ++++++++++-- .../methods/impl/AsyncMethodsClientImpl.java | 24 ++++++++++++++++++- .../api/methods/impl/MethodsClientImpl.java | 24 ++++++++++++++++++- .../slacklists/SlackListsUpdateRequest.java | 1 + 6 files changed, 64 insertions(+), 8 deletions(-) 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 f856ebed5..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 @@ -105,7 +105,7 @@ 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.SlackListsDownloadSetRequest; +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; @@ -239,7 +239,7 @@ 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.SlackListsDownloadSetResponse; +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; 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 f1c7b4bc1..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 @@ -121,7 +121,7 @@ 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.SlackListsDownloadSetRequest; +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; @@ -264,7 +264,7 @@ 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.SlackListsDownloadSetResponse; +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; 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 7cde2de88..11a72b6ca 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,10 +114,21 @@ 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; -import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; 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; @@ -2779,7 +2790,7 @@ public static FormBody.Builder toForm(StarsRemoveRequest req) { public static FormBody.Builder toForm(SlackListsAccessDeleteRequest req) { FormBody.Builder form = new FormBody.Builder(); - setIfNotNull("list_id", req.getId(), form); + setIfNotNull("list_id", req.getListId(), form); if (req.getUserIds() != null) { setIfNotNull("user_ids", getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()), 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 ec3385556..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,10 +105,21 @@ 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; -import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; 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; @@ -228,7 +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; 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 b7c3b01ea..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,10 +116,21 @@ 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; -import com.slack.api.methods.request.slacklists.SlackListsCreateRequest; 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; @@ -252,7 +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; 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 index 8142c8aed..f35c8e0be 100644 --- 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 @@ -2,6 +2,7 @@ import com.slack.api.methods.SlackApiRequest; import com.slack.api.model.block.RichTextBlock; +import java.util.List; import lombok.Builder; import lombok.Data; From f3d1fb04cd5fbe1645e4933755b4d48aaee7dcbd Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Wed, 19 Nov 2025 13:36:25 -0500 Subject: [PATCH 10/24] fix: match json file names to docs --- ...ete.json => slackLists.access.delete.json} | 0 ...essSet.json => slackLists.access.set.json} | 0 ...dGet.json => slackLists.download.get.json} | 0 ...rt.json => slackLists.download.start.json} | 0 ...eate.json => slackLists.items.create.json} | 0 ...lete.json => slackLists.items.delete.json} | 0 ...n => slackLists.items.deleteMultiple.json} | 0 ...msInfo.json => slackLists.items.info.json} | 0 ...msList.json => slackLists.items.list.json} | 0 ...date.json => slackLists.items.update.json} | 0 .../slack/api/methods/RequestFormBuilder.java | 4 +- .../SlackListsItemsCreateRequest.java | 2 +- .../SlackListsItemsListRequest.java | 6 + .../java/test_locally/api/MethodsTest.java | 2 +- .../api/methods/SlackListsTest.java | 275 +++++++++++++++++- .../methods/slacklists_Test.java | 260 +++++++++++++++++ 16 files changed, 542 insertions(+), 7 deletions(-) rename json-logs/samples/api/{slackLists.accessDelete.json => slackLists.access.delete.json} (100%) rename json-logs/samples/api/{slackLists.accessSet.json => slackLists.access.set.json} (100%) rename json-logs/samples/api/{slackLists.downloadGet.json => slackLists.download.get.json} (100%) rename json-logs/samples/api/{slackLists.downloadStart.json => slackLists.download.start.json} (100%) rename json-logs/samples/api/{slackLists.itemsCreate.json => slackLists.items.create.json} (100%) rename json-logs/samples/api/{slackLists.itemsDelete.json => slackLists.items.delete.json} (100%) rename json-logs/samples/api/{slackLists.itemsDeleteMultiple.json => slackLists.items.deleteMultiple.json} (100%) rename json-logs/samples/api/{slackLists.itemsInfo.json => slackLists.items.info.json} (100%) rename json-logs/samples/api/{slackLists.itemsList.json => slackLists.items.list.json} (100%) rename json-logs/samples/api/{slackLists.itemsUpdate.json => slackLists.items.update.json} (100%) diff --git a/json-logs/samples/api/slackLists.accessDelete.json b/json-logs/samples/api/slackLists.access.delete.json similarity index 100% rename from json-logs/samples/api/slackLists.accessDelete.json rename to json-logs/samples/api/slackLists.access.delete.json diff --git a/json-logs/samples/api/slackLists.accessSet.json b/json-logs/samples/api/slackLists.access.set.json similarity index 100% rename from json-logs/samples/api/slackLists.accessSet.json rename to json-logs/samples/api/slackLists.access.set.json diff --git a/json-logs/samples/api/slackLists.downloadGet.json b/json-logs/samples/api/slackLists.download.get.json similarity index 100% rename from json-logs/samples/api/slackLists.downloadGet.json rename to json-logs/samples/api/slackLists.download.get.json diff --git a/json-logs/samples/api/slackLists.downloadStart.json b/json-logs/samples/api/slackLists.download.start.json similarity index 100% rename from json-logs/samples/api/slackLists.downloadStart.json rename to json-logs/samples/api/slackLists.download.start.json diff --git a/json-logs/samples/api/slackLists.itemsCreate.json b/json-logs/samples/api/slackLists.items.create.json similarity index 100% rename from json-logs/samples/api/slackLists.itemsCreate.json rename to json-logs/samples/api/slackLists.items.create.json diff --git a/json-logs/samples/api/slackLists.itemsDelete.json b/json-logs/samples/api/slackLists.items.delete.json similarity index 100% rename from json-logs/samples/api/slackLists.itemsDelete.json rename to json-logs/samples/api/slackLists.items.delete.json diff --git a/json-logs/samples/api/slackLists.itemsDeleteMultiple.json b/json-logs/samples/api/slackLists.items.deleteMultiple.json similarity index 100% rename from json-logs/samples/api/slackLists.itemsDeleteMultiple.json rename to json-logs/samples/api/slackLists.items.deleteMultiple.json diff --git a/json-logs/samples/api/slackLists.itemsInfo.json b/json-logs/samples/api/slackLists.items.info.json similarity index 100% rename from json-logs/samples/api/slackLists.itemsInfo.json rename to json-logs/samples/api/slackLists.items.info.json diff --git a/json-logs/samples/api/slackLists.itemsList.json b/json-logs/samples/api/slackLists.items.list.json similarity index 100% rename from json-logs/samples/api/slackLists.itemsList.json rename to json-logs/samples/api/slackLists.items.list.json diff --git a/json-logs/samples/api/slackLists.itemsUpdate.json b/json-logs/samples/api/slackLists.items.update.json similarity index 100% rename from json-logs/samples/api/slackLists.itemsUpdate.json rename to json-logs/samples/api/slackLists.items.update.json 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 11a72b6ca..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 @@ -2849,8 +2849,8 @@ public static FormBody.Builder toForm(SlackListsItemsCreateRequest req) { setIfNotNull("list_id", req.getListId(), form); setIfNotNull("duplicated_item_id", req.getDuplicatedItemId(), form); setIfNotNull("parent_item_id", req.getParentItemId(), form); - if (req.getIntialFields() != null) { - setIfNotNull("intial_fields", getJsonWithGsonAnonymInnerClassHandling(req.getIntialFields()), form); + if (req.getInitialFields() != null) { + setIfNotNull("intial_fields", getJsonWithGsonAnonymInnerClassHandling(req.getInitialFields()), form); } return form; } 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 index 479a930cd..c0cb3aa95 100644 --- 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 @@ -38,5 +38,5 @@ public class SlackListsItemsCreateRequest implements SlackApiRequest { /** * Initial item data. (Optional) */ - private List> intialFields; + private List> initialFields; } \ 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 index 283c547a9..7d7f94dee 100644 --- 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 @@ -16,6 +16,12 @@ public class SlackListsItemsListRequest implements SlackApiRequest { */ private String token; + /** + * ID of the List. + */ + private String listId; + + /** * The maximum number of records to return. (Optional) */ 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 30f2af3ed..321568114 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 @@ -20,7 +20,7 @@ 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,slackLists.create,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"; + 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 index d87af163e..f117f320b 100644 --- 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 @@ -2,11 +2,17 @@ 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; @@ -28,15 +34,278 @@ public void tearDown() throws Exception { server.stop(); } + // Create a new list @Test - public void test() throws Exception { - assertThat(slack.methods(ValidToken).slackListsCreate(r -> r.name("Backlog")) + 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 test_async() throws Exception { + 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 index dd89ff819..0e4feb9f0 100644 --- 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 @@ -2,7 +2,18 @@ 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; @@ -34,7 +45,11 @@ public static void tearDown() throws InterruptedException { 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) @@ -44,6 +59,7 @@ public void create() throws IOException, SlackApiException { } @Test + @Ignore public void create_async() throws Exception { SlackListsCreateResponse response = slack.methodsAsync().slackListsCreate(r -> r .token(botToken) @@ -53,6 +69,7 @@ public void create_async() throws Exception { } @Test + @Ignore public void create_with_todo_mode() throws IOException, SlackApiException { SlackListsCreateResponse response = slack.methods().slackListsCreate(r -> r .token(botToken) @@ -62,5 +79,248 @@ public void create_with_todo_mode() throws IOException, SlackApiException { 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)); + } + } From 8aac82c62b4db2830022c734e92dcb6c38d2747a Mon Sep 17 00:00:00 2001 From: Maria Alejandra <104795114+srtaalej@users.noreply.github.com> Date: Fri, 21 Nov 2025 12:43:15 -0500 Subject: [PATCH 11/24] Update slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessDeleteRequest.java Co-authored-by: Eden Zimbelman --- .../request/slacklists/SlackListsAccessDeleteRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 822a2fe0f..024993447 100644 --- 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 @@ -13,7 +13,7 @@ public class SlackListsAccessDeleteRequest implements SlackApiRequest { /** - * Authentication token bearing required scopes. + * Authentication token. Requires scope: `lists:write` */ private String token; From b336e6cc4d6f2b2931586f03d30ae1c2ec29f166 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Fri, 21 Nov 2025 16:42:03 -0500 Subject: [PATCH 12/24] fix: json response samples for slacklists --- .../samples/api/slackLists.access.delete.json | 7 +++---- .../samples/api/slackLists.access.set.json | 7 +++---- json-logs/samples/api/slackLists.create.json | 10 +++++++--- .../samples/api/slackLists.download.get.json | 7 ++++--- .../api/slackLists.download.start.json | 6 +++--- .../samples/api/slackLists.items.create.json | 14 +++++++++++--- .../samples/api/slackLists.items.delete.json | 7 +++---- .../api/slackLists.items.deleteMultiple.json | 7 +++---- .../samples/api/slackLists.items.info.json | 8 +++++--- .../samples/api/slackLists.items.list.json | 19 ++++++++++++++++--- .../samples/api/slackLists.items.update.json | 7 +++---- json-logs/samples/api/slackLists.update.json | 7 +++---- .../SlackListsItemsInfoResponse.java | 6 ++++++ .../java/test_locally/api/MethodsTest.java | 2 +- .../com/slack/api/model/list/ListRecord.java | 2 ++ 15 files changed, 73 insertions(+), 43 deletions(-) diff --git a/json-logs/samples/api/slackLists.access.delete.json b/json-logs/samples/api/slackLists.access.delete.json index 217f9755a..86af2c368 100644 --- a/json-logs/samples/api/slackLists.access.delete.json +++ b/json-logs/samples/api/slackLists.access.delete.json @@ -1,8 +1,7 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, - "provided": "", - "ts": "" + "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 index 217f9755a..86af2c368 100644 --- a/json-logs/samples/api/slackLists.access.set.json +++ b/json-logs/samples/api/slackLists.access.set.json @@ -1,8 +1,7 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, - "provided": "", - "ts": "" + "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 index 217f9755a..a368b4f22 100644 --- a/json-logs/samples/api/slackLists.create.json +++ b/json-logs/samples/api/slackLists.create.json @@ -1,8 +1,12 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, "provided": "", - "ts": "" + "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 index 217f9755a..cc5f18a75 100644 --- a/json-logs/samples/api/slackLists.download.get.json +++ b/json-logs/samples/api/slackLists.download.get.json @@ -1,8 +1,9 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, "provided": "", - "ts": "" + "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 index 217f9755a..7cf2735dd 100644 --- a/json-logs/samples/api/slackLists.download.start.json +++ b/json-logs/samples/api/slackLists.download.start.json @@ -1,8 +1,8 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, "provided": "", - "ts": "" + "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 index 217f9755a..0e658837b 100644 --- a/json-logs/samples/api/slackLists.items.create.json +++ b/json-logs/samples/api/slackLists.items.create.json @@ -1,8 +1,16 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, "provided": "", - "ts": "" + "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 index 217f9755a..86af2c368 100644 --- a/json-logs/samples/api/slackLists.items.delete.json +++ b/json-logs/samples/api/slackLists.items.delete.json @@ -1,8 +1,7 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, - "provided": "", - "ts": "" + "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 index 217f9755a..86af2c368 100644 --- a/json-logs/samples/api/slackLists.items.deleteMultiple.json +++ b/json-logs/samples/api/slackLists.items.deleteMultiple.json @@ -1,8 +1,7 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, - "provided": "", - "ts": "" + "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 index 217f9755a..b14c0007e 100644 --- a/json-logs/samples/api/slackLists.items.info.json +++ b/json-logs/samples/api/slackLists.items.info.json @@ -1,8 +1,10 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, "provided": "", - "ts": "" + "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 index 217f9755a..d388248e0 100644 --- a/json-logs/samples/api/slackLists.items.list.json +++ b/json-logs/samples/api/slackLists.items.list.json @@ -1,8 +1,21 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, "provided": "", - "ts": "" + "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 index 217f9755a..86af2c368 100644 --- a/json-logs/samples/api/slackLists.items.update.json +++ b/json-logs/samples/api/slackLists.items.update.json @@ -1,8 +1,7 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, - "provided": "", - "ts": "" + "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 index 217f9755a..86af2c368 100644 --- a/json-logs/samples/api/slackLists.update.json +++ b/json-logs/samples/api/slackLists.update.json @@ -1,8 +1,7 @@ { - "channel": "", + "ok": false, + "warning": "", "error": "", "needed": "", - "ok": false, - "provided": "", - "ts": "" + "provided": "" } \ 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 index e260cc695..2c6160eda 100644 --- 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 @@ -4,6 +4,8 @@ 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; @@ -17,4 +19,8 @@ public class SlackListsItemsInfoResponse implements SlackApiTextResponse { 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/test/java/test_locally/api/MethodsTest.java b/slack-api-client/src/test/java/test_locally/api/MethodsTest.java index 321568114..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,7 +19,7 @@ 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 + // 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()) { 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 From 0b0398425e247fee904f6ec04680fbfb08cb7017 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Mon, 24 Nov 2025 14:20:03 -0500 Subject: [PATCH 13/24] fix: json samples for slacklists --- .../samples/api/slackLists.access.delete.json | 15 ++++--- .../samples/api/slackLists.access.set.json | 15 ++++--- json-logs/samples/api/slackLists.create.json | 44 ++++++++++++++----- .../samples/api/slackLists.download.get.json | 19 +++++--- .../api/slackLists.download.start.json | 17 ++++--- .../samples/api/slackLists.items.create.json | 35 +++++++++------ .../samples/api/slackLists.items.delete.json | 10 ++--- .../api/slackLists.items.deleteMultiple.json | 15 ++++--- .../samples/api/slackLists.items.info.json | 23 ++++++---- .../samples/api/slackLists.items.list.json | 41 +++++++++-------- .../samples/api/slackLists.items.update.json | 15 ++++--- json-logs/samples/api/slackLists.update.json | 15 ++++--- json-logs/samples/api/usergroups.list.json | 3 +- .../methods/slacklists_Test.java | 28 ------------ 14 files changed, 172 insertions(+), 123 deletions(-) diff --git a/json-logs/samples/api/slackLists.access.delete.json b/json-logs/samples/api/slackLists.access.delete.json index 86af2c368..0a3316f86 100644 --- a/json-logs/samples/api/slackLists.access.delete.json +++ b/json-logs/samples/api/slackLists.access.delete.json @@ -1,7 +1,12 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "" + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "response_metadata": { + "messages": [ + "" + ] + } } \ 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 index 86af2c368..0a3316f86 100644 --- a/json-logs/samples/api/slackLists.access.set.json +++ b/json-logs/samples/api/slackLists.access.set.json @@ -1,7 +1,12 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "" + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "response_metadata": { + "messages": [ + "" + ] + } } \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.create.json b/json-logs/samples/api/slackLists.create.json index a368b4f22..fd3b979eb 100644 --- a/json-logs/samples/api/slackLists.create.json +++ b/json-logs/samples/api/slackLists.create.json @@ -1,12 +1,36 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", - "list_id": "", - "list_metadata": { - "schema": [], - "subtask_schema": [] - } + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "list_id": "", + "list_metadata": { + "schema": [ + { + "key": "", + "name": "", + "is_primary_column": false, + "type": "", + "id": "", + "options": { + "format": "", + "show_member_name": false + } + } + ], + "subtask_schema": [ + { + "key": "", + "name": "", + "is_primary_column": false, + "type": "", + "id": "", + "options": { + "format": "", + "show_member_name": false + } + } + ] + } } \ 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 index cc5f18a75..b0b451a94 100644 --- a/json-logs/samples/api/slackLists.download.get.json +++ b/json-logs/samples/api/slackLists.download.get.json @@ -1,9 +1,14 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", - "status": "", - "download_url": "" + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "status": "", + "download_url": "", + "response_metadata": { + "messages": [ + "" + ] + } } \ 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 index 7cf2735dd..323c5c1f1 100644 --- a/json-logs/samples/api/slackLists.download.start.json +++ b/json-logs/samples/api/slackLists.download.start.json @@ -1,8 +1,13 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", - "job_id": "" + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "job_id": "", + "response_metadata": { + "messages": [ + "" + ] + } } \ 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 index 0e658837b..3e078b407 100644 --- a/json-logs/samples/api/slackLists.items.create.json +++ b/json-logs/samples/api/slackLists.items.create.json @@ -1,16 +1,23 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", - "item": { - "id": "", - "list_id": "", - "date_created": 0, - "created_by": "", - "updated_by": "", - "fields": [], - "updated_timestamp": "" - } + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "item": { + "id": "", + "list_id": "", + "date_created": 12345, + "created_by": "", + "updated_by": "", + "fields": [ + "" + ], + "updated_timestamp": "" + }, + "response_metadata": { + "messages": [ + "" + ] + } } \ 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 index 86af2c368..a3bbf2ef6 100644 --- a/json-logs/samples/api/slackLists.items.delete.json +++ b/json-logs/samples/api/slackLists.items.delete.json @@ -1,7 +1,7 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "" + "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 index 86af2c368..0a3316f86 100644 --- a/json-logs/samples/api/slackLists.items.deleteMultiple.json +++ b/json-logs/samples/api/slackLists.items.deleteMultiple.json @@ -1,7 +1,12 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "" + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "response_metadata": { + "messages": [ + "" + ] + } } \ 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 index b14c0007e..d5620dbcc 100644 --- a/json-logs/samples/api/slackLists.items.info.json +++ b/json-logs/samples/api/slackLists.items.info.json @@ -1,10 +1,17 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", - "list": {}, - "record": {}, - "subtasks": [] + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "list": {}, + "record": {}, + "subtasks": [ + "" + ], + "response_metadata": { + "messages": [ + "" + ] + } } \ 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 index d388248e0..a42b3fb0c 100644 --- a/json-logs/samples/api/slackLists.items.list.json +++ b/json-logs/samples/api/slackLists.items.list.json @@ -1,21 +1,26 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", - "items": [ - { - "id": "", - "list_id": "", - "date_created": 0, - "created_by": "", - "updated_by": "", - "fields": [], - "updated_timestamp": "" - } - ], - "response_metadata": { - "next_cursor": "" + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "items": [ + { + "id": "", + "list_id": "", + "date_created": 12345, + "created_by": "", + "updated_by": "", + "fields": [ + "" + ], + "updated_timestamp": "" } + ], + "response_metadata": { + "next_cursor": "", + "messages": [ + "" + ] + } } \ 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 index 86af2c368..0a3316f86 100644 --- a/json-logs/samples/api/slackLists.items.update.json +++ b/json-logs/samples/api/slackLists.items.update.json @@ -1,7 +1,12 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "" + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "response_metadata": { + "messages": [ + "" + ] + } } \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.update.json b/json-logs/samples/api/slackLists.update.json index 86af2c368..0a3316f86 100644 --- a/json-logs/samples/api/slackLists.update.json +++ b/json-logs/samples/api/slackLists.update.json @@ -1,7 +1,12 @@ { - "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "" + "ok": false, + "warning": "", + "error": "", + "needed": "", + "provided": "", + "response_metadata": { + "messages": [ + "" + ] + } } \ No newline at end of file diff --git a/json-logs/samples/api/usergroups.list.json b/json-logs/samples/api/usergroups.list.json index 382c2aa20..87172745d 100644 --- a/json-logs/samples/api/usergroups.list.json +++ b/json-logs/samples/api/usergroups.list.json @@ -27,8 +27,7 @@ }, "channel_count": 12345, "users": [ - "", - "U00000000" + "" ], "user_count": 12345, "is_section": false, 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 index 0e4feb9f0..99ea2c796 100644 --- 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 @@ -45,11 +45,7 @@ public static void tearDown() throws InterruptedException { 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) @@ -59,7 +55,6 @@ public void create() throws IOException, SlackApiException { } @Test - @Ignore public void create_async() throws Exception { SlackListsCreateResponse response = slack.methodsAsync().slackListsCreate(r -> r .token(botToken) @@ -69,7 +64,6 @@ public void create_async() throws Exception { } @Test - @Ignore public void create_with_todo_mode() throws IOException, SlackApiException { SlackListsCreateResponse response = slack.methods().slackListsCreate(r -> r .token(botToken) @@ -80,7 +74,6 @@ public void create_with_todo_mode() throws IOException, SlackApiException { } @Test - @Ignore public void update() throws IOException, SlackApiException { SlackListsUpdateResponse response = slack.methods().slackListsUpdate(r -> r .token(botToken) @@ -92,7 +85,6 @@ public void update() throws IOException, SlackApiException { } @Test - @Ignore public void update_async() throws Exception { SlackListsUpdateResponse response = slack.methodsAsync().slackListsUpdate(r -> r .token(botToken) @@ -104,7 +96,6 @@ public void update_async() throws Exception { } @Test - @Ignore public void accessSet() throws IOException, SlackApiException { SlackListsAccessSetResponse response = slack.methods().slackListsAccessSet(r -> r .token(botToken) @@ -115,7 +106,6 @@ public void accessSet() throws IOException, SlackApiException { } @Test - @Ignore public void accessSet_async() throws Exception { SlackListsAccessSetResponse response = slack.methodsAsync().slackListsAccessSet(r -> r .token(botToken) @@ -126,7 +116,6 @@ public void accessSet_async() throws Exception { } @Test - @Ignore public void accessDelete() throws IOException, SlackApiException { SlackListsAccessDeleteResponse response = slack.methods().slackListsAccessDelete(r -> r .token(botToken) @@ -136,7 +125,6 @@ public void accessDelete() throws IOException, SlackApiException { } @Test - @Ignore public void accessDelete_async() throws Exception { SlackListsAccessDeleteResponse response = slack.methodsAsync().slackListsAccessDelete(r -> r .token(botToken) @@ -146,7 +134,6 @@ public void accessDelete_async() throws Exception { } @Test - @Ignore public void downloadStart() throws IOException, SlackApiException { SlackListsDownloadStartResponse response = slack.methods().slackListsDownloadStart(r -> r .token(botToken) @@ -157,7 +144,6 @@ public void downloadStart() throws IOException, SlackApiException { } @Test - @Ignore public void downloadStart_async() throws Exception { SlackListsDownloadStartResponse response = slack.methodsAsync().slackListsDownloadStart(r -> r .token(botToken) @@ -168,7 +154,6 @@ public void downloadStart_async() throws Exception { } @Test - @Ignore public void downloadGet() throws IOException, SlackApiException { SlackListsDownloadGetResponse response = slack.methods().slackListsDownloadGet(r -> r .token(botToken) @@ -179,7 +164,6 @@ public void downloadGet() throws IOException, SlackApiException { } @Test - @Ignore public void downloadGet_async() throws Exception { SlackListsDownloadGetResponse response = slack.methodsAsync().slackListsDownloadGet(r -> r .token(botToken) @@ -190,7 +174,6 @@ public void downloadGet_async() throws Exception { } @Test - @Ignore public void itemsCreate() throws IOException, SlackApiException { SlackListsItemsCreateResponse response = slack.methods().slackListsItemsCreate(r -> r .token(botToken) @@ -202,7 +185,6 @@ public void itemsCreate() throws IOException, SlackApiException { } @Test - @Ignore public void itemsCreate_async() throws Exception { SlackListsItemsCreateResponse response = slack.methodsAsync().slackListsItemsCreate(r -> r .token(botToken) @@ -213,7 +195,6 @@ public void itemsCreate_async() throws Exception { } @Test - @Ignore public void itemsInfo() throws IOException, SlackApiException { SlackListsItemsInfoResponse response = slack.methods().slackListsItemsInfo(r -> r .token(botToken) @@ -225,7 +206,6 @@ public void itemsInfo() throws IOException, SlackApiException { } @Test - @Ignore public void itemsInfo_async() throws Exception { SlackListsItemsInfoResponse response = slack.methodsAsync().slackListsItemsInfo(r -> r .token(botToken) @@ -236,7 +216,6 @@ public void itemsInfo_async() throws Exception { } @Test - @Ignore public void itemsList() throws IOException, SlackApiException { SlackListsItemsListResponse response = slack.methods().slackListsItemsList(r -> r .token(botToken) @@ -249,7 +228,6 @@ public void itemsList() throws IOException, SlackApiException { } @Test - @Ignore public void itemsList_async() throws Exception { SlackListsItemsListResponse response = slack.methodsAsync().slackListsItemsList(r -> r .token(botToken) @@ -261,7 +239,6 @@ public void itemsList_async() throws Exception { } @Test - @Ignore public void itemsUpdate() throws IOException, SlackApiException { SlackListsItemsUpdateResponse response = slack.methods().slackListsItemsUpdate(r -> r .token(botToken) @@ -271,7 +248,6 @@ public void itemsUpdate() throws IOException, SlackApiException { } @Test - @Ignore public void itemsUpdate_async() throws Exception { SlackListsItemsUpdateResponse response = slack.methodsAsync().slackListsItemsUpdate(r -> r .token(botToken) @@ -281,7 +257,6 @@ public void itemsUpdate_async() throws Exception { } @Test - @Ignore public void itemsDelete() throws IOException, SlackApiException { SlackListsItemsDeleteResponse response = slack.methods().slackListsItemsDelete(r -> r .token(botToken) @@ -292,7 +267,6 @@ public void itemsDelete() throws IOException, SlackApiException { } @Test - @Ignore public void itemsDelete_async() throws Exception { SlackListsItemsDeleteResponse response = slack.methodsAsync().slackListsItemsDelete(r -> r .token(botToken) @@ -303,7 +277,6 @@ public void itemsDelete_async() throws Exception { } @Test - @Ignore public void itemsDeleteMultiple() throws IOException, SlackApiException { SlackListsItemsDeleteMultipleResponse response = slack.methods().slackListsItemsDeleteMultiple(r -> r .token(botToken) @@ -313,7 +286,6 @@ public void itemsDeleteMultiple() throws IOException, SlackApiException { } @Test - @Ignore public void itemsDeleteMultiple_async() throws Exception { SlackListsItemsDeleteMultipleResponse response = slack.methodsAsync().slackListsItemsDeleteMultiple(r -> r .token(botToken) From 3676b73cb137a64aaf63453722ff35fa86125fd3 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Mon, 1 Dec 2025 11:51:09 -0500 Subject: [PATCH 14/24] fix: json responses --- json-logs/samples/api/slackLists.create.json | 7 +- .../samples/api/slackLists.items.create.json | 9 ++- .../samples/api/slackLists.items.info.json | 81 +++++++++++++++++-- .../samples/api/slackLists.items.list.json | 7 +- .../SlackListsAccessDeleteResponse.java | 3 + .../SlackListsAccessSetResponse.java | 3 + .../slacklists/SlackListsCreateResponse.java | 3 + .../SlackListsDownloadGetResponse.java | 3 + .../SlackListsDownloadStartResponse.java | 3 + .../SlackListsItemsCreateResponse.java | 3 + ...SlackListsItemsDeleteMultipleResponse.java | 3 + .../SlackListsItemsDeleteResponse.java | 3 + .../SlackListsItemsInfoResponse.java | 3 + .../SlackListsItemsUpdateResponse.java | 3 + .../slacklists/SlackListsUpdateResponse.java | 3 + 15 files changed, 128 insertions(+), 9 deletions(-) diff --git a/json-logs/samples/api/slackLists.create.json b/json-logs/samples/api/slackLists.create.json index fd3b979eb..61ea45cd1 100644 --- a/json-logs/samples/api/slackLists.create.json +++ b/json-logs/samples/api/slackLists.create.json @@ -23,8 +23,8 @@ { "key": "", "name": "", - "is_primary_column": false, "type": "", + "is_primary_column": false, "id": "", "options": { "format": "", @@ -32,5 +32,10 @@ } } ] + }, + "response_metadata": { + "messages": [ + "" + ] } } \ 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 index 3e078b407..d97b2f599 100644 --- a/json-logs/samples/api/slackLists.items.create.json +++ b/json-logs/samples/api/slackLists.items.create.json @@ -7,11 +7,16 @@ "item": { "id": "", "list_id": "", - "date_created": 12345, + "date_created": 0, "created_by": "", "updated_by": "", "fields": [ - "" + { + "key": "", + "column_id": "", + "value": "", + "rich_text": [] + } ], "updated_timestamp": "" }, diff --git a/json-logs/samples/api/slackLists.items.info.json b/json-logs/samples/api/slackLists.items.info.json index d5620dbcc..60013b104 100644 --- a/json-logs/samples/api/slackLists.items.info.json +++ b/json-logs/samples/api/slackLists.items.info.json @@ -4,11 +4,82 @@ "error": "", "needed": "", "provided": "", - "list": {}, - "record": {}, - "subtasks": [ - "" - ], + "list": { + "id": "", + "created": 0, + "timestamp": 0, + "name": "", + "title": "", + "mimetype": "", + "filetype": "", + "pretty_type": "", + "user": "", + "user_team": "", + "editable": false, + "size": 0, + "mode": "", + "is_external": false, + "external_type": "", + "is_public": false, + "public_url_shared": false, + "display_as_bot": false, + "username": "", + "list_metadata": { + "schema": [], + "views": [], + "integrations": [], + "icon": "", + "description": "", + "description_blocks": [], + "is_trial": false, + "subtask_schema": [], + "creation_source": { + "type": "", + "reference_id": "" + }, + "todo_mode": false, + "default_view": "" + }, + "list_limits": { + "over_row_maximum": false, + "row_count_limit": 0, + "row_count": 0, + "archived_row_count": 0, + "over_column_maximum": false, + "column_count": 0, + "column_count_limit": 0, + "over_view_maximum": false, + "view_count": 0, + "view_count_limit": 0, + "max_attachments_per_cell": 0 + }, + "url_private": "", + "url_private_download": "", + "permalink": "", + "permalink_public": "", + "last_editor": "", + "list_csv_download_url": "", + "updated": 0, + "is_starred": false, + "skipped_shares": false, + "teams_shared_with": [], + "is_restricted_sharing_enabled": false, + "has_rich_preview": false, + "file_access": "", + "access": "", + "org_or_workspace_access": "", + "is_ai_suggested": false + }, + "record": { + "id": "", + "list_id": "", + "date_created": 0, + "created_by": "", + "updated_by": "", + "fields": [], + "updated_timestamp": "" + }, + "subtasks": [], "response_metadata": { "messages": [ "" diff --git a/json-logs/samples/api/slackLists.items.list.json b/json-logs/samples/api/slackLists.items.list.json index a42b3fb0c..59cd9180f 100644 --- a/json-logs/samples/api/slackLists.items.list.json +++ b/json-logs/samples/api/slackLists.items.list.json @@ -12,7 +12,12 @@ "created_by": "", "updated_by": "", "fields": [ - "" + { + "key": "", + "column_id": "", + "value": "", + "rich_text": [] + } ], "updated_timestamp": "" } 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 index 1dab71b10..b8aa08193 100644 --- 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 @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -17,4 +18,6 @@ public class SlackListsAccessDeleteResponse implements SlackApiTextResponse { private String needed; private String provided; private transient Map> httpResponseHeaders; + + private ResponseMetadata responseMetadata; } \ 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 index ca1d7bf46..d782041f4 100644 --- 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 @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -17,4 +18,6 @@ public class SlackListsAccessSetResponse implements SlackApiTextResponse { private String needed; private String provided; private transient Map> httpResponseHeaders; + + private ResponseMetadata responseMetadata; } \ 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 index 0ec5dc90b..0301b6a5c 100644 --- 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 @@ -5,6 +5,7 @@ import com.google.gson.annotations.SerializedName; import com.slack.api.model.list.ListMetadata; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -25,4 +26,6 @@ public class SlackListsCreateResponse implements SlackApiTextResponse { @SerializedName("list_metadata") private ListMetadata listMetadata; + + private ResponseMetadata responseMetadata; } \ 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 index f596a8362..fb90d6a67 100644 --- 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 @@ -4,6 +4,7 @@ import java.util.Map; import com.google.gson.annotations.SerializedName; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -23,4 +24,6 @@ public class SlackListsDownloadGetResponse implements SlackApiTextResponse { @SerializedName("download_url") private String downloadUrl; + + private ResponseMetadata responseMetadata; } \ 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 index dd0d631e6..abea5bdea 100644 --- 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 @@ -4,6 +4,7 @@ import java.util.Map; import com.google.gson.annotations.SerializedName; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -21,4 +22,6 @@ public class SlackListsDownloadStartResponse implements SlackApiTextResponse { @SerializedName("job_id") private String jobId; + + private ResponseMetadata responseMetadata; } \ 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 index 93f028fd8..65041b4a1 100644 --- 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 @@ -4,6 +4,7 @@ import java.util.Map; import com.slack.api.model.list.ListRecord; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -19,4 +20,6 @@ public class SlackListsItemsCreateResponse implements SlackApiTextResponse { private transient Map> httpResponseHeaders; private ListRecord item; + + private ResponseMetadata responseMetadata; } \ 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 index dc10b395d..5054599ea 100644 --- 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 @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -17,4 +18,6 @@ public class SlackListsItemsDeleteMultipleResponse implements SlackApiTextRespon private String needed; private String provided; private transient Map> httpResponseHeaders; + + private ResponseMetadata responseMetadata; } \ 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 index e75c95cc2..537b9c15f 100644 --- 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 @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -17,4 +18,6 @@ public class SlackListsItemsDeleteResponse implements SlackApiTextResponse { private String needed; private String provided; private transient Map> httpResponseHeaders; + + private ResponseMetadata responseMetadata; } \ 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 index 2c6160eda..1c60caae7 100644 --- 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 @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import com.slack.api.model.File; import com.slack.api.model.list.ListRecord; @@ -23,4 +24,6 @@ public class SlackListsItemsInfoResponse implements SlackApiTextResponse { private File list; private ListRecord record; private List subtasks; + + 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 index e2d703423..417ae1719 100644 --- 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 @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -17,4 +18,6 @@ public class SlackListsItemsUpdateResponse implements SlackApiTextResponse { private String needed; private String provided; private transient Map> httpResponseHeaders; + + private ResponseMetadata responseMetadata; } \ 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 index c26fe7e5e..e1347902a 100644 --- 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 @@ -3,6 +3,7 @@ import java.util.List; import java.util.Map; +import com.slack.api.model.ResponseMetadata; import com.slack.api.methods.SlackApiTextResponse; import lombok.Data; @@ -17,4 +18,6 @@ public class SlackListsUpdateResponse implements SlackApiTextResponse { private String needed; private String provided; private transient Map> httpResponseHeaders; + + private ResponseMetadata responseMetadata; } \ No newline at end of file From e62b28736ce631df7ebf5e306131640d6878e335 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Mon, 1 Dec 2025 13:55:59 -0500 Subject: [PATCH 15/24] fix: add serialized camel case names to requests --- .../request/slacklists/SlackListsAccessDeleteRequest.java | 4 ++++ .../request/slacklists/SlackListsAccessSetRequest.java | 5 +++++ .../methods/request/slacklists/SlackListsCreateRequest.java | 5 +++++ .../request/slacklists/SlackListsDownloadGetRequest.java | 5 ++++- .../request/slacklists/SlackListsDownloadStartRequest.java | 3 +++ .../request/slacklists/SlackListsItemsCreateRequest.java | 5 +++++ .../slacklists/SlackListsItemsDeleteMultipleRequest.java | 2 ++ .../request/slacklists/SlackListsItemsDeleteRequest.java | 2 ++ .../request/slacklists/SlackListsItemsInfoRequest.java | 3 +++ .../request/slacklists/SlackListsItemsListRequest.java | 4 +++- .../request/slacklists/SlackListsItemsUpdateRequest.java | 2 ++ .../methods/request/slacklists/SlackListsUpdateRequest.java | 3 +++ 12 files changed, 41 insertions(+), 2 deletions(-) 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 index 024993447..37a574fb4 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import java.util.List; import lombok.Builder; @@ -20,16 +21,19 @@ public class SlackListsAccessDeleteRequest implements SlackApiRequest { /** * Encoded ID of the List. */ + @SerializedName("list_id") private String listId; /** * List of channels you wish to update access for. Can only be used if user_ids is not provided. (Optional) */ + @SerializedName("channel_ids") private List channelIds; /** * List of users you wish to update access for. Can only be used if channel_ids is not provided. (Optional) */ + @SerializedName("user_ids") 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 index 35832012b..d69d5ef11 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import java.util.List; import lombok.Builder; @@ -20,21 +21,25 @@ public class SlackListsAccessSetRequest implements SlackApiRequest { /** * Encoded ID of the List. */ + @SerializedName("list_id") private String listId; /** * Desired level of access. */ + @SerializedName("access_level") private String accessLevel; /** * List of channels you wish to update access for. Can only be used if user_ids is not provided. (Optional) */ + @SerializedName("channel_ids") private List channelIds; /** * List of users you wish to update access for. Can only be used if channel_ids is not provided. (Optional) */ + @SerializedName("user_ids") 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 index ca1f296fb..c11e26e72 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import com.slack.api.model.block.RichTextBlock; @@ -29,6 +30,7 @@ public class SlackListsCreateRequest implements SlackApiRequest { /** * A rich text description of the List. (Optional) */ + @SerializedName("description_blocks") private List descriptionBlocks; /** @@ -39,15 +41,18 @@ public class SlackListsCreateRequest implements SlackApiRequest { /** * ID of the List to copy. (Optional) */ + @SerializedName("copy_from_list_id") private String copyFromListId; /** * Boolean indicating whether to include records when a List is copied. (Optional) */ + @SerializedName("include_copied_list_records") private Boolean includeCopiedListRecords; /** * Boolean indicating whether the List should be used to track todo tasks. (Optional) */ + @SerializedName("todo_mode") 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 index f3b1f63ea..929a279f6 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -19,10 +20,12 @@ public class SlackListsDownloadGetRequest implements SlackApiRequest { /** * ID of the List to export. */ + @SerializedName("list_id") private String listId; /** * The ID of the recently started job to export the List. */ - private String jobId; + @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/request/slacklists/SlackListsDownloadStartRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadStartRequest.java index 9c6a07d95..0c8fc302a 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -19,10 +20,12 @@ public class SlackListsDownloadStartRequest implements SlackApiRequest { /** * ID of the List to export. */ + @SerializedName("list_id") private String listId; /** * Include archived rows. (Optional) */ + @SerializedName("include_archived") 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 index c0cb3aa95..8faa03f5b 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import java.util.List; @@ -23,20 +24,24 @@ public class SlackListsItemsCreateRequest implements SlackApiRequest { /** * ID of the List containing the items. */ + @SerializedName("list_id") private String listId; /** * ID of the record to make a copy of. (Optional) */ + @SerializedName("duplicated_item_id") private String duplicatedItemId; /** * ID of the parent record for this subtask. (Optional) */ + @SerializedName("parent_item_id") private String parentItemId; /** * Initial item data. (Optional) */ + @SerializedName("initial_fields") 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 index 0b738847b..4f4a953a5 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import java.util.List; import lombok.Builder; @@ -20,6 +21,7 @@ public class SlackListsItemsDeleteMultipleRequest implements SlackApiRequest { /** * ID of the List containing the items. */ + @SerializedName("list_id") private String listId; /** 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 index 82ba6bf1f..83bcb1fb8 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -19,6 +20,7 @@ public class SlackListsItemsDeleteRequest implements SlackApiRequest { /** * ID of the List containing the items. */ + @SerializedName("list_id") private String listId; /** 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 index 1ac11a227..e0acbd95b 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -19,6 +20,7 @@ public class SlackListsItemsInfoRequest implements SlackApiRequest { /** * ID of the List containing the items. */ + @SerializedName("list_id") private String listId; /** @@ -29,6 +31,7 @@ public class SlackListsItemsInfoRequest implements SlackApiRequest { /** * Set to true to include is_subscribed data for the returned List row. (Optional) */ + @SerializedName("include_is_subscribed") @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 index 7d7f94dee..2bd3b0056 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -19,6 +20,7 @@ public class SlackListsItemsListRequest implements SlackApiRequest { /** * ID of the List. */ + @SerializedName("list_id") private String listId; @@ -36,4 +38,4 @@ public class SlackListsItemsListRequest implements SlackApiRequest { * 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 index 6f66355e9..757eaa36b 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import java.util.List; @@ -23,6 +24,7 @@ public class SlackListsItemsUpdateRequest implements SlackApiRequest { /** * ID of the List containing the items. */ + @SerializedName("list_id") private String listId; /** 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 index f35c8e0be..e8232c84c 100644 --- 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 @@ -1,5 +1,6 @@ package com.slack.api.methods.request.slacklists; +import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import com.slack.api.model.block.RichTextBlock; import java.util.List; @@ -31,10 +32,12 @@ public class SlackListsUpdateRequest implements SlackApiRequest { /** * A rich text description of the List. (Optional) */ + @SerializedName("description_blocks") private List descriptionBlocks; /** * Boolean indicating whether the List should be used to track todo tasks. (Optional) */ + @SerializedName("todo_mode") private Boolean todoMode; } \ No newline at end of file From e302750f8000746543475d949507768b57a9d22b Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Mon, 1 Dec 2025 15:16:57 -0500 Subject: [PATCH 16/24] fix: request form builder missing arg --- json-logs/samples/api/slackLists.items.list.json | 2 +- .../src/main/java/com/slack/api/methods/RequestFormBuilder.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/json-logs/samples/api/slackLists.items.list.json b/json-logs/samples/api/slackLists.items.list.json index 59cd9180f..832ab3052 100644 --- a/json-logs/samples/api/slackLists.items.list.json +++ b/json-logs/samples/api/slackLists.items.list.json @@ -8,7 +8,7 @@ { "id": "", "list_id": "", - "date_created": 12345, + "date_created": 0, "created_by": "", "updated_by": "", "fields": [ 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 7496e0c26..50b38489a 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 @@ -2881,6 +2881,7 @@ public static FormBody.Builder toForm(SlackListsItemsInfoRequest req) { public static FormBody.Builder toForm(SlackListsItemsListRequest req) { FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("list_id", req.getListId(), form); setIfNotNull("limit", req.getLimit(), form); setIfNotNull("cursor", req.getCursor(), form); setIfNotNull("archived", req.getArchived(), form); From b75fe5af2f4ab923f151e12a63ad986fdde55eff Mon Sep 17 00:00:00 2001 From: Maria Alejandra <104795114+srtaalej@users.noreply.github.com> Date: Wed, 3 Dec 2025 11:46:56 -0500 Subject: [PATCH 17/24] Update slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java Co-authored-by: Eden Zimbelman --- .../main/java/com/slack/api/methods/RequestFormBuilder.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 50b38489a..798bcd565 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 @@ -2792,7 +2792,8 @@ 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); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()); + form.add("user_ids", json); } if (req.getChannelIds() != null) { setIfNotNull("channel_ids", getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()), form); From 91447df5044061b313f74d8dd9eaeb80d5cbc154 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Wed, 3 Dec 2025 14:11:04 -0500 Subject: [PATCH 18/24] fix: integrated test for slacklist --- json-logs/samples/api/slackLists.create.json | 9 +- .../samples/api/slackLists.items.create.json | 7 +- .../samples/api/slackLists.items.info.json | 127 ++++- .../samples/api/slackLists.items.list.json | 46 +- .../slack/api/methods/AsyncMethodsClient.java | 105 ++-- .../java/com/slack/api/methods/Methods.java | 16 +- .../com/slack/api/methods/MethodsClient.java | 110 ++-- .../slack/api/methods/RequestFormBuilder.java | 48 +- .../methods/impl/AsyncMethodsClientImpl.java | 48 +- .../api/methods/impl/MethodsClientImpl.java | 48 +- .../SlackListsAccessDeleteRequest.java | 2 +- .../SlackListsAccessSetRequest.java | 2 +- .../SlackListsCreateRequest.java | 2 +- .../SlackListsDownloadGetRequest.java | 2 +- .../SlackListsDownloadStartRequest.java | 2 +- .../SlackListsItemsCreateRequest.java | 2 +- .../SlackListsItemsDeleteMultipleRequest.java | 2 +- .../SlackListsItemsDeleteRequest.java | 2 +- .../SlackListsItemsInfoRequest.java | 2 +- .../SlackListsItemsListRequest.java | 2 +- .../SlackListsItemsUpdateRequest.java | 2 +- .../SlackListsUpdateRequest.java | 2 +- .../SlackListsAccessDeleteResponse.java | 2 +- .../SlackListsAccessSetResponse.java | 2 +- .../SlackListsCreateResponse.java | 2 +- .../SlackListsDownloadGetResponse.java | 2 +- .../SlackListsDownloadStartResponse.java | 2 +- .../SlackListsItemsCreateResponse.java | 2 +- ...SlackListsItemsDeleteMultipleResponse.java | 2 +- .../SlackListsItemsDeleteResponse.java | 2 +- .../SlackListsItemsInfoResponse.java | 2 +- .../SlackListsItemsListResponse.java | 2 +- .../SlackListsItemsUpdateResponse.java | 2 +- .../SlackListsUpdateResponse.java | 2 +- .../methods/slacklists_Test.java | 539 ++++++++++-------- .../com/slack/api/model/list/ListLimits.java | 1 + 36 files changed, 671 insertions(+), 481 deletions(-) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsAccessDeleteRequest.java (94%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsAccessSetRequest.java (95%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsCreateRequest.java (96%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsDownloadGetRequest.java (93%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsDownloadStartRequest.java (93%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsItemsCreateRequest.java (95%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsItemsDeleteMultipleRequest.java (93%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsItemsDeleteRequest.java (93%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsItemsInfoRequest.java (94%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsItemsListRequest.java (94%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsItemsUpdateRequest.java (93%) rename slack-api-client/src/main/java/com/slack/api/methods/request/{slacklists => slack_lists}/SlackListsUpdateRequest.java (95%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsAccessDeleteResponse.java (90%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsAccessSetResponse.java (90%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsCreateResponse.java (93%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsDownloadGetResponse.java (92%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsDownloadStartResponse.java (92%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsItemsCreateResponse.java (91%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsItemsDeleteMultipleResponse.java (90%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsItemsDeleteResponse.java (90%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsItemsInfoResponse.java (92%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsItemsListResponse.java (91%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsItemsUpdateResponse.java (90%) rename slack-api-client/src/main/java/com/slack/api/methods/response/{slacklists => slack_lists}/SlackListsUpdateResponse.java (90%) diff --git a/json-logs/samples/api/slackLists.create.json b/json-logs/samples/api/slackLists.create.json index 61ea45cd1..25cd14766 100644 --- a/json-logs/samples/api/slackLists.create.json +++ b/json-logs/samples/api/slackLists.create.json @@ -15,7 +15,14 @@ "id": "", "options": { "format": "", - "show_member_name": false + "show_member_name": false, + "choices": [ + { + "value": "", + "label": "", + "color": "" + } + ] } } ], diff --git a/json-logs/samples/api/slackLists.items.create.json b/json-logs/samples/api/slackLists.items.create.json index d97b2f599..be7783520 100644 --- a/json-logs/samples/api/slackLists.items.create.json +++ b/json-logs/samples/api/slackLists.items.create.json @@ -7,7 +7,7 @@ "item": { "id": "", "list_id": "", - "date_created": 0, + "date_created": 12345, "created_by": "", "updated_by": "", "fields": [ @@ -15,7 +15,10 @@ "key": "", "column_id": "", "value": "", - "rich_text": [] + "rich_text": [ + "" + ], + "checkbox": false } ], "updated_timestamp": "" diff --git a/json-logs/samples/api/slackLists.items.info.json b/json-logs/samples/api/slackLists.items.info.json index 60013b104..0075f0d1d 100644 --- a/json-logs/samples/api/slackLists.items.info.json +++ b/json-logs/samples/api/slackLists.items.info.json @@ -6,8 +6,8 @@ "provided": "", "list": { "id": "", - "created": 0, - "timestamp": 0, + "created": 12345, + "timestamp": 12345, "name": "", "title": "", "mimetype": "", @@ -16,7 +16,7 @@ "user": "", "user_team": "", "editable": false, - "size": 0, + "size": 12345, "mode": "", "is_external": false, "external_type": "", @@ -25,14 +25,85 @@ "display_as_bot": false, "username": "", "list_metadata": { - "schema": [], - "views": [], - "integrations": [], + "schema": [ + { + "id": "", + "name": "", + "key": "", + "type": "", + "is_primary_column": false, + "options": { + "format": "", + "show_member_name": false, + "choices": [ + { + "value": "", + "label": "", + "color": "" + } + ] + } + } + ], + "views": [ + { + "id": "", + "name": "", + "type": "", + "is_locked": false, + "position": "1234567890", + "columns": [ + { + "visible": false, + "key": "", + "id": "", + "position": "1234567890" + } + ], + "date_created": 12345, + "created_by": "U00000000", + "stick_column_left": false, + "is_all_items_view": false, + "default_view_key": "", + "show_completed_items": false + } + ], + "integrations": [ + "" + ], "icon": "", "description": "", - "description_blocks": [], + "description_blocks": [ + { + "type": "", + "block_id": "", + "elements": [ + { + "type": "", + "elements": [ + { + "type": "", + "text": "" + } + ] + } + ] + } + ], "is_trial": false, - "subtask_schema": [], + "subtask_schema": [ + { + "id": "", + "name": "", + "key": "", + "type": "", + "is_primary_column": false, + "options": { + "format": "", + "show_member_name": false + } + } + ], "creation_source": { "type": "", "reference_id": "" @@ -42,16 +113,16 @@ }, "list_limits": { "over_row_maximum": false, - "row_count_limit": 0, - "row_count": 0, - "archived_row_count": 0, + "row_count_limit": 12345, + "row_count": 12345, + "archived_row_count": 12345, "over_column_maximum": false, - "column_count": 0, - "column_count_limit": 0, + "column_count": 12345, + "column_count_limit": 12345, "over_view_maximum": false, - "view_count": 0, - "view_count_limit": 0, - "max_attachments_per_cell": 0 + "view_count": 12345, + "view_count_limit": 12345, + "max_attachments_per_cell": 12345 }, "url_private": "", "url_private_download": "", @@ -59,10 +130,12 @@ "permalink_public": "", "last_editor": "", "list_csv_download_url": "", - "updated": 0, + "updated": 12345, "is_starred": false, "skipped_shares": false, - "teams_shared_with": [], + "teams_shared_with": [ + "" + ], "is_restricted_sharing_enabled": false, "has_rich_preview": false, "file_access": "", @@ -73,13 +146,23 @@ "record": { "id": "", "list_id": "", - "date_created": 0, + "date_created": 12345, "created_by": "", "updated_by": "", - "fields": [], - "updated_timestamp": "" + "fields": [ + { + "key": "", + "value": false, + "checkbox": false, + "column_id": "" + } + ], + "updated_timestamp": "", + "is_subscribed": false }, - "subtasks": [], + "subtasks": [ + "" + ], "response_metadata": { "messages": [ "" diff --git a/json-logs/samples/api/slackLists.items.list.json b/json-logs/samples/api/slackLists.items.list.json index 832ab3052..3332a8144 100644 --- a/json-logs/samples/api/slackLists.items.list.json +++ b/json-logs/samples/api/slackLists.items.list.json @@ -8,7 +8,7 @@ { "id": "", "list_id": "", - "date_created": 0, + "date_created": 12345, "created_by": "", "updated_by": "", "fields": [ @@ -16,7 +16,49 @@ "key": "", "column_id": "", "value": "", - "rich_text": [] + "rich_text": [ + { + "type": "", + "block_id": "", + "elements": [ + { + "type": "", + "elements": [ + { + "text": "", + "type": "" + } + ] + } + ] + } + ], + "checkbox": false, + "text": "" + }, + { + "key": "", + "value": false, + "checkbox": false, + "column_id": "", + "text": "", + "rich_text": [ + { + "type": "", + "block_id": "", + "elements": [ + { + "type": "", + "elements": [ + { + "text": "", + "type": "" + } + ] + } + ] + } + ] } ], "updated_timestamp": "" 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 bb16be54d..28e54149b 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,18 +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.slack_lists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slack_lists.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; @@ -235,18 +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.slack_lists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slack_lists.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; @@ -1407,37 +1407,10 @@ CompletableFuture CompletableFuture searchFiles(RequestConfigurator req); - // ------------------------------ - // stars - // ------------------------------ - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - CompletableFuture starsAdd(StarsAddRequest req); - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - CompletableFuture starsAdd(RequestConfigurator req); - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - CompletableFuture starsList(StarsListRequest req); - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - CompletableFuture starsList(RequestConfigurator req); - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - CompletableFuture starsRemove(StarsRemoveRequest req); - - @Deprecated - // 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); @@ -1486,6 +1459,34 @@ CompletableFuture CompletableFuture slackListsUpdate(RequestConfigurator req); + // ------------------------------ + // stars + // ------------------------------ + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + CompletableFuture starsAdd(StarsAddRequest req); + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + CompletableFuture starsAdd(RequestConfigurator req); + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + CompletableFuture starsList(StarsListRequest req); + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + CompletableFuture starsList(RequestConfigurator req); + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + CompletableFuture starsRemove(StarsRemoveRequest req); + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + CompletableFuture starsRemove(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 efa1ce658..5663555c5 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 @@ -647,14 +647,6 @@ private Methods() { public static final String SEARCH_FILES = "search.files"; public static final String SEARCH_MESSAGES = "search.messages"; - // ------------------------------ - // stars - // ------------------------------ - - 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 // ------------------------------ @@ -672,6 +664,14 @@ private Methods() { public static final String SLACKLISTS_ITEMS_UPDATE = "slackLists.items.update"; public static final String SLACKLISTS_UPDATE = "slackLists.update"; + // ------------------------------ + // stars + // ------------------------------ + + public static final String STARS_ADD = "stars.add"; + public static final String STARS_LIST = "stars.list"; + public static final String STARS_REMOVE = "stars.remove"; + // ------------------------------ // 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 63bbb70b5..586679cc8 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,18 +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.slack_lists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slack_lists.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; @@ -260,18 +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.slack_lists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slack_lists.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; @@ -2493,37 +2493,6 @@ SearchMessagesResponse searchMessages(RequestConfigurator req) throws IOException, SlackApiException; - // ------------------------------ - // stars - // ------------------------------ - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - StarsAddResponse starsAdd(StarsAddRequest req) throws IOException, SlackApiException; - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - StarsAddResponse starsAdd(RequestConfigurator req) - throws IOException, SlackApiException; - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - StarsListResponse starsList(StarsListRequest req) throws IOException, SlackApiException; - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - StarsListResponse starsList(RequestConfigurator req) - throws IOException, SlackApiException; - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - StarsRemoveResponse starsRemove(StarsRemoveRequest req) throws IOException, SlackApiException; - - @Deprecated - // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - StarsRemoveResponse starsRemove(RequestConfigurator req) - throws IOException, SlackApiException; - // ------------------------------ // slackLists // ------------------------------ @@ -2588,6 +2557,37 @@ SlackListsItemsUpdateResponse slackListsItemsUpdate(RequestConfigurator req) throws IOException, SlackApiException; + // ------------------------------ + // stars + // ------------------------------ + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + StarsAddResponse starsAdd(StarsAddRequest req) throws IOException, SlackApiException; + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + StarsAddResponse starsAdd(RequestConfigurator req) + throws IOException, SlackApiException; + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + StarsListResponse starsList(StarsListRequest req) throws IOException, SlackApiException; + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + StarsListResponse starsList(RequestConfigurator req) + throws IOException, SlackApiException; + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + StarsRemoveResponse starsRemove(StarsRemoveRequest req) throws IOException, SlackApiException; + + @Deprecated + // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + StarsRemoveResponse starsRemove(RequestConfigurator req) + throws IOException, SlackApiException; + // ------------------------------ // team // ------------------------------ 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 50b38489a..0e85c0e7c 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,18 +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.slack_lists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slack_lists.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; @@ -2792,10 +2792,12 @@ 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); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()); + form.add("user_ids", json); } if (req.getChannelIds() != null) { - setIfNotNull("channel_ids", getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()), form); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()); + form.add("channel_ids", json); } return form; } @@ -2805,10 +2807,12 @@ public static FormBody.Builder toForm(SlackListsAccessSetRequest req) { setIfNotNull("list_id", req.getListId(), form); setIfNotNull("access_level", req.getAccessLevel(), form); if (req.getUserIds() != null) { - setIfNotNull("user_ids", getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()), form); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()); + form.add("user_ids", json); } if (req.getChannelIds() != null) { - setIfNotNull("channel_ids", getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()), form); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()); + form.add("channel_ids", json); } return form; } @@ -2850,7 +2854,8 @@ public static FormBody.Builder toForm(SlackListsItemsCreateRequest req) { 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); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getInitialFields()); + form.add("intial_fields", json); } return form; } @@ -2866,7 +2871,8 @@ 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); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getIds()); + form.add("ids", json); } return form; } @@ -2892,7 +2898,8 @@ 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); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getCells()); + form.add("cells", json); } return form; } @@ -2902,7 +2909,8 @@ public static FormBody.Builder toForm(SlackListsUpdateRequest req) { setIfNotNull("id", req.getId(), form); setIfNotNull("name", req.getName(), form); if (req.getDescriptionBlocks() != null) { - setIfNotNull("description_blocks", getJsonWithGsonAnonymInnerClassHandling(req.getDescriptionBlocks()), form); + String json = getJsonWithGsonAnonymInnerClassHandling(req.getDescriptionBlocks()); + form.add("description_blocks", json); } setIfNotNull("todo_mode", req.getTodoMode(), form); return 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 db120fe01..b80068da9 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,18 +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.slack_lists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slack_lists.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; @@ -239,18 +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.slack_lists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slack_lists.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; 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 33155b83e..b817ea6e2 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,18 +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.slack_lists.SlackListsAccessDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsAccessSetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadGetRequest; +import com.slack.api.methods.request.slack_lists.SlackListsDownloadStartRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsCreateRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsDeleteMultipleRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsInfoRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsListRequest; +import com.slack.api.methods.request.slack_lists.SlackListsItemsUpdateRequest; +import com.slack.api.methods.request.slack_lists.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; @@ -263,18 +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.slack_lists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slack_lists.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; 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/slack_lists/SlackListsAccessDeleteRequest.java similarity index 94% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessDeleteRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessDeleteRequest.java index 37a574fb4..f7222eda9 100644 --- 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/slack_lists/SlackListsAccessDeleteRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsAccessSetRequest.java similarity index 95% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsAccessSetRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessSetRequest.java index d69d5ef11..f192ac0d3 100644 --- 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/slack_lists/SlackListsAccessSetRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsCreateRequest.java similarity index 96% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsCreateRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java index c11e26e72..d8b0bed2e 100644 --- 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/slack_lists/SlackListsCreateRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsDownloadGetRequest.java similarity index 93% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadGetRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadGetRequest.java index 929a279f6..6ddb13382 100644 --- 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/slack_lists/SlackListsDownloadGetRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsDownloadStartRequest.java similarity index 93% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsDownloadStartRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadStartRequest.java index 0c8fc302a..12daf08da 100644 --- 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/slack_lists/SlackListsDownloadStartRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsItemsCreateRequest.java similarity index 95% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsCreateRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java index 8faa03f5b..4500610f4 100644 --- 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/slack_lists/SlackListsItemsCreateRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsItemsDeleteMultipleRequest.java similarity index 93% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteMultipleRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteMultipleRequest.java index 4f4a953a5..5971b4867 100644 --- 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/slack_lists/SlackListsItemsDeleteMultipleRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsItemsDeleteRequest.java similarity index 93% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsDeleteRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteRequest.java index 83bcb1fb8..871dba18e 100644 --- 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/slack_lists/SlackListsItemsDeleteRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsItemsInfoRequest.java similarity index 94% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsInfoRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java index e0acbd95b..63125dcea 100644 --- 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/slack_lists/SlackListsItemsInfoRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsItemsListRequest.java similarity index 94% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsListRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsListRequest.java index 2bd3b0056..e6f63bf99 100644 --- 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/slack_lists/SlackListsItemsListRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsItemsUpdateRequest.java similarity index 93% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsItemsUpdateRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsUpdateRequest.java index 757eaa36b..e96219644 100644 --- 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/slack_lists/SlackListsItemsUpdateRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsUpdateRequest.java similarity index 95% rename from slack-api-client/src/main/java/com/slack/api/methods/request/slacklists/SlackListsUpdateRequest.java rename to slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsUpdateRequest.java index e8232c84c..31d640c9c 100644 --- 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/slack_lists/SlackListsUpdateRequest.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.request.slacklists; +package com.slack.api.methods.request.slack_lists; import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; 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/slack_lists/SlackListsAccessDeleteResponse.java similarity index 90% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessDeleteResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsAccessDeleteResponse.java index b8aa08193..946a0228d 100644 --- 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/slack_lists/SlackListsAccessDeleteResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsAccessSetResponse.java similarity index 90% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsAccessSetResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsAccessSetResponse.java index d782041f4..bd20f8d3c 100644 --- 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/slack_lists/SlackListsAccessSetResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsCreateResponse.java similarity index 93% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsCreateResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsCreateResponse.java index 0301b6a5c..7f0ee8c12 100644 --- 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/slack_lists/SlackListsCreateResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsDownloadGetResponse.java similarity index 92% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadGetResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsDownloadGetResponse.java index fb90d6a67..d05f44e7a 100644 --- 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/slack_lists/SlackListsDownloadGetResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsDownloadStartResponse.java similarity index 92% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsDownloadStartResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsDownloadStartResponse.java index abea5bdea..8a3fee978 100644 --- 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/slack_lists/SlackListsDownloadStartResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsItemsCreateResponse.java similarity index 91% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsCreateResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsItemsCreateResponse.java index 65041b4a1..fd3332550 100644 --- 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/slack_lists/SlackListsItemsCreateResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsItemsDeleteMultipleResponse.java similarity index 90% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteMultipleResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsItemsDeleteMultipleResponse.java index 5054599ea..9a96ca487 100644 --- 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/slack_lists/SlackListsItemsDeleteMultipleResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsItemsDeleteResponse.java similarity index 90% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsDeleteResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsItemsDeleteResponse.java index 537b9c15f..a0a8f926f 100644 --- 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/slack_lists/SlackListsItemsDeleteResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsItemsInfoResponse.java similarity index 92% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsInfoResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsItemsInfoResponse.java index 1c60caae7..fe3de95e5 100644 --- 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/slack_lists/SlackListsItemsInfoResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsItemsListResponse.java similarity index 91% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsListResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsItemsListResponse.java index 8371f295a..5271bc20a 100644 --- 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/slack_lists/SlackListsItemsListResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsItemsUpdateResponse.java similarity index 90% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsItemsUpdateResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsItemsUpdateResponse.java index 417ae1719..b2a8cb0ea 100644 --- 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/slack_lists/SlackListsItemsUpdateResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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/slack_lists/SlackListsUpdateResponse.java similarity index 90% rename from slack-api-client/src/main/java/com/slack/api/methods/response/slacklists/SlackListsUpdateResponse.java rename to slack-api-client/src/main/java/com/slack/api/methods/response/slack_lists/SlackListsUpdateResponse.java index e1347902a..07f97ce56 100644 --- 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/slack_lists/SlackListsUpdateResponse.java @@ -1,4 +1,4 @@ -package com.slack.api.methods.response.slacklists; +package com.slack.api.methods.response.slack_lists; import java.util.List; import java.util.Map; 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 index 99ea2c796..cf70ab244 100644 --- 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 @@ -2,27 +2,31 @@ 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 com.slack.api.methods.response.slack_lists.SlackListsAccessDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsAccessSetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadGetResponse; +import com.slack.api.methods.response.slack_lists.SlackListsDownloadStartResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsCreateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsDeleteMultipleResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsInfoResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsListResponse; +import com.slack.api.methods.response.slack_lists.SlackListsItemsUpdateResponse; +import com.slack.api.methods.response.slack_lists.SlackListsUpdateResponse; +import com.slack.api.model.block.RichTextBlock; +import com.slack.api.model.block.element.RichTextSectionElement; 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 java.util.HashMap; +import java.util.List; +import java.util.Map; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.assertThat; @@ -33,265 +37,306 @@ 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); - - @Test - 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)); + @BeforeClass + public static void setUp() throws Exception { + SlackTestConfig.initializeRawJSONDataFiles("slackLists.*"); } - @Test - 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)); + @AfterClass + public static void tearDown() throws InterruptedException { + SlackTestConfig.awaitCompletion(testConfig); } - @Test - 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)); - } + String botToken = System.getenv(Constants.SLACK_SDK_TEST_BOT_TOKEN); + String channelId = System.getenv(Constants.SLACK_SDK_TEST_SHARED_CHANNEL_ID); @Test - public void update() throws IOException, SlackApiException { - SlackListsUpdateResponse response = slack.methods().slackListsUpdate(r -> r + public void fullSlackListsWorkflow() throws IOException, SlackApiException { + // create list + log.info("Creating list..."); + SlackListsCreateResponse createResponse = slack.methods().slackListsCreate(r -> r .token(botToken) - .id("F1234567") - .name("Updated Backlog") - .todoMode(true)); - assertThat(response.getError(), is(nullValue())); - assertThat(response.isOk(), is(true)); + .name("Test List - SlackLists API") + .descriptionBlocks(List.of(RichTextBlock.builder() + .elements(List.of(RichTextSectionElement.builder() + .elements(List.of(RichTextSectionElement.Text.builder() + .text("List to keep track of tasks!") + .build())) + .build())) + .build())) + .schema(List.of( + Map.of( + "key", "task_name", + "name", "Task Name", + "type", "text", + "is_primary_column", true), + Map.of( + "key", "due_date", + "name", "Due Date", + "type", "date"), + Map.of( + "key", "status", + "name", "Status", + "type", "select", + "options", Map.of( + "choices", List.of( + Map.of("value", "not_started", "label", "Not Started", "color", "red"), + Map.of("value", "in_progress", "label", "In Progress", "color", "yellow"), + Map.of("value", "completed", "label", "Completed", "color", "green")))), + Map.of( + "key", "assignee", + "name", "Assignee", + "type", "user")))); + + log.info("List created: {}", createResponse); + assertThat(createResponse.getError(), is(nullValue())); + assertThat(createResponse.isOk(), is(true)); + + String listId = createResponse.getListId(); + assertThat(listId, is(notNullValue())); + + Map keyToId = new HashMap<>(); + if (createResponse.getListMetadata() != null + && createResponse.getListMetadata().getSchema() != null) { + createResponse.getListMetadata().getSchema().forEach(col -> { + keyToId.put(col.getKey(), col.getId()); + }); + } + String taskNameColId = keyToId.get("task_name"); + log.info("Column IDs: {}", keyToId); + + // set access + log.info("Setting access..."); + SlackListsAccessSetResponse accessSetResponse = slack.methods().slackListsAccessSet(r -> r + .token(botToken) + .listId(listId) + .accessLevel("write") + .channelIds(List.of(channelId))); + log.info("Access set: {}", accessSetResponse); + assertThat(accessSetResponse.getError(), is(nullValue())); + assertThat(accessSetResponse.isOk(), is(true)); + + try { + // create an item + log.info("Creating item..."); + SlackListsItemsCreateResponse createItemResponse = slack.methods().slackListsItemsCreate(r -> r + .token(botToken) + .listId(listId) + .initialFields(List.of(Map.of( + "column_id", taskNameColId, + "rich_text", List.of(Map.of( + "type", "rich_text", + "elements", List.of(Map.of( + "type", "rich_text_section", + "elements", List.of(Map.of( + "type", "text", + "text", "Test task item")))))))))); + log.info("Item created: {}", createItemResponse); + assertThat(createItemResponse.getError(), is(nullValue())); + assertThat(createItemResponse.isOk(), is(true)); + assertThat(createItemResponse.getItem(), is(notNullValue())); + + String itemId = createItemResponse.getItem().getId(); + assertThat(itemId, is(notNullValue())); + + // get item info + log.info("Getting item info..."); + SlackListsItemsInfoResponse itemInfoResponse = slack.methods().slackListsItemsInfo(r -> r + .token(botToken) + .listId(listId) + .id(itemId) + .includeIsSubscribed(true)); + log.info("Item info retrieved: {}", itemInfoResponse); + assertThat(itemInfoResponse.getError(), is(nullValue())); + assertThat(itemInfoResponse.isOk(), is(true)); + + // update item + log.info("Updating item..."); + SlackListsItemsUpdateResponse updateItemResponse = slack.methods().slackListsItemsUpdate(r -> r + .token(botToken) + .listId(listId) + .cells(List.of(Map.of( + "row_id", itemId, + "column_id", taskNameColId, + "rich_text", List.of(Map.of( + "type", "rich_text", + "elements", List.of(Map.of( + "type", "rich_text_section", + "elements", List.of(Map.of( + "type", "text", + "text", "new task name")))))))))); + log.info("Item updated: {}", updateItemResponse); + assertThat(updateItemResponse.getError(), is(nullValue())); + assertThat(updateItemResponse.isOk(), is(true)); + + // list items + log.info("Listing items..."); + SlackListsItemsListResponse listItemsResponse = slack.methods().slackListsItemsList(r -> r + .token(botToken) + .listId(listId) + .limit(50)); + log.info("Items listed: {}", listItemsResponse); + assertThat(listItemsResponse.getError(), is(nullValue())); + assertThat(listItemsResponse.isOk(), is(true)); + assertThat(listItemsResponse.getItems(), is(notNullValue())); + + // start download + log.info("Starting download..."); + SlackListsDownloadStartResponse downloadStartResponse = slack.methods().slackListsDownloadStart(r -> r + .token(botToken) + .listId(listId) + .includeArchived(false)); + log.info("Download started: {}", downloadStartResponse); + assertThat(downloadStartResponse.getError(), is(nullValue())); + assertThat(downloadStartResponse.isOk(), is(true)); + + String jobId = downloadStartResponse.getJobId(); + if (jobId != null) { + // get download status + log.info("Getting download status..."); + SlackListsDownloadGetResponse downloadGetResponse = slack.methods().slackListsDownloadGet(r -> r + .token(botToken) + .listId(listId) + .jobId(jobId)); + log.info("Download status retrieved: {}", downloadGetResponse); + assertThat(downloadGetResponse.getError(), is(nullValue())); + assertThat(downloadGetResponse.isOk(), is(true)); + } + + // delete the item + log.info("Deleting item..."); + SlackListsItemsDeleteResponse deleteItemResponse = slack.methods().slackListsItemsDelete(r -> r + .token(botToken) + .listId(listId) + .id(itemId)); + log.info("Item deleted: {}", deleteItemResponse); + assertThat(deleteItemResponse.getError(), is(nullValue())); + assertThat(deleteItemResponse.isOk(), is(true)); + + // update list + log.info("Updating list..."); + SlackListsUpdateResponse updateResponse = slack.methods().slackListsUpdate(r -> r + .token(botToken) + .id(listId) + .name("Updated Test List") + .todoMode(true)); + log.info("List updated: {}", updateResponse); + assertThat(updateResponse.getError(), is(nullValue())); + assertThat(updateResponse.isOk(), is(true)); + + // delete access + log.info("Deleting access..."); + SlackListsAccessDeleteResponse accessDeleteResponse = slack.methods().slackListsAccessDelete(r -> r + .token(botToken) + .listId(listId) + .channelIds(List.of(channelId))); + log.info("Access removed: {}", accessDeleteResponse); + assertThat(accessDeleteResponse.getError(), is(nullValue())); + assertThat(accessDeleteResponse.isOk(), is(true)); + + } finally { + log.info("Slack Lists API workflow completed for list: {}", listId); + } } @Test - public void update_async() throws Exception { - SlackListsUpdateResponse response = slack.methodsAsync().slackListsUpdate(r -> r + public void fullSlackListsWorkflow_async() throws Exception { + // 1. Create a list + log.info("Creating list (async)..."); + SlackListsCreateResponse createResponse = slack.methodsAsync().slackListsCreate(r -> r .token(botToken) - .id("F1234567") - .name("Updated Backlog") + .name("Test List Async - SlackLists API") .todoMode(true)).get(); - assertThat(response.getError(), is(nullValue())); - assertThat(response.isOk(), is(true)); - } - - @Test - 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 - 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)); + log.info("List created: {}", createResponse); + assertThat(createResponse.getError(), is(nullValue())); + assertThat(createResponse.isOk(), is(true)); + + String listId = createResponse.getListId(); + assertThat(listId, is(notNullValue())); + + try { + // create an item + log.info("Creating item (async)..."); + SlackListsItemsCreateResponse createItemResponse = slack.methodsAsync().slackListsItemsCreate(r -> r + .token(botToken) + .listId(listId)).get(); + log.info("Item created: {}", createItemResponse); + assertThat(createItemResponse.getError(), is(nullValue())); + assertThat(createItemResponse.isOk(), is(true)); + + if (createItemResponse.getItem() != null) { + String itemId = createItemResponse.getItem().getId(); + + // get item info + log.info("Getting item info (async)..."); + SlackListsItemsInfoResponse itemInfoResponse = slack.methodsAsync().slackListsItemsInfo(r -> r + .token(botToken) + .listId(listId) + .id(itemId)).get(); + log.info("Item info: {}", itemInfoResponse); + assertThat(itemInfoResponse.getError(), is(nullValue())); + assertThat(itemInfoResponse.isOk(), is(true)); + + // list items + log.info("Listing items (async)..."); + SlackListsItemsListResponse listItemsResponse = slack.methodsAsync().slackListsItemsList(r -> r + .token(botToken) + .listId(listId) + .limit(50)).get(); + log.info("Items listed: {}", listItemsResponse); + assertThat(listItemsResponse.getError(), is(nullValue())); + assertThat(listItemsResponse.isOk(), is(true)); + + // delete the item + log.info("Deleting item (async)..."); + SlackListsItemsDeleteResponse deleteItemResponse = slack.methodsAsync().slackListsItemsDelete(r -> r + .token(botToken) + .listId(listId) + .id(itemId)).get(); + log.info("Item deleted: {}", deleteItemResponse); + assertThat(deleteItemResponse.getError(), is(nullValue())); + assertThat(deleteItemResponse.isOk(), is(true)); + } + + } finally { + log.info("Async Slack Lists API workflow completed for list: {}", listId); + } } @Test - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - public void itemsList_async() throws Exception { - SlackListsItemsListResponse response = slack.methodsAsync().slackListsItemsList(r -> r + public void itemsDeleteMultiple() throws IOException, SlackApiException { + // create a list and the items to delete + SlackListsCreateResponse createResponse = slack.methods().slackListsCreate(r -> r .token(botToken) - .limit(100) - .archived(false)).get(); - assertThat(response.getError(), is(nullValue())); - assertThat(response.isOk(), is(true)); - assertThat(response.getItems(), is(notNullValue())); - } + .name("Test Delete Multiple")); + assertThat(createResponse.isOk(), is(true)); - @Test - 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)); - } + String listId = createResponse.getListId(); - @Test - public void itemsUpdate_async() throws Exception { - SlackListsItemsUpdateResponse response = slack.methodsAsync().slackListsItemsUpdate(r -> r + // make multiple items + SlackListsItemsCreateResponse item1 = slack.methods().slackListsItemsCreate(r -> r .token(botToken) - .listId("F1234567")).get(); - assertThat(response.getError(), is(nullValue())); - assertThat(response.isOk(), is(true)); - } - - @Test - public void itemsDelete() throws IOException, SlackApiException { - SlackListsItemsDeleteResponse response = slack.methods().slackListsItemsDelete(r -> r + .listId(listId)); + SlackListsItemsCreateResponse item2 = slack.methods().slackListsItemsCreate(r -> r .token(botToken) - .listId("F1234567") - .id("Rec018ALE9718")); - assertThat(response.getError(), is(nullValue())); - assertThat(response.isOk(), is(true)); - } + .listId(listId)); - @Test - 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)); - } + assertThat(item1.isOk(), is(true)); + assertThat(item2.isOk(), is(true)); - @Test - 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)); - } + String itemId1 = item1.getItem().getId(); + String itemId2 = item2.getItem().getId(); - @Test - public void itemsDeleteMultiple_async() throws Exception { - SlackListsItemsDeleteMultipleResponse response = slack.methodsAsync().slackListsItemsDeleteMultiple(r -> r + // delete multiple items + log.info("Deleting multiple items..."); + SlackListsItemsDeleteMultipleResponse deleteMultipleResponse = slack.methods().slackListsItemsDeleteMultiple(r -> r .token(botToken) - .listId("F1234567")).get(); - assertThat(response.getError(), is(nullValue())); - assertThat(response.isOk(), is(true)); + .listId(listId) + .ids(List.of(itemId1, itemId2))); + log.info("Multiple items deleted: {}", deleteMultipleResponse); + assertThat(deleteMultipleResponse.getError(), is(nullValue())); + assertThat(deleteMultipleResponse.isOk(), is(true)); } } diff --git a/slack-api-model/src/main/java/com/slack/api/model/list/ListLimits.java b/slack-api-model/src/main/java/com/slack/api/model/list/ListLimits.java index 66102380d..5b75d4b40 100644 --- a/slack-api-model/src/main/java/com/slack/api/model/list/ListLimits.java +++ b/slack-api-model/src/main/java/com/slack/api/model/list/ListLimits.java @@ -13,6 +13,7 @@ public class ListLimits { private Boolean overRowMaximum; private Integer rowCountLimit; private Integer rowCount; + private Integer archivedRowCount; private Boolean overColumnMaximum; private Integer columnCount; private Integer columnCountLimit; From 70121ae72a8e9685aa354d394058e57d4ba60f11 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Thu, 4 Dec 2025 11:56:24 -0500 Subject: [PATCH 19/24] fix: type error in slacklistsitemsinfo text block --- .../samples/api/slackLists.items.create.json | 15 +- .../samples/api/slackLists.items.info.json | 18 +- .../api/methods/SlackListsTest.java | 160 +++++++++--------- .../methods/slacklists_Test.java | 53 +----- .../api/model/list/ListColumnOptions.java | 2 + 5 files changed, 122 insertions(+), 126 deletions(-) diff --git a/json-logs/samples/api/slackLists.items.create.json b/json-logs/samples/api/slackLists.items.create.json index be7783520..29aa71acc 100644 --- a/json-logs/samples/api/slackLists.items.create.json +++ b/json-logs/samples/api/slackLists.items.create.json @@ -16,7 +16,20 @@ "column_id": "", "value": "", "rich_text": [ - "" + { + "type": "", + "elements": [ + { + "type": "", + "elements": [ + { + "type": "", + "text": "" + } + ] + } + ] + } ], "checkbox": false } diff --git a/json-logs/samples/api/slackLists.items.info.json b/json-logs/samples/api/slackLists.items.info.json index 0075f0d1d..896e7e91f 100644 --- a/json-logs/samples/api/slackLists.items.info.json +++ b/json-logs/samples/api/slackLists.items.info.json @@ -161,7 +161,23 @@ "is_subscribed": false }, "subtasks": [ - "" + { + "id": "", + "list_id": "", + "date_created": 12345, + "created_by": "", + "updated_by": "", + "fields": [ + { + "key": "", + "value": false, + "checkbox": false, + "column_id": "" + } + ], + "updated_timestamp": "", + "is_subscribed": false + } ], "response_metadata": { "messages": [ 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 index f117f320b..d55327091 100644 --- 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 @@ -9,8 +9,8 @@ import org.junit.Test; import util.MockSlackApiServer; +import java.util.List; import java.util.Arrays; -import java.util.HashMap; import java.util.Map; import static org.hamcrest.CoreMatchers.is; @@ -37,44 +37,44 @@ public void tearDown() throws Exception { // 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)); + .name("Test List - SlackLists API") + .descriptionBlocks(List.of(RichTextBlock.builder() + .elements(List.of(RichTextSectionElement.builder() + .elements(List.of(RichTextSectionElement.Text.builder() + .text("List to keep track of tasks!") + .build())) + .build())) + .build())) + .schema(List.of( + Map.of( + "key", "task_name", + "name", "Task Name", + "type", "text", + "is_primary_column", true), + Map.of( + "key", "due_date", + "name", "Due Date", + "type", "date"), + Map.of( + "key", "status", + "name", "Status", + "type", "select", + "options", Map.of( + "choices", List.of( + Map.of("value", "not_started", "label", "Not Started", "color", "red"), + Map.of("value", "in_progress", "label", "In Progress", "color", "yellow"), + Map.of("value", "completed", "label", "Completed", "color", "green")))), + Map.of( + "key", "assignee", + "name", "Assignee", + "type", "user")))) + .isOk(), is(true)); } @Test public void slackListsCreate_async() throws Exception { - assertThat(slack.methodsAsync(ValidToken).slackListsCreate(r -> r.name("Backlog")) + assertThat(slack.methodsAsync(ValidToken).slackListsCreate(r -> r.name("Test List Async - SlackLists API")) .get().isOk(), is(true)); } @@ -84,7 +84,7 @@ public void slackListsAccessSet() throws Exception { assertThat(slack.methods(ValidToken).slackListsAccessSet(r -> r .listId("F1234567") .accessLevel("write") - .userIds(Arrays.asList("U09G4FG3TRN"))) + .channelIds(List.of("C1234567"))) .isOk(), is(true)); } @@ -93,21 +93,25 @@ public void slackListsAccessSet_async() throws Exception { assertThat(slack.methodsAsync(ValidToken).slackListsAccessSet(r -> r .listId("F1234567") .accessLevel("write") - .userIds(Arrays.asList("U09G4FG3TRN"))) + .channelIds(List.of("C1234567"))) .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)); + .listId("F1234567") + .initialFields(List.of(Map.of( + "column_id", "C1234567", + "rich_text", List.of(Map.of( + "type", "rich_text", + "elements", List.of(Map.of( + "type", "rich_text_section", + "elements", List.of(Map.of( + "type", "text", + "text", "Test task item")))))))))) + .isOk(), is(true)); } @Test @@ -117,7 +121,7 @@ public void slackListsItemsCreate_async() throws Exception { .get().isOk(), is(true)); } - // Delete specific list items + // delete specific list items @Test public void slackListsItemsDelete() throws Exception { assertThat(slack.methods(ValidToken).slackListsItemsDelete(r -> r @@ -138,7 +142,7 @@ public void slackListsItemsDelete_async() throws Exception { public void slackListsItemsDeleteMultiple() throws Exception { assertThat(slack.methods(ValidToken).slackListsItemsDeleteMultiple(r -> r .listId("F1234567") - .ids(Arrays.asList("Rec018ALE9720", "Rec018ALE9721"))) + .ids(List.of("Rec018ALE9720", "Rec018ALE9721"))) .isOk(), is(true)); } @@ -146,7 +150,7 @@ public void slackListsItemsDeleteMultiple() throws Exception { public void slackListsItemsDeleteMultiple_async() throws Exception { assertThat(slack.methodsAsync(ValidToken).slackListsItemsDeleteMultiple(r -> r .listId("F1234567") - .ids(Arrays.asList("Rec018ALE9720", "Rec018ALE9721"))) + .ids(List.of("Rec1234567890", "Rec1234567891"))) .get().isOk(), is(true)); } @@ -155,7 +159,7 @@ public void slackListsItemsDeleteMultiple_async() throws Exception { public void slackListsItemsInfo() throws Exception { assertThat(slack.methods(ValidToken).slackListsItemsInfo(r -> r .listId("F1234567") - .id("Rec018ALE9718") + .id("Rec1234567890") .includeIsSubscribed(true)) .isOk(), is(true)); } @@ -164,7 +168,7 @@ public void slackListsItemsInfo() throws Exception { public void slackListsItemsInfo_async() throws Exception { assertThat(slack.methodsAsync(ValidToken).slackListsItemsInfo(r -> r .listId("F1234567") - .id("Rec018ALE9718") + .id("Rec1234567890") .includeIsSubscribed(true)) .get().isOk(), is(true)); } @@ -224,27 +228,35 @@ public void slackListsDownloadGet_async() throws Exception { // 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))) + .listId("F1234567") + .cells(List.of(Map.of( + "row_id", "Rec1234567890", + "column_id", "C1234567", + "rich_text", List.of(Map.of( + "type", "rich_text", + "elements", List.of(Map.of( + "type", "rich_text_section", + "elements", List.of(Map.of( + "type", "text", + "text", "new task name")))))))))) .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))) + .cells(List.of(Map.of( + "row_id", "Rec1234567890", + "column_id", "C1234567", + "rich_text", List.of(Map.of( + "type", "rich_text", + "elements", List.of(Map.of( + "type", "rich_text_section", + "elements", List.of(Map.of( + "type", "text", + "text", "new task name")))))))))) .get().isOk(), is(true)); } @@ -253,9 +265,7 @@ public void slackListsItemsUpdate_async() throws Exception { 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)) + .name("Test List - UPDATED")) .isOk(), is(true)); } @@ -263,9 +273,7 @@ public void slackListsUpdate() throws Exception { 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)) + .name("Test List - UPDATED")) .get().isOk(), is(true)); } @@ -274,7 +282,7 @@ public void slackListsUpdate_async() throws Exception { public void slackListsAccessDelete() throws Exception { assertThat(slack.methods(ValidToken).slackListsAccessDelete(r -> r .listId("F1234567") - .userIds(Arrays.asList("U09G4FG3TRN"))) + .userIds(List.of("U1234567"))) .isOk(), is(true)); } @@ -282,16 +290,16 @@ public void slackListsAccessDelete() throws Exception { public void slackListsAccessDelete_async() throws Exception { assertThat(slack.methodsAsync(ValidToken).slackListsAccessDelete(r -> r .listId("F1234567") - .userIds(Arrays.asList("U09G4FG3TRN"))) + .userIds(List.of("U1234567"))) .get().isOk(), is(true)); } // Helper methods private RichTextBlock createRichTextBlock(String text) { return RichTextBlock.builder() - .elements(Arrays.asList( + .elements(List.of( RichTextSectionElement.builder() - .elements(Arrays.asList( + .elements(List.of( RichTextSectionElement.Text.builder() .text(text) .build() @@ -300,12 +308,4 @@ private RichTextBlock createRichTextBlock(String text) { )) .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; - } -} +} \ No newline at end of file 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 index cf70ab244..123987594 100644 --- 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 @@ -53,7 +53,6 @@ public static void tearDown() throws InterruptedException { @Test public void fullSlackListsWorkflow() throws IOException, SlackApiException { // create list - log.info("Creating list..."); SlackListsCreateResponse createResponse = slack.methods().slackListsCreate(r -> r .token(botToken) .name("Test List - SlackLists API") @@ -88,7 +87,6 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { "name", "Assignee", "type", "user")))); - log.info("List created: {}", createResponse); assertThat(createResponse.getError(), is(nullValue())); assertThat(createResponse.isOk(), is(true)); @@ -102,23 +100,19 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { keyToId.put(col.getKey(), col.getId()); }); } - String taskNameColId = keyToId.get("task_name"); - log.info("Column IDs: {}", keyToId); - + String taskNameColId = keyToId.get("task_name"); + // set access - log.info("Setting access..."); - SlackListsAccessSetResponse accessSetResponse = slack.methods().slackListsAccessSet(r -> r - .token(botToken) - .listId(listId) - .accessLevel("write") - .channelIds(List.of(channelId))); - log.info("Access set: {}", accessSetResponse); - assertThat(accessSetResponse.getError(), is(nullValue())); - assertThat(accessSetResponse.isOk(), is(true)); + SlackListsAccessSetResponse accessSetResponse = slack.methods().slackListsAccessSet(r -> r + .token(botToken) + .listId(listId) + .accessLevel("write") + .channelIds(List.of(channelId))); + assertThat(accessSetResponse.getError(), is(nullValue())); + assertThat(accessSetResponse.isOk(), is(true)); try { // create an item - log.info("Creating item..."); SlackListsItemsCreateResponse createItemResponse = slack.methods().slackListsItemsCreate(r -> r .token(botToken) .listId(listId) @@ -131,7 +125,6 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { "elements", List.of(Map.of( "type", "text", "text", "Test task item")))))))))); - log.info("Item created: {}", createItemResponse); assertThat(createItemResponse.getError(), is(nullValue())); assertThat(createItemResponse.isOk(), is(true)); assertThat(createItemResponse.getItem(), is(notNullValue())); @@ -140,18 +133,15 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { assertThat(itemId, is(notNullValue())); // get item info - log.info("Getting item info..."); SlackListsItemsInfoResponse itemInfoResponse = slack.methods().slackListsItemsInfo(r -> r .token(botToken) .listId(listId) .id(itemId) .includeIsSubscribed(true)); - log.info("Item info retrieved: {}", itemInfoResponse); assertThat(itemInfoResponse.getError(), is(nullValue())); assertThat(itemInfoResponse.isOk(), is(true)); // update item - log.info("Updating item..."); SlackListsItemsUpdateResponse updateItemResponse = slack.methods().slackListsItemsUpdate(r -> r .token(botToken) .listId(listId) @@ -165,72 +155,59 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { "elements", List.of(Map.of( "type", "text", "text", "new task name")))))))))); - log.info("Item updated: {}", updateItemResponse); assertThat(updateItemResponse.getError(), is(nullValue())); assertThat(updateItemResponse.isOk(), is(true)); // list items - log.info("Listing items..."); SlackListsItemsListResponse listItemsResponse = slack.methods().slackListsItemsList(r -> r .token(botToken) .listId(listId) .limit(50)); - log.info("Items listed: {}", listItemsResponse); assertThat(listItemsResponse.getError(), is(nullValue())); assertThat(listItemsResponse.isOk(), is(true)); assertThat(listItemsResponse.getItems(), is(notNullValue())); // start download - log.info("Starting download..."); SlackListsDownloadStartResponse downloadStartResponse = slack.methods().slackListsDownloadStart(r -> r .token(botToken) .listId(listId) .includeArchived(false)); - log.info("Download started: {}", downloadStartResponse); assertThat(downloadStartResponse.getError(), is(nullValue())); assertThat(downloadStartResponse.isOk(), is(true)); String jobId = downloadStartResponse.getJobId(); if (jobId != null) { // get download status - log.info("Getting download status..."); SlackListsDownloadGetResponse downloadGetResponse = slack.methods().slackListsDownloadGet(r -> r .token(botToken) .listId(listId) .jobId(jobId)); - log.info("Download status retrieved: {}", downloadGetResponse); assertThat(downloadGetResponse.getError(), is(nullValue())); assertThat(downloadGetResponse.isOk(), is(true)); } // delete the item - log.info("Deleting item..."); SlackListsItemsDeleteResponse deleteItemResponse = slack.methods().slackListsItemsDelete(r -> r .token(botToken) .listId(listId) .id(itemId)); - log.info("Item deleted: {}", deleteItemResponse); assertThat(deleteItemResponse.getError(), is(nullValue())); assertThat(deleteItemResponse.isOk(), is(true)); // update list - log.info("Updating list..."); SlackListsUpdateResponse updateResponse = slack.methods().slackListsUpdate(r -> r .token(botToken) .id(listId) .name("Updated Test List") .todoMode(true)); - log.info("List updated: {}", updateResponse); assertThat(updateResponse.getError(), is(nullValue())); assertThat(updateResponse.isOk(), is(true)); // delete access - log.info("Deleting access..."); SlackListsAccessDeleteResponse accessDeleteResponse = slack.methods().slackListsAccessDelete(r -> r .token(botToken) .listId(listId) .channelIds(List.of(channelId))); - log.info("Access removed: {}", accessDeleteResponse); assertThat(accessDeleteResponse.getError(), is(nullValue())); assertThat(accessDeleteResponse.isOk(), is(true)); @@ -242,13 +219,11 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { @Test public void fullSlackListsWorkflow_async() throws Exception { // 1. Create a list - log.info("Creating list (async)..."); SlackListsCreateResponse createResponse = slack.methodsAsync().slackListsCreate(r -> r .token(botToken) .name("Test List Async - SlackLists API") .todoMode(true)).get(); - log.info("List created: {}", createResponse); assertThat(createResponse.getError(), is(nullValue())); assertThat(createResponse.isOk(), is(true)); @@ -257,11 +232,9 @@ public void fullSlackListsWorkflow_async() throws Exception { try { // create an item - log.info("Creating item (async)..."); SlackListsItemsCreateResponse createItemResponse = slack.methodsAsync().slackListsItemsCreate(r -> r .token(botToken) .listId(listId)).get(); - log.info("Item created: {}", createItemResponse); assertThat(createItemResponse.getError(), is(nullValue())); assertThat(createItemResponse.isOk(), is(true)); @@ -269,32 +242,26 @@ public void fullSlackListsWorkflow_async() throws Exception { String itemId = createItemResponse.getItem().getId(); // get item info - log.info("Getting item info (async)..."); SlackListsItemsInfoResponse itemInfoResponse = slack.methodsAsync().slackListsItemsInfo(r -> r .token(botToken) .listId(listId) .id(itemId)).get(); - log.info("Item info: {}", itemInfoResponse); assertThat(itemInfoResponse.getError(), is(nullValue())); assertThat(itemInfoResponse.isOk(), is(true)); // list items - log.info("Listing items (async)..."); SlackListsItemsListResponse listItemsResponse = slack.methodsAsync().slackListsItemsList(r -> r .token(botToken) .listId(listId) .limit(50)).get(); - log.info("Items listed: {}", listItemsResponse); assertThat(listItemsResponse.getError(), is(nullValue())); assertThat(listItemsResponse.isOk(), is(true)); // delete the item - log.info("Deleting item (async)..."); SlackListsItemsDeleteResponse deleteItemResponse = slack.methodsAsync().slackListsItemsDelete(r -> r .token(botToken) .listId(listId) .id(itemId)).get(); - log.info("Item deleted: {}", deleteItemResponse); assertThat(deleteItemResponse.getError(), is(nullValue())); assertThat(deleteItemResponse.isOk(), is(true)); } @@ -329,12 +296,10 @@ public void itemsDeleteMultiple() throws IOException, SlackApiException { String itemId2 = item2.getItem().getId(); // delete multiple items - log.info("Deleting multiple items..."); SlackListsItemsDeleteMultipleResponse deleteMultipleResponse = slack.methods().slackListsItemsDeleteMultiple(r -> r .token(botToken) .listId(listId) .ids(List.of(itemId1, itemId2))); - log.info("Multiple items deleted: {}", deleteMultipleResponse); assertThat(deleteMultipleResponse.getError(), is(nullValue())); assertThat(deleteMultipleResponse.isOk(), is(true)); } diff --git a/slack-api-model/src/main/java/com/slack/api/model/list/ListColumnOptions.java b/slack-api-model/src/main/java/com/slack/api/model/list/ListColumnOptions.java index 60c0d8f83..f6b02c129 100644 --- a/slack-api-model/src/main/java/com/slack/api/model/list/ListColumnOptions.java +++ b/slack-api-model/src/main/java/com/slack/api/model/list/ListColumnOptions.java @@ -40,6 +40,8 @@ public class ListColumnOptions { @AllArgsConstructor public static class DefaultValue { private List select; + private List user; + private List channel; } @Data From c2f6846b507b740a33e8421fc49efc838db3bd1d Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Thu, 4 Dec 2025 12:49:26 -0500 Subject: [PATCH 20/24] fix: jdk 1.8 build errors --- .../api/methods/SlackListsTest.java | 172 +++++++++++------- .../methods/slacklists_Test.java | 136 +++++++++----- 2 files changed, 193 insertions(+), 115 deletions(-) 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 index d55327091..b7cd88fde 100644 --- 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 @@ -9,8 +9,8 @@ import org.junit.Test; import util.MockSlackApiServer; -import java.util.List; import java.util.Arrays; +import java.util.HashMap; import java.util.Map; import static org.hamcrest.CoreMatchers.is; @@ -37,38 +37,56 @@ public void tearDown() throws Exception { // Create a new list @Test public void slackListsCreate() throws Exception { + Map taskNameCol = new HashMap<>(); + taskNameCol.put("key", "task_name"); + taskNameCol.put("name", "Task Name"); + taskNameCol.put("type", "text"); + taskNameCol.put("is_primary_column", true); + + Map dueDateCol = new HashMap<>(); + dueDateCol.put("key", "due_date"); + dueDateCol.put("name", "Due Date"); + dueDateCol.put("type", "date"); + + Map choice1 = new HashMap<>(); + choice1.put("value", "not_started"); + choice1.put("label", "Not Started"); + choice1.put("color", "red"); + + Map choice2 = new HashMap<>(); + choice2.put("value", "in_progress"); + choice2.put("label", "In Progress"); + choice2.put("color", "yellow"); + + Map choice3 = new HashMap<>(); + choice3.put("value", "completed"); + choice3.put("label", "Completed"); + choice3.put("color", "green"); + + Map options = new HashMap<>(); + options.put("choices", Arrays.asList(choice1, choice2, choice3)); + + Map statusCol = new HashMap<>(); + statusCol.put("key", "status"); + statusCol.put("name", "Status"); + statusCol.put("type", "select"); + statusCol.put("options", options); + + Map assigneeCol = new HashMap<>(); + assigneeCol.put("key", "assignee"); + assigneeCol.put("name", "Assignee"); + assigneeCol.put("type", "user"); + assertThat(slack.methods(ValidToken).slackListsCreate(r -> r .name("Test List - SlackLists API") - .descriptionBlocks(List.of(RichTextBlock.builder() - .elements(List.of(RichTextSectionElement.builder() - .elements(List.of(RichTextSectionElement.Text.builder() + .descriptionBlocks(Arrays.asList(RichTextBlock.builder() + .elements(Arrays.asList(RichTextSectionElement.builder() + .elements(Arrays.asList(RichTextSectionElement.Text.builder() .text("List to keep track of tasks!") .build())) .build())) .build())) - .schema(List.of( - Map.of( - "key", "task_name", - "name", "Task Name", - "type", "text", - "is_primary_column", true), - Map.of( - "key", "due_date", - "name", "Due Date", - "type", "date"), - Map.of( - "key", "status", - "name", "Status", - "type", "select", - "options", Map.of( - "choices", List.of( - Map.of("value", "not_started", "label", "Not Started", "color", "red"), - Map.of("value", "in_progress", "label", "In Progress", "color", "yellow"), - Map.of("value", "completed", "label", "Completed", "color", "green")))), - Map.of( - "key", "assignee", - "name", "Assignee", - "type", "user")))) + .schema(Arrays.asList(taskNameCol, dueDateCol, statusCol, assigneeCol))) .isOk(), is(true)); } @@ -84,7 +102,7 @@ public void slackListsAccessSet() throws Exception { assertThat(slack.methods(ValidToken).slackListsAccessSet(r -> r .listId("F1234567") .accessLevel("write") - .channelIds(List.of("C1234567"))) + .channelIds(Arrays.asList("C1234567"))) .isOk(), is(true)); } @@ -93,24 +111,32 @@ public void slackListsAccessSet_async() throws Exception { assertThat(slack.methodsAsync(ValidToken).slackListsAccessSet(r -> r .listId("F1234567") .accessLevel("write") - .channelIds(List.of("C1234567"))) + .channelIds(Arrays.asList("C1234567"))) .get().isOk(), is(true)); } // Create several list items @Test public void slackListsItemsCreate() throws Exception { + Map textElement = new HashMap<>(); + textElement.put("type", "text"); + textElement.put("text", "Test task item"); + + Map richTextSection = new HashMap<>(); + richTextSection.put("type", "rich_text_section"); + richTextSection.put("elements", Arrays.asList(textElement)); + + Map richText = new HashMap<>(); + richText.put("type", "rich_text"); + richText.put("elements", Arrays.asList(richTextSection)); + + Map field = new HashMap<>(); + field.put("column_id", "C1234567"); + field.put("rich_text", Arrays.asList(richText)); + assertThat(slack.methods(ValidToken).slackListsItemsCreate(r -> r .listId("F1234567") - .initialFields(List.of(Map.of( - "column_id", "C1234567", - "rich_text", List.of(Map.of( - "type", "rich_text", - "elements", List.of(Map.of( - "type", "rich_text_section", - "elements", List.of(Map.of( - "type", "text", - "text", "Test task item")))))))))) + .initialFields(Arrays.asList(field))) .isOk(), is(true)); } @@ -142,7 +168,7 @@ public void slackListsItemsDelete_async() throws Exception { public void slackListsItemsDeleteMultiple() throws Exception { assertThat(slack.methods(ValidToken).slackListsItemsDeleteMultiple(r -> r .listId("F1234567") - .ids(List.of("Rec018ALE9720", "Rec018ALE9721"))) + .ids(Arrays.asList("Rec018ALE9720", "Rec018ALE9721"))) .isOk(), is(true)); } @@ -150,7 +176,7 @@ public void slackListsItemsDeleteMultiple() throws Exception { public void slackListsItemsDeleteMultiple_async() throws Exception { assertThat(slack.methodsAsync(ValidToken).slackListsItemsDeleteMultiple(r -> r .listId("F1234567") - .ids(List.of("Rec1234567890", "Rec1234567891"))) + .ids(Arrays.asList("Rec1234567890", "Rec1234567891"))) .get().isOk(), is(true)); } @@ -228,35 +254,51 @@ public void slackListsDownloadGet_async() throws Exception { // Update an existing list item @Test public void slackListsItemsUpdate() throws Exception { + Map textElement = new HashMap<>(); + textElement.put("type", "text"); + textElement.put("text", "new task name"); + + Map richTextSection = new HashMap<>(); + richTextSection.put("type", "rich_text_section"); + richTextSection.put("elements", Arrays.asList(textElement)); + + Map richText = new HashMap<>(); + richText.put("type", "rich_text"); + richText.put("elements", Arrays.asList(richTextSection)); + + Map cell = new HashMap<>(); + cell.put("row_id", "Rec1234567890"); + cell.put("column_id", "C1234567"); + cell.put("rich_text", Arrays.asList(richText)); + assertThat(slack.methods(ValidToken).slackListsItemsUpdate(r -> r .listId("F1234567") - .cells(List.of(Map.of( - "row_id", "Rec1234567890", - "column_id", "C1234567", - "rich_text", List.of(Map.of( - "type", "rich_text", - "elements", List.of(Map.of( - "type", "rich_text_section", - "elements", List.of(Map.of( - "type", "text", - "text", "new task name")))))))))) + .cells(Arrays.asList(cell))) .isOk(), is(true)); } @Test public void slackListsItemsUpdate_async() throws Exception { + Map textElement = new HashMap<>(); + textElement.put("type", "text"); + textElement.put("text", "new task name"); + + Map richTextSection = new HashMap<>(); + richTextSection.put("type", "rich_text_section"); + richTextSection.put("elements", Arrays.asList(textElement)); + + Map richText = new HashMap<>(); + richText.put("type", "rich_text"); + richText.put("elements", Arrays.asList(richTextSection)); + + Map cell = new HashMap<>(); + cell.put("row_id", "Rec1234567890"); + cell.put("column_id", "C1234567"); + cell.put("rich_text", Arrays.asList(richText)); + assertThat(slack.methodsAsync(ValidToken).slackListsItemsUpdate(r -> r .listId("F1234567") - .cells(List.of(Map.of( - "row_id", "Rec1234567890", - "column_id", "C1234567", - "rich_text", List.of(Map.of( - "type", "rich_text", - "elements", List.of(Map.of( - "type", "rich_text_section", - "elements", List.of(Map.of( - "type", "text", - "text", "new task name")))))))))) + .cells(Arrays.asList(cell))) .get().isOk(), is(true)); } @@ -282,7 +324,7 @@ public void slackListsUpdate_async() throws Exception { public void slackListsAccessDelete() throws Exception { assertThat(slack.methods(ValidToken).slackListsAccessDelete(r -> r .listId("F1234567") - .userIds(List.of("U1234567"))) + .userIds(Arrays.asList("U1234567"))) .isOk(), is(true)); } @@ -290,16 +332,16 @@ public void slackListsAccessDelete() throws Exception { public void slackListsAccessDelete_async() throws Exception { assertThat(slack.methodsAsync(ValidToken).slackListsAccessDelete(r -> r .listId("F1234567") - .userIds(List.of("U1234567"))) + .userIds(Arrays.asList("U1234567"))) .get().isOk(), is(true)); } // Helper methods private RichTextBlock createRichTextBlock(String text) { return RichTextBlock.builder() - .elements(List.of( + .elements(Arrays.asList( RichTextSectionElement.builder() - .elements(List.of( + .elements(Arrays.asList( RichTextSectionElement.Text.builder() .text(text) .build() @@ -308,4 +350,4 @@ private RichTextBlock createRichTextBlock(String text) { )) .build(); } -} \ No newline at end of file +} 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 index 123987594..55e9d209d 100644 --- 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 @@ -24,8 +24,8 @@ import org.junit.Test; import java.io.IOException; +import java.util.Arrays; import java.util.HashMap; -import java.util.List; import java.util.Map; import static org.hamcrest.CoreMatchers.*; @@ -52,40 +52,59 @@ public static void tearDown() throws InterruptedException { @Test public void fullSlackListsWorkflow() throws IOException, SlackApiException { + // Build schema columns + Map taskNameCol = new HashMap<>(); + taskNameCol.put("key", "task_name"); + taskNameCol.put("name", "Task Name"); + taskNameCol.put("type", "text"); + taskNameCol.put("is_primary_column", true); + + Map dueDateCol = new HashMap<>(); + dueDateCol.put("key", "due_date"); + dueDateCol.put("name", "Due Date"); + dueDateCol.put("type", "date"); + + Map choice1 = new HashMap<>(); + choice1.put("value", "not_started"); + choice1.put("label", "Not Started"); + choice1.put("color", "red"); + + Map choice2 = new HashMap<>(); + choice2.put("value", "in_progress"); + choice2.put("label", "In Progress"); + choice2.put("color", "yellow"); + + Map choice3 = new HashMap<>(); + choice3.put("value", "completed"); + choice3.put("label", "Completed"); + choice3.put("color", "green"); + + Map options = new HashMap<>(); + options.put("choices", Arrays.asList(choice1, choice2, choice3)); + + Map statusCol = new HashMap<>(); + statusCol.put("key", "status"); + statusCol.put("name", "Status"); + statusCol.put("type", "select"); + statusCol.put("options", options); + + Map assigneeCol = new HashMap<>(); + assigneeCol.put("key", "assignee"); + assigneeCol.put("name", "Assignee"); + assigneeCol.put("type", "user"); + // create list SlackListsCreateResponse createResponse = slack.methods().slackListsCreate(r -> r .token(botToken) .name("Test List - SlackLists API") - .descriptionBlocks(List.of(RichTextBlock.builder() - .elements(List.of(RichTextSectionElement.builder() - .elements(List.of(RichTextSectionElement.Text.builder() + .descriptionBlocks(Arrays.asList(RichTextBlock.builder() + .elements(Arrays.asList(RichTextSectionElement.builder() + .elements(Arrays.asList(RichTextSectionElement.Text.builder() .text("List to keep track of tasks!") .build())) .build())) .build())) - .schema(List.of( - Map.of( - "key", "task_name", - "name", "Task Name", - "type", "text", - "is_primary_column", true), - Map.of( - "key", "due_date", - "name", "Due Date", - "type", "date"), - Map.of( - "key", "status", - "name", "Status", - "type", "select", - "options", Map.of( - "choices", List.of( - Map.of("value", "not_started", "label", "Not Started", "color", "red"), - Map.of("value", "in_progress", "label", "In Progress", "color", "yellow"), - Map.of("value", "completed", "label", "Completed", "color", "green")))), - Map.of( - "key", "assignee", - "name", "Assignee", - "type", "user")))); + .schema(Arrays.asList(taskNameCol, dueDateCol, statusCol, assigneeCol))); assertThat(createResponse.getError(), is(nullValue())); assertThat(createResponse.isOk(), is(true)); @@ -107,24 +126,33 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { .token(botToken) .listId(listId) .accessLevel("write") - .channelIds(List.of(channelId))); + .channelIds(Arrays.asList(channelId))); assertThat(accessSetResponse.getError(), is(nullValue())); assertThat(accessSetResponse.isOk(), is(true)); try { + // Build initial fields for item creation + Map textElement = new HashMap<>(); + textElement.put("type", "text"); + textElement.put("text", "Test task item"); + + Map richTextSection = new HashMap<>(); + richTextSection.put("type", "rich_text_section"); + richTextSection.put("elements", Arrays.asList(textElement)); + + Map richText = new HashMap<>(); + richText.put("type", "rich_text"); + richText.put("elements", Arrays.asList(richTextSection)); + + Map field = new HashMap<>(); + field.put("column_id", taskNameColId); + field.put("rich_text", Arrays.asList(richText)); + // create an item SlackListsItemsCreateResponse createItemResponse = slack.methods().slackListsItemsCreate(r -> r .token(botToken) .listId(listId) - .initialFields(List.of(Map.of( - "column_id", taskNameColId, - "rich_text", List.of(Map.of( - "type", "rich_text", - "elements", List.of(Map.of( - "type", "rich_text_section", - "elements", List.of(Map.of( - "type", "text", - "text", "Test task item")))))))))); + .initialFields(Arrays.asList(field))); assertThat(createItemResponse.getError(), is(nullValue())); assertThat(createItemResponse.isOk(), is(true)); assertThat(createItemResponse.getItem(), is(notNullValue())); @@ -141,20 +169,29 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { assertThat(itemInfoResponse.getError(), is(nullValue())); assertThat(itemInfoResponse.isOk(), is(true)); + // Build update cell + Map updateTextElement = new HashMap<>(); + updateTextElement.put("type", "text"); + updateTextElement.put("text", "new task name"); + + Map updateRichTextSection = new HashMap<>(); + updateRichTextSection.put("type", "rich_text_section"); + updateRichTextSection.put("elements", Arrays.asList(updateTextElement)); + + Map updateRichText = new HashMap<>(); + updateRichText.put("type", "rich_text"); + updateRichText.put("elements", Arrays.asList(updateRichTextSection)); + + Map cell = new HashMap<>(); + cell.put("row_id", itemId); + cell.put("column_id", taskNameColId); + cell.put("rich_text", Arrays.asList(updateRichText)); + // update item SlackListsItemsUpdateResponse updateItemResponse = slack.methods().slackListsItemsUpdate(r -> r .token(botToken) .listId(listId) - .cells(List.of(Map.of( - "row_id", itemId, - "column_id", taskNameColId, - "rich_text", List.of(Map.of( - "type", "rich_text", - "elements", List.of(Map.of( - "type", "rich_text_section", - "elements", List.of(Map.of( - "type", "text", - "text", "new task name")))))))))); + .cells(Arrays.asList(cell))); assertThat(updateItemResponse.getError(), is(nullValue())); assertThat(updateItemResponse.isOk(), is(true)); @@ -207,7 +244,7 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { SlackListsAccessDeleteResponse accessDeleteResponse = slack.methods().slackListsAccessDelete(r -> r .token(botToken) .listId(listId) - .channelIds(List.of(channelId))); + .channelIds(Arrays.asList(channelId))); assertThat(accessDeleteResponse.getError(), is(nullValue())); assertThat(accessDeleteResponse.isOk(), is(true)); @@ -299,10 +336,9 @@ public void itemsDeleteMultiple() throws IOException, SlackApiException { SlackListsItemsDeleteMultipleResponse deleteMultipleResponse = slack.methods().slackListsItemsDeleteMultiple(r -> r .token(botToken) .listId(listId) - .ids(List.of(itemId1, itemId2))); + .ids(Arrays.asList(itemId1, itemId2))); assertThat(deleteMultipleResponse.getError(), is(nullValue())); assertThat(deleteMultipleResponse.isOk(), is(true)); } } - From cec73db5e182f0db9e3819f1c25b491e3db416b2 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Fri, 5 Dec 2025 14:48:00 -0500 Subject: [PATCH 21/24] fix: json data recorder missing warning field --- .../samples/api/slackLists.access.delete.json | 10 +++++----- .../samples/api/slackLists.access.set.json | 10 +++++----- json-logs/samples/api/slackLists.create.json | 17 ++++++----------- .../samples/api/slackLists.download.get.json | 10 +++++----- .../samples/api/slackLists.download.start.json | 10 +++++----- .../samples/api/slackLists.items.create.json | 10 +++++----- .../samples/api/slackLists.items.delete.json | 4 ++-- .../api/slackLists.items.deleteMultiple.json | 10 +++++----- .../samples/api/slackLists.items.info.json | 10 +++++----- .../samples/api/slackLists.items.list.json | 10 +++++----- .../samples/api/slackLists.items.update.json | 10 +++++----- json-logs/samples/api/slackLists.update.json | 10 +++++----- .../JsonDataRecorder.java | 1 + 13 files changed, 59 insertions(+), 63 deletions(-) diff --git a/json-logs/samples/api/slackLists.access.delete.json b/json-logs/samples/api/slackLists.access.delete.json index 0a3316f86..72cc2c92b 100644 --- a/json-logs/samples/api/slackLists.access.delete.json +++ b/json-logs/samples/api/slackLists.access.delete.json @@ -1,12 +1,12 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "response_metadata": { "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ 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 index 0a3316f86..72cc2c92b 100644 --- a/json-logs/samples/api/slackLists.access.set.json +++ b/json-logs/samples/api/slackLists.access.set.json @@ -1,12 +1,12 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "response_metadata": { "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.create.json b/json-logs/samples/api/slackLists.create.json index 25cd14766..01b3f7e29 100644 --- a/json-logs/samples/api/slackLists.create.json +++ b/json-logs/samples/api/slackLists.create.json @@ -1,10 +1,6 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", - "list_id": "", + "list_id": "F00000000", "list_metadata": { "schema": [ { @@ -30,8 +26,8 @@ { "key": "", "name": "", - "type": "", "is_primary_column": false, + "type": "", "id": "", "options": { "format": "", @@ -40,9 +36,8 @@ } ] }, - "response_metadata": { - "messages": [ - "" - ] - } + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ 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 index b0b451a94..4877eb764 100644 --- a/json-logs/samples/api/slackLists.download.get.json +++ b/json-logs/samples/api/slackLists.download.get.json @@ -1,14 +1,14 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "status": "", "download_url": "", "response_metadata": { "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ 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 index 323c5c1f1..b37f453f8 100644 --- a/json-logs/samples/api/slackLists.download.start.json +++ b/json-logs/samples/api/slackLists.download.start.json @@ -1,13 +1,13 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "job_id": "", "response_metadata": { "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ 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 index 29aa71acc..0a315ed3b 100644 --- a/json-logs/samples/api/slackLists.items.create.json +++ b/json-logs/samples/api/slackLists.items.create.json @@ -1,9 +1,5 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "item": { "id": "", "list_id": "", @@ -40,5 +36,9 @@ "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ 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 index a3bbf2ef6..6b6ba1fe1 100644 --- a/json-logs/samples/api/slackLists.items.delete.json +++ b/json-logs/samples/api/slackLists.items.delete.json @@ -1,7 +1,7 @@ { "ok": false, - "warning": "", "error": "", "needed": "", - "provided": "" + "provided": "", + "warning": "" } \ 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 index 0a3316f86..72cc2c92b 100644 --- a/json-logs/samples/api/slackLists.items.deleteMultiple.json +++ b/json-logs/samples/api/slackLists.items.deleteMultiple.json @@ -1,12 +1,12 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "response_metadata": { "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ 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 index 896e7e91f..e2b99c577 100644 --- a/json-logs/samples/api/slackLists.items.info.json +++ b/json-logs/samples/api/slackLists.items.info.json @@ -1,9 +1,5 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "list": { "id": "", "created": 12345, @@ -183,5 +179,9 @@ "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ 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 index 3332a8144..f2353c81c 100644 --- a/json-logs/samples/api/slackLists.items.list.json +++ b/json-logs/samples/api/slackLists.items.list.json @@ -1,9 +1,5 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "items": [ { "id": "", @@ -69,5 +65,9 @@ "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ 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 index 0a3316f86..72cc2c92b 100644 --- a/json-logs/samples/api/slackLists.items.update.json +++ b/json-logs/samples/api/slackLists.items.update.json @@ -1,12 +1,12 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "response_metadata": { "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ No newline at end of file diff --git a/json-logs/samples/api/slackLists.update.json b/json-logs/samples/api/slackLists.update.json index 0a3316f86..72cc2c92b 100644 --- a/json-logs/samples/api/slackLists.update.json +++ b/json-logs/samples/api/slackLists.update.json @@ -1,12 +1,12 @@ { "ok": false, - "warning": "", - "error": "", - "needed": "", - "provided": "", "response_metadata": { "messages": [ "" ] - } + }, + "error": "", + "needed": "", + "provided": "", + "warning": "" } \ No newline at end of file diff --git a/slack-api-client/src/test/java/util/sample_json_generation/JsonDataRecorder.java b/slack-api-client/src/test/java/util/sample_json_generation/JsonDataRecorder.java index 83d174abc..e6b3bf824 100644 --- a/slack-api-client/src/test/java/util/sample_json_generation/JsonDataRecorder.java +++ b/slack-api-client/src/test/java/util/sample_json_generation/JsonDataRecorder.java @@ -275,6 +275,7 @@ private static void clearAllElements(JsonArray objects) { private static final List COMMON_TOP_LEVEL_PROPERTY_NAMES = Arrays.asList( "ok", + "warning", "error", "needed", "provided" From 76ac42b8465d50f8b6fcc944fb4c0d81c10395de Mon Sep 17 00:00:00 2001 From: Maria Alejandra <104795114+srtaalej@users.noreply.github.com> Date: Mon, 8 Dec 2025 11:54:41 -0500 Subject: [PATCH 22/24] Update slack-api-client/src/main/java/com/slack/api/methods/Methods.java Co-authored-by: Michael Brooks --- .../src/main/java/com/slack/api/methods/Methods.java | 1 - 1 file changed, 1 deletion(-) 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 5663555c5..62d8b4dfc 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 @@ -671,7 +671,6 @@ 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"; - // ------------------------------ // team // ------------------------------ From 7d4fac79f972ba29390a7af574e89591b3695d88 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Wed, 10 Dec 2025 22:14:57 -0500 Subject: [PATCH 23/24] fix: stricter typing for list schemas --- .../api/methods/impl/MethodsClientImpl.java | 72 ++-- .../SlackListsAccessDeleteRequest.java | 4 - .../SlackListsAccessSetRequest.java | 5 - .../slack_lists/SlackListsCreateRequest.java | 5 +- .../SlackListsDownloadGetRequest.java | 3 - .../SlackListsDownloadStartRequest.java | 3 - .../SlackListsItemsCreateRequest.java | 6 +- .../SlackListsItemsDeleteMultipleRequest.java | 2 - .../SlackListsItemsDeleteRequest.java | 2 - .../SlackListsItemsInfoRequest.java | 3 +- .../SlackListsItemsListRequest.java | 2 - .../SlackListsItemsUpdateRequest.java | 7 +- .../slack_lists/SlackListsUpdateRequest.java | 3 - .../api/methods/SlackListsTest.java | 172 +++++----- .../methods/slacklists_Test.java | 316 +++++++++--------- .../com/slack/api/model/list/ListRecord.java | 70 +++- 16 files changed, 352 insertions(+), 323 deletions(-) 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 b817ea6e2..cfc650840 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 @@ -3209,42 +3209,6 @@ public SearchFilesResponse searchFiles(RequestConfigurator req) throws IOException, SlackApiException { - return starsAdd(req.configure(StarsAddRequest.builder()).build()); - } - - @Override - @Deprecated // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - public StarsListResponse starsList(StarsListRequest req) throws IOException, SlackApiException { - return postFormWithTokenAndParseResponse(toForm(req), Methods.STARS_LIST, getToken(req), StarsListResponse.class); - } - - @Override - @Deprecated // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - public StarsListResponse starsList(RequestConfigurator req) throws IOException, SlackApiException { - return starsList(req.configure(StarsListRequest.builder()).build()); - } - - @Override - @Deprecated // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - public StarsRemoveResponse starsRemove(StarsRemoveRequest req) throws IOException, SlackApiException { - return postFormWithTokenAndParseResponse(toForm(req), Methods.STARS_REMOVE, getToken(req), StarsRemoveResponse.class); - } - - @Override - @Deprecated // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders - public StarsRemoveResponse starsRemove(RequestConfigurator req) throws IOException, SlackApiException { - return starsRemove(req.configure(StarsRemoveRequest.builder()).build()); - } - @Override public SlackListsAccessDeleteResponse slackListsAccessDelete(SlackListsAccessDeleteRequest req) throws IOException, SlackApiException { return postFormWithTokenAndParseResponse(toForm(req), Methods.SLACKLISTS_ACCESS_DELETE, getToken(req), SlackListsAccessDeleteResponse.class); @@ -3365,6 +3329,42 @@ public SlackListsUpdateResponse slackListsUpdate(RequestConfigurator req) throws IOException, SlackApiException { + return starsAdd(req.configure(StarsAddRequest.builder()).build()); + } + + @Override + @Deprecated // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + public StarsListResponse starsList(StarsListRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.STARS_LIST, getToken(req), StarsListResponse.class); + } + + @Override + @Deprecated // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + public StarsListResponse starsList(RequestConfigurator req) throws IOException, SlackApiException { + return starsList(req.configure(StarsListRequest.builder()).build()); + } + + @Override + @Deprecated // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + public StarsRemoveResponse starsRemove(StarsRemoveRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.STARS_REMOVE, getToken(req), StarsRemoveResponse.class); + } + + @Override + @Deprecated // https://docs.slack.dev/changelog/2023-07-its-later-already-for-stars-and-reminders + public StarsRemoveResponse starsRemove(RequestConfigurator req) throws IOException, SlackApiException { + return starsRemove(req.configure(StarsRemoveRequest.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/slack_lists/SlackListsAccessDeleteRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessDeleteRequest.java index f7222eda9..7a24367fb 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessDeleteRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessDeleteRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import java.util.List; import lombok.Builder; @@ -21,19 +20,16 @@ public class SlackListsAccessDeleteRequest implements SlackApiRequest { /** * Encoded ID of the List. */ - @SerializedName("list_id") private String listId; /** * List of channels you wish to update access for. Can only be used if user_ids is not provided. (Optional) */ - @SerializedName("channel_ids") private List channelIds; /** * List of users you wish to update access for. Can only be used if channel_ids is not provided. (Optional) */ - @SerializedName("user_ids") private List userIds; } diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessSetRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessSetRequest.java index f192ac0d3..dd6ebc09e 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessSetRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsAccessSetRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import java.util.List; import lombok.Builder; @@ -21,25 +20,21 @@ public class SlackListsAccessSetRequest implements SlackApiRequest { /** * Encoded ID of the List. */ - @SerializedName("list_id") private String listId; /** * Desired level of access. */ - @SerializedName("access_level") private String accessLevel; /** * List of channels you wish to update access for. Can only be used if user_ids is not provided. (Optional) */ - @SerializedName("channel_ids") private List channelIds; /** * List of users you wish to update access for. Can only be used if channel_ids is not provided. (Optional) */ - @SerializedName("user_ids") private List userIds; } diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java index d8b0bed2e..108d730ff 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java @@ -3,6 +3,7 @@ import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import com.slack.api.model.block.RichTextBlock; +import com.slack.api.model.list.ListColumn; import java.util.List; import java.util.Map; @@ -30,13 +31,12 @@ public class SlackListsCreateRequest implements SlackApiRequest { /** * A rich text description of the List. (Optional) */ - @SerializedName("description_blocks") private List descriptionBlocks; /** * Column definition for the List. (Optional) */ - private List> schema; + private List schema; /** * ID of the List to copy. (Optional) @@ -53,6 +53,5 @@ public class SlackListsCreateRequest implements SlackApiRequest { /** * Boolean indicating whether the List should be used to track todo tasks. (Optional) */ - @SerializedName("todo_mode") private Boolean todoMode; } \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadGetRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadGetRequest.java index 6ddb13382..b2ab4bf7a 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadGetRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadGetRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -20,12 +19,10 @@ public class SlackListsDownloadGetRequest implements SlackApiRequest { /** * ID of the List to export. */ - @SerializedName("list_id") private String listId; /** * The ID of the recently started job to export the List. */ - @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/request/slack_lists/SlackListsDownloadStartRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadStartRequest.java index 12daf08da..9f262d9b5 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadStartRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsDownloadStartRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -20,12 +19,10 @@ public class SlackListsDownloadStartRequest implements SlackApiRequest { /** * ID of the List to export. */ - @SerializedName("list_id") private String listId; /** * Include archived rows. (Optional) */ - @SerializedName("include_archived") private Boolean includeArchived; } \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java index 4500610f4..55cc010ac 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java @@ -2,9 +2,9 @@ import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.list.ListRecord; import java.util.List; -import java.util.Map; import lombok.Builder; import lombok.Data; @@ -24,7 +24,6 @@ public class SlackListsItemsCreateRequest implements SlackApiRequest { /** * ID of the List containing the items. */ - @SerializedName("list_id") private String listId; /** @@ -42,6 +41,5 @@ public class SlackListsItemsCreateRequest implements SlackApiRequest { /** * Initial item data. (Optional) */ - @SerializedName("initial_fields") - private List> initialFields; + private List initialFields; } \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteMultipleRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteMultipleRequest.java index 5971b4867..004267640 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteMultipleRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteMultipleRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import java.util.List; import lombok.Builder; @@ -21,7 +20,6 @@ public class SlackListsItemsDeleteMultipleRequest implements SlackApiRequest { /** * ID of the List containing the items. */ - @SerializedName("list_id") private String listId; /** diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteRequest.java index 871dba18e..cfb979180 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsDeleteRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -20,7 +19,6 @@ public class SlackListsItemsDeleteRequest implements SlackApiRequest { /** * ID of the List containing the items. */ - @SerializedName("list_id") private String listId; /** diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java index 63125dcea..ada9925d4 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java @@ -20,7 +20,6 @@ public class SlackListsItemsInfoRequest implements SlackApiRequest { /** * ID of the List containing the items. */ - @SerializedName("list_id") private String listId; /** @@ -31,7 +30,7 @@ public class SlackListsItemsInfoRequest implements SlackApiRequest { /** * Set to true to include is_subscribed data for the returned List row. (Optional) */ - @SerializedName("include_is_subscribed") + //@SerializedName("include_is_subscribed") @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/slack_lists/SlackListsItemsListRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsListRequest.java index e6f63bf99..d3fedcf19 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsListRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsListRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -20,7 +19,6 @@ public class SlackListsItemsListRequest implements SlackApiRequest { /** * ID of the List. */ - @SerializedName("list_id") private String listId; diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsUpdateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsUpdateRequest.java index e96219644..b1157e9e1 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsUpdateRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsUpdateRequest.java @@ -1,10 +1,9 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.list.ListRecord; import java.util.List; -import java.util.Map; import lombok.Builder; import lombok.Data; @@ -24,12 +23,12 @@ public class SlackListsItemsUpdateRequest implements SlackApiRequest { /** * ID of the List containing the items. */ - @SerializedName("list_id") private String listId; /** * Cells to update. + * Each cell should have a rowId, columnId, and one of the type-specific value properties. */ - private List> cells; + private List cells; } \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsUpdateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsUpdateRequest.java index 31d640c9c..56d754186 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsUpdateRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsUpdateRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import com.slack.api.model.block.RichTextBlock; import java.util.List; @@ -32,12 +31,10 @@ public class SlackListsUpdateRequest implements SlackApiRequest { /** * A rich text description of the List. (Optional) */ - @SerializedName("description_blocks") private List descriptionBlocks; /** * Boolean indicating whether the List should be used to track todo tasks. (Optional) */ - @SerializedName("todo_mode") private Boolean todoMode; } \ No newline at end of file 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 index b7cd88fde..363ec97cc 100644 --- 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 @@ -4,14 +4,15 @@ import com.slack.api.SlackConfig; import com.slack.api.model.block.RichTextBlock; import com.slack.api.model.block.element.RichTextSectionElement; +import com.slack.api.model.list.ListColumn; +import com.slack.api.model.list.ListColumnOptions; +import com.slack.api.model.list.ListRecord; 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; @@ -37,45 +38,53 @@ public void tearDown() throws Exception { // Create a new list @Test public void slackListsCreate() throws Exception { - Map taskNameCol = new HashMap<>(); - taskNameCol.put("key", "task_name"); - taskNameCol.put("name", "Task Name"); - taskNameCol.put("type", "text"); - taskNameCol.put("is_primary_column", true); - - Map dueDateCol = new HashMap<>(); - dueDateCol.put("key", "due_date"); - dueDateCol.put("name", "Due Date"); - dueDateCol.put("type", "date"); - - Map choice1 = new HashMap<>(); - choice1.put("value", "not_started"); - choice1.put("label", "Not Started"); - choice1.put("color", "red"); - - Map choice2 = new HashMap<>(); - choice2.put("value", "in_progress"); - choice2.put("label", "In Progress"); - choice2.put("color", "yellow"); - - Map choice3 = new HashMap<>(); - choice3.put("value", "completed"); - choice3.put("label", "Completed"); - choice3.put("color", "green"); - - Map options = new HashMap<>(); - options.put("choices", Arrays.asList(choice1, choice2, choice3)); - - Map statusCol = new HashMap<>(); - statusCol.put("key", "status"); - statusCol.put("name", "Status"); - statusCol.put("type", "select"); - statusCol.put("options", options); - - Map assigneeCol = new HashMap<>(); - assigneeCol.put("key", "assignee"); - assigneeCol.put("name", "Assignee"); - assigneeCol.put("type", "user"); + ListColumn taskNameCol = ListColumn.builder() + .key("task_name") + .name("Task Name") + .type("text") + .primaryColumn(true) + .build(); + + ListColumn dueDateCol = ListColumn.builder() + .key("due_date") + .name("Due Date") + .type("date") + .build(); + + ListColumnOptions.Choice choice1 = ListColumnOptions.Choice.builder() + .value("not_started") + .label("Not Started") + .color("red") + .build(); + + ListColumnOptions.Choice choice2 = ListColumnOptions.Choice.builder() + .value("in_progress") + .label("In Progress") + .color("yellow") + .build(); + + ListColumnOptions.Choice choice3 = ListColumnOptions.Choice.builder() + .value("completed") + .label("Completed") + .color("green") + .build(); + + ListColumnOptions statusOptions = ListColumnOptions.builder() + .choices(Arrays.asList(choice1, choice2, choice3)) + .build(); + + ListColumn statusCol = ListColumn.builder() + .key("status") + .name("Status") + .type("select") + .options(statusOptions) + .build(); + + ListColumn assigneeCol = ListColumn.builder() + .key("assignee") + .name("Assignee") + .type("user") + .build(); assertThat(slack.methods(ValidToken).slackListsCreate(r -> r .name("Test List - SlackLists API") @@ -118,21 +127,18 @@ public void slackListsAccessSet_async() throws Exception { // Create several list items @Test public void slackListsItemsCreate() throws Exception { - Map textElement = new HashMap<>(); - textElement.put("type", "text"); - textElement.put("text", "Test task item"); - - Map richTextSection = new HashMap<>(); - richTextSection.put("type", "rich_text_section"); - richTextSection.put("elements", Arrays.asList(textElement)); - - Map richText = new HashMap<>(); - richText.put("type", "rich_text"); - richText.put("elements", Arrays.asList(richTextSection)); + RichTextBlock richTextBlock = RichTextBlock.builder() + .elements(Arrays.asList(RichTextSectionElement.builder() + .elements(Arrays.asList(RichTextSectionElement.Text.builder() + .text("Test task item") + .build())) + .build())) + .build(); - Map field = new HashMap<>(); - field.put("column_id", "C1234567"); - field.put("rich_text", Arrays.asList(richText)); + ListRecord.Field field = ListRecord.Field.builder() + .columnId("C1234567") + .richText(Arrays.asList(richTextBlock)) + .build(); assertThat(slack.methods(ValidToken).slackListsItemsCreate(r -> r .listId("F1234567") @@ -254,22 +260,19 @@ public void slackListsDownloadGet_async() throws Exception { // Update an existing list item @Test public void slackListsItemsUpdate() throws Exception { - Map textElement = new HashMap<>(); - textElement.put("type", "text"); - textElement.put("text", "new task name"); - - Map richTextSection = new HashMap<>(); - richTextSection.put("type", "rich_text_section"); - richTextSection.put("elements", Arrays.asList(textElement)); - - Map richText = new HashMap<>(); - richText.put("type", "rich_text"); - richText.put("elements", Arrays.asList(richTextSection)); + RichTextBlock richTextBlock = RichTextBlock.builder() + .elements(Arrays.asList(RichTextSectionElement.builder() + .elements(Arrays.asList(RichTextSectionElement.Text.builder() + .text("new task name") + .build())) + .build())) + .build(); - Map cell = new HashMap<>(); - cell.put("row_id", "Rec1234567890"); - cell.put("column_id", "C1234567"); - cell.put("rich_text", Arrays.asList(richText)); + ListRecord.CellUpdate cell = ListRecord.CellUpdate.builder() + .rowId("Rec1234567890") + .columnId("C1234567") + .richText(Arrays.asList(richTextBlock)) + .build(); assertThat(slack.methods(ValidToken).slackListsItemsUpdate(r -> r .listId("F1234567") @@ -279,22 +282,19 @@ public void slackListsItemsUpdate() throws Exception { @Test public void slackListsItemsUpdate_async() throws Exception { - Map textElement = new HashMap<>(); - textElement.put("type", "text"); - textElement.put("text", "new task name"); - - Map richTextSection = new HashMap<>(); - richTextSection.put("type", "rich_text_section"); - richTextSection.put("elements", Arrays.asList(textElement)); - - Map richText = new HashMap<>(); - richText.put("type", "rich_text"); - richText.put("elements", Arrays.asList(richTextSection)); - - Map cell = new HashMap<>(); - cell.put("row_id", "Rec1234567890"); - cell.put("column_id", "C1234567"); - cell.put("rich_text", Arrays.asList(richText)); + RichTextBlock richTextBlock = RichTextBlock.builder() + .elements(Arrays.asList(RichTextSectionElement.builder() + .elements(Arrays.asList(RichTextSectionElement.Text.builder() + .text("new task name") + .build())) + .build())) + .build(); + + ListRecord.CellUpdate cell = ListRecord.CellUpdate.builder() + .rowId("Rec1234567890") + .columnId("C1234567") + .richText(Arrays.asList(richTextBlock)) + .build(); assertThat(slack.methodsAsync(ValidToken).slackListsItemsUpdate(r -> r .listId("F1234567") 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 index 55e9d209d..070703b02 100644 --- 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 @@ -27,6 +27,9 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import com.slack.api.model.list.ListColumn; +import com.slack.api.model.list.ListColumnOptions; +import com.slack.api.model.list.ListRecord; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.assertThat; @@ -53,45 +56,53 @@ public static void tearDown() throws InterruptedException { @Test public void fullSlackListsWorkflow() throws IOException, SlackApiException { // Build schema columns - Map taskNameCol = new HashMap<>(); - taskNameCol.put("key", "task_name"); - taskNameCol.put("name", "Task Name"); - taskNameCol.put("type", "text"); - taskNameCol.put("is_primary_column", true); - - Map dueDateCol = new HashMap<>(); - dueDateCol.put("key", "due_date"); - dueDateCol.put("name", "Due Date"); - dueDateCol.put("type", "date"); - - Map choice1 = new HashMap<>(); - choice1.put("value", "not_started"); - choice1.put("label", "Not Started"); - choice1.put("color", "red"); - - Map choice2 = new HashMap<>(); - choice2.put("value", "in_progress"); - choice2.put("label", "In Progress"); - choice2.put("color", "yellow"); - - Map choice3 = new HashMap<>(); - choice3.put("value", "completed"); - choice3.put("label", "Completed"); - choice3.put("color", "green"); - - Map options = new HashMap<>(); - options.put("choices", Arrays.asList(choice1, choice2, choice3)); - - Map statusCol = new HashMap<>(); - statusCol.put("key", "status"); - statusCol.put("name", "Status"); - statusCol.put("type", "select"); - statusCol.put("options", options); - - Map assigneeCol = new HashMap<>(); - assigneeCol.put("key", "assignee"); - assigneeCol.put("name", "Assignee"); - assigneeCol.put("type", "user"); + ListColumn taskNameCol = ListColumn.builder() + .key("task_name") + .name("Task Name") + .type("text") + .primaryColumn(true) + .build(); + + ListColumn dueDateCol = ListColumn.builder() + .key("due_date") + .name("Due Date") + .type("date") + .build(); + + ListColumnOptions.Choice choice1 = ListColumnOptions.Choice.builder() + .value("not_started") + .label("Not Started") + .color("red") + .build(); + + ListColumnOptions.Choice choice2 = ListColumnOptions.Choice.builder() + .value("in_progress") + .label("In Progress") + .color("yellow") + .build(); + + ListColumnOptions.Choice choice3 = ListColumnOptions.Choice.builder() + .value("completed") + .label("Completed") + .color("green") + .build(); + + ListColumnOptions statusOptions = ListColumnOptions.builder() + .choices(Arrays.asList(choice1, choice2, choice3)) + .build(); + + ListColumn statusCol = ListColumn.builder() + .key("status") + .name("Status") + .type("select") + .options(statusOptions) + .build(); + + ListColumn assigneeCol = ListColumn.builder() + .key("assignee") + .name("Assignee") + .type("user") + .build(); // create list SlackListsCreateResponse createResponse = slack.methods().slackListsCreate(r -> r @@ -130,127 +141,114 @@ public void fullSlackListsWorkflow() throws IOException, SlackApiException { assertThat(accessSetResponse.getError(), is(nullValue())); assertThat(accessSetResponse.isOk(), is(true)); - try { - // Build initial fields for item creation - Map textElement = new HashMap<>(); - textElement.put("type", "text"); - textElement.put("text", "Test task item"); - - Map richTextSection = new HashMap<>(); - richTextSection.put("type", "rich_text_section"); - richTextSection.put("elements", Arrays.asList(textElement)); + // Build initial fields for item creation + ListRecord.Field field = ListRecord.Field.builder() + .columnId(taskNameColId) + .richText(Arrays.asList(RichTextBlock.builder() + .elements(Arrays.asList(RichTextSectionElement.builder() + .elements(Arrays.asList(RichTextSectionElement.Text.builder() + .text("Test task item") + .build())) + .build())) + .build())) + .build(); - Map richText = new HashMap<>(); - richText.put("type", "rich_text"); - richText.put("elements", Arrays.asList(richTextSection)); + // create an item + SlackListsItemsCreateResponse createItemResponse = slack.methods().slackListsItemsCreate(r -> r + .token(botToken) + .listId(listId) + .initialFields(Arrays.asList(field))); + assertThat(createItemResponse.getError(), is(nullValue())); + assertThat(createItemResponse.isOk(), is(true)); + assertThat(createItemResponse.getItem(), is(notNullValue())); - Map field = new HashMap<>(); - field.put("column_id", taskNameColId); - field.put("rich_text", Arrays.asList(richText)); + String itemId = createItemResponse.getItem().getId(); + assertThat(itemId, is(notNullValue())); - // create an item - SlackListsItemsCreateResponse createItemResponse = slack.methods().slackListsItemsCreate(r -> r - .token(botToken) - .listId(listId) - .initialFields(Arrays.asList(field))); - assertThat(createItemResponse.getError(), is(nullValue())); - assertThat(createItemResponse.isOk(), is(true)); - assertThat(createItemResponse.getItem(), is(notNullValue())); + // get item info + SlackListsItemsInfoResponse itemInfoResponse = slack.methods().slackListsItemsInfo(r -> r + .token(botToken) + .listId(listId) + .id(itemId) + .includeIsSubscribed(true)); + assertThat(itemInfoResponse.getError(), is(nullValue())); + assertThat(itemInfoResponse.isOk(), is(true)); + + // Build update cell + ListRecord.CellUpdate cell = ListRecord.CellUpdate.builder() + .rowId(itemId) + .columnId(taskNameColId) + .richText(Arrays.asList(RichTextBlock.builder() + .elements(Arrays.asList(RichTextSectionElement.builder() + .elements(Arrays.asList(RichTextSectionElement.Text.builder() + .text("new task name") + .build())) + .build())) + .build())) + .build(); - String itemId = createItemResponse.getItem().getId(); - assertThat(itemId, is(notNullValue())); + // update item + SlackListsItemsUpdateResponse updateItemResponse = slack.methods().slackListsItemsUpdate(r -> r + .token(botToken) + .listId(listId) + .cells(Arrays.asList(cell))); + assertThat(updateItemResponse.getError(), is(nullValue())); + assertThat(updateItemResponse.isOk(), is(true)); - // get item info - SlackListsItemsInfoResponse itemInfoResponse = slack.methods().slackListsItemsInfo(r -> r - .token(botToken) - .listId(listId) - .id(itemId) - .includeIsSubscribed(true)); - assertThat(itemInfoResponse.getError(), is(nullValue())); - assertThat(itemInfoResponse.isOk(), is(true)); - - // Build update cell - Map updateTextElement = new HashMap<>(); - updateTextElement.put("type", "text"); - updateTextElement.put("text", "new task name"); - - Map updateRichTextSection = new HashMap<>(); - updateRichTextSection.put("type", "rich_text_section"); - updateRichTextSection.put("elements", Arrays.asList(updateTextElement)); - - Map updateRichText = new HashMap<>(); - updateRichText.put("type", "rich_text"); - updateRichText.put("elements", Arrays.asList(updateRichTextSection)); - - Map cell = new HashMap<>(); - cell.put("row_id", itemId); - cell.put("column_id", taskNameColId); - cell.put("rich_text", Arrays.asList(updateRichText)); - - // update item - SlackListsItemsUpdateResponse updateItemResponse = slack.methods().slackListsItemsUpdate(r -> r - .token(botToken) - .listId(listId) - .cells(Arrays.asList(cell))); - assertThat(updateItemResponse.getError(), is(nullValue())); - assertThat(updateItemResponse.isOk(), is(true)); + // list items + SlackListsItemsListResponse listItemsResponse = slack.methods().slackListsItemsList(r -> r + .token(botToken) + .listId(listId) + .limit(50)); + assertThat(listItemsResponse.getError(), is(nullValue())); + assertThat(listItemsResponse.isOk(), is(true)); + assertThat(listItemsResponse.getItems(), is(notNullValue())); - // list items - SlackListsItemsListResponse listItemsResponse = slack.methods().slackListsItemsList(r -> r + // start download + SlackListsDownloadStartResponse downloadStartResponse = slack.methods().slackListsDownloadStart(r -> r + .token(botToken) + .listId(listId) + .includeArchived(false)); + assertThat(downloadStartResponse.getError(), is(nullValue())); + assertThat(downloadStartResponse.isOk(), is(true)); + + String jobId = downloadStartResponse.getJobId(); + if (jobId != null) { + // get download status + SlackListsDownloadGetResponse downloadGetResponse = slack.methods().slackListsDownloadGet(r -> r .token(botToken) .listId(listId) - .limit(50)); - assertThat(listItemsResponse.getError(), is(nullValue())); - assertThat(listItemsResponse.isOk(), is(true)); - assertThat(listItemsResponse.getItems(), is(notNullValue())); + .jobId(jobId)); + assertThat(downloadGetResponse.getError(), is(nullValue())); + assertThat(downloadGetResponse.isOk(), is(true)); + } - // start download - SlackListsDownloadStartResponse downloadStartResponse = slack.methods().slackListsDownloadStart(r -> r - .token(botToken) - .listId(listId) - .includeArchived(false)); - assertThat(downloadStartResponse.getError(), is(nullValue())); - assertThat(downloadStartResponse.isOk(), is(true)); - - String jobId = downloadStartResponse.getJobId(); - if (jobId != null) { - // get download status - SlackListsDownloadGetResponse downloadGetResponse = slack.methods().slackListsDownloadGet(r -> r - .token(botToken) - .listId(listId) - .jobId(jobId)); - assertThat(downloadGetResponse.getError(), is(nullValue())); - assertThat(downloadGetResponse.isOk(), is(true)); - } - - // delete the item - SlackListsItemsDeleteResponse deleteItemResponse = slack.methods().slackListsItemsDelete(r -> r - .token(botToken) - .listId(listId) - .id(itemId)); - assertThat(deleteItemResponse.getError(), is(nullValue())); - assertThat(deleteItemResponse.isOk(), is(true)); + // delete the item + SlackListsItemsDeleteResponse deleteItemResponse = slack.methods().slackListsItemsDelete(r -> r + .token(botToken) + .listId(listId) + .id(itemId)); + assertThat(deleteItemResponse.getError(), is(nullValue())); + assertThat(deleteItemResponse.isOk(), is(true)); - // update list - SlackListsUpdateResponse updateResponse = slack.methods().slackListsUpdate(r -> r - .token(botToken) - .id(listId) - .name("Updated Test List") - .todoMode(true)); - assertThat(updateResponse.getError(), is(nullValue())); - assertThat(updateResponse.isOk(), is(true)); - - // delete access - SlackListsAccessDeleteResponse accessDeleteResponse = slack.methods().slackListsAccessDelete(r -> r - .token(botToken) - .listId(listId) - .channelIds(Arrays.asList(channelId))); - assertThat(accessDeleteResponse.getError(), is(nullValue())); - assertThat(accessDeleteResponse.isOk(), is(true)); + // update list + SlackListsUpdateResponse updateResponse = slack.methods().slackListsUpdate(r -> r + .token(botToken) + .id(listId) + .name("Updated Test List") + .todoMode(true)); + assertThat(updateResponse.getError(), is(nullValue())); + assertThat(updateResponse.isOk(), is(true)); + + // delete access + SlackListsAccessDeleteResponse accessDeleteResponse = slack.methods().slackListsAccessDelete(r -> r + .token(botToken) + .listId(listId) + .channelIds(Arrays.asList(channelId))); + assertThat(accessDeleteResponse.getError(), is(nullValue())); + assertThat(accessDeleteResponse.isOk(), is(true)); - } finally { - log.info("Slack Lists API workflow completed for list: {}", listId); - } + log.info("Slack Lists API workflow completed for list: {}", listId); } @Test @@ -267,15 +265,14 @@ public void fullSlackListsWorkflow_async() throws Exception { String listId = createResponse.getListId(); assertThat(listId, is(notNullValue())); - try { - // create an item - SlackListsItemsCreateResponse createItemResponse = slack.methodsAsync().slackListsItemsCreate(r -> r - .token(botToken) - .listId(listId)).get(); - assertThat(createItemResponse.getError(), is(nullValue())); - assertThat(createItemResponse.isOk(), is(true)); + // create an item + SlackListsItemsCreateResponse createItemResponse = slack.methodsAsync().slackListsItemsCreate(r -> r + .token(botToken) + .listId(listId)).get(); + assertThat(createItemResponse.getError(), is(nullValue())); + assertThat(createItemResponse.isOk(), is(true)); - if (createItemResponse.getItem() != null) { + if (createItemResponse.getItem() != null) { String itemId = createItemResponse.getItem().getId(); // get item info @@ -301,11 +298,8 @@ public void fullSlackListsWorkflow_async() throws Exception { .id(itemId)).get(); assertThat(deleteItemResponse.getError(), is(nullValue())); assertThat(deleteItemResponse.isOk(), is(true)); - } - - } finally { - log.info("Async Slack Lists API workflow completed for list: {}", listId); } + log.info("Async Slack Lists API workflow completed for list: {}", listId); } @Test 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 c74702da8..ca4f708a2 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 @@ -1,12 +1,15 @@ package com.slack.api.model.list; +import com.google.gson.annotations.SerializedName; import com.slack.api.model.File; import com.slack.api.model.Message; import com.slack.api.model.block.RichTextBlock; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import java.util.List; import java.util.Map; @@ -32,14 +35,16 @@ public class ListRecord { private Map savedFields; @Data - @Builder + @SuperBuilder @NoArgsConstructor @AllArgsConstructor public static class Field { private String key; + @SerializedName("column_id") private String columnId; private String value; private String text; + @SerializedName("rich_text") private List richText; private Message message; private List number; @@ -53,8 +58,49 @@ public static class Field { private List channel; private List rating; private List timestamp; - private List link; - private List reference; + private List link; + private List reference; + } + + /** + * Link field structure for Slack Lists items. + * https://docs.slack.dev/reference/methods/slackLists.items.create#field-types + */ + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class LinkField { + @SerializedName("original_url") + private String originalUrl; + @SerializedName("display_as_url") + private Boolean displayAsUrl; + @SerializedName("display_name") + private String displayName; + } + + /** + * Reference field structure for Slack Lists items. + * https://docs.slack.dev/reference/methods/slackLists.items.create#field-types + */ + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class ReferenceField { + private FileRef file; + } + + /** + * File reference within a ReferenceField. + */ + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class FileRef { + @SerializedName("file_id") + private String fileId; } @Data @@ -66,4 +112,22 @@ public static class PlatformRefs { private String botUpdatedBy; private String botDeletedBy; } + + /** + * Cell update structure for slackLists.items.update. + * Includes row_id in addition to column_id and field value. + * https://docs.slack.dev/reference/methods/slackLists.items.update + */ + @Data + @SuperBuilder + @NoArgsConstructor + @AllArgsConstructor + @EqualsAndHashCode(callSuper = true) + public static class CellUpdate extends Field { + /** + * The ID of the row to update. + */ + @SerializedName("row_id") + private String rowId; + } } From f4b1c4e22a2e09a55cf30906e206e6eeabcb77b8 Mon Sep 17 00:00:00 2001 From: Ale Mercado Date: Thu, 11 Dec 2025 11:42:57 -0500 Subject: [PATCH 24/24] remove serialized name --- .../methods/request/slack_lists/SlackListsCreateRequest.java | 3 --- .../request/slack_lists/SlackListsItemsCreateRequest.java | 3 --- .../request/slack_lists/SlackListsItemsInfoRequest.java | 2 -- 3 files changed, 8 deletions(-) diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java index 108d730ff..23db94151 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsCreateRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import com.slack.api.model.block.RichTextBlock; import com.slack.api.model.list.ListColumn; @@ -41,13 +40,11 @@ public class SlackListsCreateRequest implements SlackApiRequest { /** * ID of the List to copy. (Optional) */ - @SerializedName("copy_from_list_id") private String copyFromListId; /** * Boolean indicating whether to include records when a List is copied. (Optional) */ - @SerializedName("include_copied_list_records") private Boolean includeCopiedListRecords; /** diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java index 55cc010ac..48f71433e 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsCreateRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import com.slack.api.model.list.ListRecord; @@ -29,13 +28,11 @@ public class SlackListsItemsCreateRequest implements SlackApiRequest { /** * ID of the record to make a copy of. (Optional) */ - @SerializedName("duplicated_item_id") private String duplicatedItemId; /** * ID of the parent record for this subtask. (Optional) */ - @SerializedName("parent_item_id") private String parentItemId; /** diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java index ada9925d4..8ed8533a1 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/slack_lists/SlackListsItemsInfoRequest.java @@ -1,6 +1,5 @@ package com.slack.api.methods.request.slack_lists; -import com.google.gson.annotations.SerializedName; import com.slack.api.methods.SlackApiRequest; import lombok.Builder; import lombok.Data; @@ -30,7 +29,6 @@ public class SlackListsItemsInfoRequest implements SlackApiRequest { /** * Set to true to include is_subscribed data for the returned List row. (Optional) */ - //@SerializedName("include_is_subscribed") @Builder.Default private Boolean includeIsSubscribed = false; } \ No newline at end of file