diff --git a/json-logs/samples/api/workflows.featured.add.json b/json-logs/samples/api/workflows.featured.add.json new file mode 100644 index 000000000..6b6ba1fe1 --- /dev/null +++ b/json-logs/samples/api/workflows.featured.add.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "error": "", + "needed": "", + "provided": "", + "warning": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/workflows.featured.list.json b/json-logs/samples/api/workflows.featured.list.json new file mode 100644 index 000000000..6b6ba1fe1 --- /dev/null +++ b/json-logs/samples/api/workflows.featured.list.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "error": "", + "needed": "", + "provided": "", + "warning": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/workflows.featured.remove.json b/json-logs/samples/api/workflows.featured.remove.json new file mode 100644 index 000000000..6b6ba1fe1 --- /dev/null +++ b/json-logs/samples/api/workflows.featured.remove.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "error": "", + "needed": "", + "provided": "", + "warning": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/workflows.featured.set.json b/json-logs/samples/api/workflows.featured.set.json new file mode 100644 index 000000000..6b6ba1fe1 --- /dev/null +++ b/json-logs/samples/api/workflows.featured.set.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "error": "", + "needed": "", + "provided": "", + "warning": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/workflows.stepCompleted.json b/json-logs/samples/api/workflows.stepCompleted.json index 1b3fc766f..6b6ba1fe1 100644 --- a/json-logs/samples/api/workflows.stepCompleted.json +++ b/json-logs/samples/api/workflows.stepCompleted.json @@ -2,5 +2,6 @@ "ok": false, "error": "", "needed": "", - "provided": "" + "provided": "", + "warning": "" } \ No newline at end of file diff --git a/json-logs/samples/api/workflows.stepFailed.json b/json-logs/samples/api/workflows.stepFailed.json index 1b3fc766f..6b6ba1fe1 100644 --- a/json-logs/samples/api/workflows.stepFailed.json +++ b/json-logs/samples/api/workflows.stepFailed.json @@ -2,5 +2,6 @@ "ok": false, "error": "", "needed": "", - "provided": "" + "provided": "", + "warning": "" } \ No newline at end of file diff --git a/json-logs/samples/api/workflows.updateStep.json b/json-logs/samples/api/workflows.updateStep.json index 1b3fc766f..6b6ba1fe1 100644 --- a/json-logs/samples/api/workflows.updateStep.json +++ b/json-logs/samples/api/workflows.updateStep.json @@ -2,5 +2,6 @@ "ok": false, "error": "", "needed": "", - "provided": "" + "provided": "", + "warning": "" } \ 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 42592d469..0ab1ab567 100644 --- a/metadata/web-api/rate_limit_tiers.json +++ b/metadata/web-api/rate_limit_tiers.json @@ -316,6 +316,10 @@ "views.publish": "Tier4", "views.push": "Tier4", "views.update": "Tier4", + "workflows.featured.add": "Tier2", + "workflows.featured.list": "Tier2", + "workflows.featured.remove": "Tier2", + "workflows.featured.set": "Tier2", "workflows.stepCompleted": "Tier2", "workflows.stepFailed": "Tier2", "workflows.updateStep": "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 28e54149b..848b11890 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 @@ -132,6 +132,10 @@ import com.slack.api.methods.request.views.ViewsPublishRequest; import com.slack.api.methods.request.views.ViewsPushRequest; import com.slack.api.methods.request.views.ViewsUpdateRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedAddRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedListRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedRemoveRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedSetRequest; import com.slack.api.methods.request.workflows.WorkflowsStepCompletedRequest; import com.slack.api.methods.request.workflows.WorkflowsStepFailedRequest; import com.slack.api.methods.request.workflows.WorkflowsUpdateStepRequest; @@ -266,6 +270,10 @@ import com.slack.api.methods.response.views.ViewsPublishResponse; import com.slack.api.methods.response.views.ViewsPushResponse; import com.slack.api.methods.response.views.ViewsUpdateResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedAddResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedListResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedRemoveResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedSetResponse; import com.slack.api.methods.response.workflows.WorkflowsStepCompletedResponse; import com.slack.api.methods.response.workflows.WorkflowsStepFailedResponse; import com.slack.api.methods.response.workflows.WorkflowsUpdateStepResponse; @@ -1651,6 +1659,22 @@ CompletableFuture // workflows // ------------------------------ + CompletableFuture workflowsFeaturedAdd(WorkflowsFeaturedAddRequest req); + + CompletableFuture workflowsFeaturedAdd(RequestConfigurator req); + + CompletableFuture workflowsFeaturedList(WorkflowsFeaturedListRequest req); + + CompletableFuture workflowsFeaturedList(RequestConfigurator req); + + CompletableFuture workflowsFeaturedRemove(WorkflowsFeaturedRemoveRequest req); + + CompletableFuture workflowsFeaturedRemove(RequestConfigurator req); + + CompletableFuture workflowsFeaturedSet(WorkflowsFeaturedSetRequest req); + + CompletableFuture workflowsFeaturedSet(RequestConfigurator req); + CompletableFuture workflowsStepCompleted(WorkflowsStepCompletedRequest req); CompletableFuture workflowsStepCompleted(RequestConfigurator req); 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 62d8b4dfc..14e39ae20 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 @@ -746,7 +746,10 @@ private Methods() { // ------------------------------ // workflows // ------------------------------ - + public static final String WORKFLOWS_FEATURED_ADD = "workflows.featured.add"; + public static final String WORKFLOWS_FEATURED_LIST = "workflows.featured.list"; + public static final String WORKFLOWS_FEATURED_REMOVE = "workflows.featured.remove"; + public static final String WORKFLOWS_FEATURED_SET = "workflows.featured.set"; public static final String WORKFLOWS_STEP_COMPLETED = "workflows.stepCompleted"; public static final String WORKFLOWS_STEP_FAILED = "workflows.stepFailed"; public static final String WORKFLOWS_UPDATE_STEP = "workflows.updateStep"; 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 586679cc8..121d4cb2c 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 @@ -145,6 +145,10 @@ import com.slack.api.methods.request.views.ViewsPublishRequest; import com.slack.api.methods.request.views.ViewsPushRequest; import com.slack.api.methods.request.views.ViewsUpdateRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedAddRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedListRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedRemoveRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedSetRequest; import com.slack.api.methods.request.workflows.WorkflowsStepCompletedRequest; import com.slack.api.methods.request.workflows.WorkflowsStepFailedRequest; import com.slack.api.methods.request.workflows.WorkflowsUpdateStepRequest; @@ -292,6 +296,10 @@ import com.slack.api.methods.response.views.ViewsPublishResponse; import com.slack.api.methods.response.views.ViewsPushResponse; import com.slack.api.methods.response.views.ViewsUpdateResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedAddResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedListResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedRemoveResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedSetResponse; import com.slack.api.methods.response.workflows.WorkflowsStepCompletedResponse; import com.slack.api.methods.response.workflows.WorkflowsStepFailedResponse; import com.slack.api.methods.response.workflows.WorkflowsUpdateStepResponse; @@ -2815,6 +2823,34 @@ ViewsPublishResponse viewsPublish(RequestConfigurator req) + throws IOException, SlackApiException; + + WorkflowsFeaturedListResponse workflowsFeaturedList(WorkflowsFeaturedListRequest req) + throws IOException, SlackApiException; + + WorkflowsFeaturedListResponse workflowsFeaturedList( + RequestConfigurator req) + throws IOException, SlackApiException; + + WorkflowsFeaturedRemoveResponse workflowsFeaturedRemove(WorkflowsFeaturedRemoveRequest req) + throws IOException, SlackApiException; + + WorkflowsFeaturedRemoveResponse workflowsFeaturedRemove( + RequestConfigurator req) + throws IOException, SlackApiException; + + WorkflowsFeaturedSetResponse workflowsFeaturedSet(WorkflowsFeaturedSetRequest req) + throws IOException, SlackApiException; + + WorkflowsFeaturedSetResponse workflowsFeaturedSet( + RequestConfigurator req) + throws IOException, SlackApiException; + WorkflowsStepCompletedResponse workflowsStepCompleted(WorkflowsStepCompletedRequest req) throws IOException, SlackApiException; 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 f97155d55..5e26cde7d 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 @@ -479,6 +479,10 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier setRateLimitTier(VIEWS_PUSH, Tier4); setRateLimitTier(VIEWS_UPDATE, Tier4); + setRateLimitTier(WORKFLOWS_FEATURED_ADD, Tier2); + setRateLimitTier(WORKFLOWS_FEATURED_LIST, Tier2); + setRateLimitTier(WORKFLOWS_FEATURED_REMOVE, Tier2); + setRateLimitTier(WORKFLOWS_FEATURED_SET, Tier2); setRateLimitTier(WORKFLOWS_STEP_COMPLETED, Tier2); setRateLimitTier(WORKFLOWS_STEP_FAILED, Tier2); setRateLimitTier(WORKFLOWS_UPDATE_STEP, 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 0e85c0e7c..bd84b961b 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 @@ -145,6 +145,10 @@ import com.slack.api.methods.request.views.ViewsPublishRequest; import com.slack.api.methods.request.views.ViewsPushRequest; import com.slack.api.methods.request.views.ViewsUpdateRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedAddRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedListRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedRemoveRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedSetRequest; import com.slack.api.methods.request.workflows.WorkflowsStepCompletedRequest; import com.slack.api.methods.request.workflows.WorkflowsStepFailedRequest; import com.slack.api.methods.request.workflows.WorkflowsUpdateStepRequest; @@ -3231,6 +3235,45 @@ public static FormBody.Builder toForm(ViewsPublishRequest req) { return form; } + public static FormBody.Builder toForm(WorkflowsFeaturedAddRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("channel_id", req.getChannelId(), form); + if (req.getTriggerIds() != null) { + String json = getJsonWithGsonAnonymInnerClassHandling(req.getTriggerIds()); + form.add("trigger_ids", json); + } + return form; + } + + public static FormBody.Builder toForm(WorkflowsFeaturedListRequest req) { + FormBody.Builder form = new FormBody.Builder(); + if (req.getChannelIds() != null) { + String json = getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()); + form.add("channel_ids", json); + } + return form; + } + + public static FormBody.Builder toForm(WorkflowsFeaturedRemoveRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("channel_id", req.getChannelId(), form); + if (req.getTriggerIds() != null) { + String json = getJsonWithGsonAnonymInnerClassHandling(req.getTriggerIds()); + form.add("trigger_ids", json); + } + return form; + } + + public static FormBody.Builder toForm(WorkflowsFeaturedSetRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("channel_id", req.getChannelId(), form); + if (req.getTriggerIds() != null) { + String json = getJsonWithGsonAnonymInnerClassHandling(req.getTriggerIds()); + form.add("trigger_ids", json); + } + return form; + } + public static FormBody.Builder toForm(WorkflowsStepCompletedRequest req) { FormBody.Builder form = new FormBody.Builder(); setIfNotNull("workflow_step_execute_id", req.getWorkflowStepExecuteId(), 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 b80068da9..e20724d87 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 @@ -136,6 +136,10 @@ import com.slack.api.methods.request.views.ViewsPublishRequest; import com.slack.api.methods.request.views.ViewsPushRequest; import com.slack.api.methods.request.views.ViewsUpdateRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedAddRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedListRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedRemoveRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedSetRequest; import com.slack.api.methods.request.workflows.WorkflowsStepCompletedRequest; import com.slack.api.methods.request.workflows.WorkflowsStepFailedRequest; import com.slack.api.methods.request.workflows.WorkflowsUpdateStepRequest; @@ -270,6 +274,10 @@ import com.slack.api.methods.response.views.ViewsPublishResponse; import com.slack.api.methods.response.views.ViewsPushResponse; import com.slack.api.methods.response.views.ViewsUpdateResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedAddResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedListResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedRemoveResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedSetResponse; import com.slack.api.methods.response.workflows.WorkflowsStepCompletedResponse; import com.slack.api.methods.response.workflows.WorkflowsStepFailedResponse; import com.slack.api.methods.response.workflows.WorkflowsUpdateStepResponse; @@ -3030,6 +3038,46 @@ public CompletableFuture viewsPublish(RequestConfigurator< return viewsPublish(req.configure(ViewsPublishRequest.builder()).build()); } + @Override + public CompletableFuture workflowsFeaturedAdd(WorkflowsFeaturedAddRequest req) { + return executor.execute(WORKFLOWS_FEATURED_ADD, toMap(req), () -> methods.workflowsFeaturedAdd(req)); + } + + @Override + public CompletableFuture workflowsFeaturedAdd(RequestConfigurator req) { + return workflowsFeaturedAdd(req.configure(WorkflowsFeaturedAddRequest.builder()).build()); + } + + @Override + public CompletableFuture workflowsFeaturedList(WorkflowsFeaturedListRequest req) { + return executor.execute(WORKFLOWS_FEATURED_LIST, toMap(req), () -> methods.workflowsFeaturedList(req)); + } + + @Override + public CompletableFuture workflowsFeaturedList(RequestConfigurator req) { + return workflowsFeaturedList(req.configure(WorkflowsFeaturedListRequest.builder()).build()); + } + + @Override + public CompletableFuture workflowsFeaturedRemove(WorkflowsFeaturedRemoveRequest req) { + return executor.execute(WORKFLOWS_FEATURED_REMOVE, toMap(req), () -> methods.workflowsFeaturedRemove(req)); + } + + @Override + public CompletableFuture workflowsFeaturedRemove(RequestConfigurator req) { + return workflowsFeaturedRemove(req.configure(WorkflowsFeaturedRemoveRequest.builder()).build()); + } + + @Override + public CompletableFuture workflowsFeaturedSet(WorkflowsFeaturedSetRequest req) { + return executor.execute(WORKFLOWS_FEATURED_SET, toMap(req), () -> methods.workflowsFeaturedSet(req)); + } + + @Override + public CompletableFuture workflowsFeaturedSet(RequestConfigurator req) { + return workflowsFeaturedSet(req.configure(WorkflowsFeaturedSetRequest.builder()).build()); + } + @Override public CompletableFuture workflowsStepCompleted(WorkflowsStepCompletedRequest req) { return executor.execute(WORKFLOWS_STEP_COMPLETED, toMap(req), () -> methods.workflowsStepCompleted(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 cfc650840..63fad5b96 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 @@ -147,6 +147,10 @@ import com.slack.api.methods.request.views.ViewsPublishRequest; import com.slack.api.methods.request.views.ViewsPushRequest; import com.slack.api.methods.request.views.ViewsUpdateRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedAddRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedListRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedRemoveRequest; +import com.slack.api.methods.request.workflows.WorkflowsFeaturedSetRequest; import com.slack.api.methods.request.workflows.WorkflowsStepCompletedRequest; import com.slack.api.methods.request.workflows.WorkflowsStepFailedRequest; import com.slack.api.methods.request.workflows.WorkflowsUpdateStepRequest; @@ -295,6 +299,10 @@ import com.slack.api.methods.response.views.ViewsPublishResponse; import com.slack.api.methods.response.views.ViewsPushResponse; import com.slack.api.methods.response.views.ViewsUpdateResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedAddResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedListResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedRemoveResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedSetResponse; import com.slack.api.methods.response.workflows.WorkflowsStepCompletedResponse; import com.slack.api.methods.response.workflows.WorkflowsStepFailedResponse; import com.slack.api.methods.response.workflows.WorkflowsUpdateStepResponse; @@ -3723,6 +3731,46 @@ public ViewsPublishResponse viewsPublish(RequestConfigurator req) throws IOException, SlackApiException { + return workflowsFeaturedAdd(req.configure(WorkflowsFeaturedAddRequest.builder()).build()); + } + + @Override + public WorkflowsFeaturedListResponse workflowsFeaturedList(WorkflowsFeaturedListRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.WORKFLOWS_FEATURED_LIST, getToken(req), WorkflowsFeaturedListResponse.class); + } + + @Override + public WorkflowsFeaturedListResponse workflowsFeaturedList(RequestConfigurator req) throws IOException, SlackApiException { + return workflowsFeaturedList(req.configure(WorkflowsFeaturedListRequest.builder()).build()); + } + + @Override + public WorkflowsFeaturedRemoveResponse workflowsFeaturedRemove(WorkflowsFeaturedRemoveRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.WORKFLOWS_FEATURED_REMOVE, getToken(req), WorkflowsFeaturedRemoveResponse.class); + } + + @Override + public WorkflowsFeaturedRemoveResponse workflowsFeaturedRemove(RequestConfigurator req) throws IOException, SlackApiException { + return workflowsFeaturedRemove(req.configure(WorkflowsFeaturedRemoveRequest.builder()).build()); + } + + @Override + public WorkflowsFeaturedSetResponse workflowsFeaturedSet(WorkflowsFeaturedSetRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.WORKFLOWS_FEATURED_SET, getToken(req), WorkflowsFeaturedSetResponse.class); + } + + @Override + public WorkflowsFeaturedSetResponse workflowsFeaturedSet(RequestConfigurator req) throws IOException, SlackApiException { + return workflowsFeaturedSet(req.configure(WorkflowsFeaturedSetRequest.builder()).build()); + } + @Override public WorkflowsStepCompletedResponse workflowsStepCompleted(WorkflowsStepCompletedRequest req) throws IOException, SlackApiException { return postFormWithTokenAndParseResponse(toForm(req), Methods.WORKFLOWS_STEP_COMPLETED, getToken(req), WorkflowsStepCompletedResponse.class); diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedAddRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedAddRequest.java new file mode 100644 index 000000000..2f1702fb8 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedAddRequest.java @@ -0,0 +1,30 @@ +package com.slack.api.methods.request.workflows; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * https://docs.slack.dev/reference/methods/workflows.featured.add/ + */ +@Data +@Builder +public class WorkflowsFeaturedAddRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + /** + * Channel to set featured workflows in. + */ + private String channelId; + + /** + * Comma-separated array of trigger IDs to add; max 15 + */ + private List triggerIds; +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedListRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedListRequest.java new file mode 100644 index 000000000..baea5dfd5 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedListRequest.java @@ -0,0 +1,26 @@ +package com.slack.api.methods.request.workflows; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * https://docs.slack.dev/reference/methods/workflows.featured.list/ + */ +@Data +@Builder +public class WorkflowsFeaturedListRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + /** + * Comma-separated array of channel IDs to list featured workflows for. + */ + private List channelIds; + +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedRemoveRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedRemoveRequest.java new file mode 100644 index 000000000..ac2fb58aa --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedRemoveRequest.java @@ -0,0 +1,30 @@ +package com.slack.api.methods.request.workflows; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * https://docs.slack.dev/reference/methods/workflows.featured.remove/ + */ +@Data +@Builder +public class WorkflowsFeaturedRemoveRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + /** + * Channel to set featured workflows in. + */ + private String channelId; + + /** + * Comma-separated array of trigger IDs to remove; max 15 + */ + private List triggerIds; +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedSetRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedSetRequest.java new file mode 100644 index 000000000..59551ac5f --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/workflows/WorkflowsFeaturedSetRequest.java @@ -0,0 +1,30 @@ +package com.slack.api.methods.request.workflows; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * https://docs.slack.dev/reference/methods/workflows.featured.set/ + */ +@Data +@Builder +public class WorkflowsFeaturedSetRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + /** + * Channel to set featured workflows in. + */ + private String channelId; + + /** + * Comma-separated array of trigger IDs that will replace any existing featured workflows in the channel; max 15 + */ + private List triggerIds; +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedAddResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedAddResponse.java new file mode 100644 index 000000000..d7d44c70c --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedAddResponse.java @@ -0,0 +1,18 @@ +package com.slack.api.methods.response.workflows; + +import com.slack.api.methods.SlackApiTextResponse; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class WorkflowsFeaturedAddResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedListResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedListResponse.java new file mode 100644 index 000000000..f99bb7987 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedListResponse.java @@ -0,0 +1,21 @@ +package com.slack.api.methods.response.workflows; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.workflow.FeaturedWorkflow; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class WorkflowsFeaturedListResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private List featuredWorkflows; +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedRemoveResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedRemoveResponse.java new file mode 100644 index 000000000..7ff905b97 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedRemoveResponse.java @@ -0,0 +1,18 @@ +package com.slack.api.methods.response.workflows; + +import com.slack.api.methods.SlackApiTextResponse; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class WorkflowsFeaturedRemoveResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedSetResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedSetResponse.java new file mode 100644 index 000000000..f942b9cfa --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/workflows/WorkflowsFeaturedSetResponse.java @@ -0,0 +1,18 @@ +package com.slack.api.methods.response.workflows; + +import com.slack.api.methods.SlackApiTextResponse; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class WorkflowsFeaturedSetResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; +} 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 b67729384..1f9e5f682 100644 --- a/slack-api-client/src/test/java/test_locally/api/MethodsTest.java +++ b/slack-api-client/src/test/java/test_locally/api/MethodsTest.java @@ -19,8 +19,8 @@ public class MethodsTest { public void verifyTheCoverage() { // https://docs.slack.dev/reference/methods // var methodNames = [].slice.call(document.getElementsByClassName('apiReferenceFilterableList__listItemLink')).map(e => e.href.replace("https://docs.slack.dev/reference/methods/", ""));console.log(methodNames.toString());console.log(methodNames.length); - // 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"; + // 307 endpoints as of December 16, 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.featured.add,workflows.featured.list,workflows.featured.remove,workflows.featured.set,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/WorkflowsTest.java b/slack-api-client/src/test/java/test_locally/api/methods/WorkflowsTest.java new file mode 100644 index 000000000..e92d0b706 --- /dev/null +++ b/slack-api-client/src/test/java/test_locally/api/methods/WorkflowsTest.java @@ -0,0 +1,141 @@ +package test_locally.api.methods; + +import com.slack.api.Slack; +import com.slack.api.SlackConfig; +import com.slack.api.model.workflow.WorkflowStepInput; +import com.slack.api.model.workflow.WorkflowStepOutput; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import util.MockSlackApiServer; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static util.MockSlackApi.ValidToken; + +public class WorkflowsTest { + + 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 { + List triggerIds = new ArrayList<>(); + triggerIds.add("dummy-trigger-id"); + + List channelIds = new ArrayList<>(); + channelIds.add("dummy-channel-id"); + + Map inputs = new HashMap<>(); + List outputs = new ArrayList<>(); + + Map stepOutputs = new HashMap<>(); + Map error = new HashMap<>(); + error.put("message", "Something wrong!"); + + assertThat(slack.methods(ValidToken).workflowsFeaturedAdd(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).isOk(), is(true)); + + assertThat(slack.methods(ValidToken).workflowsFeaturedList(r -> r + .channelIds(channelIds) + ).isOk(), is(true)); + + assertThat(slack.methods(ValidToken).workflowsFeaturedRemove(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).isOk(), is(true)); + + assertThat(slack.methods(ValidToken).workflowsFeaturedSet(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).isOk(), is(true)); + + assertThat(slack.methods(ValidToken).workflowsUpdateStep(r -> r + .workflowStepEditId("dummy") + .inputs(inputs) + .outputs(outputs) + ).isOk(), is(true)); + + assertThat(slack.methods(ValidToken).workflowsStepCompleted(r -> r + .workflowStepExecuteId("dummy") + .outputs(stepOutputs) + ).isOk(), is(true)); + + assertThat(slack.methods(ValidToken).workflowsStepFailed(r -> r + .workflowStepExecuteId("dummy") + .error(error) + ).isOk(), is(true)); + } + + @Test + public void test_async() throws Exception { + List triggerIds = new ArrayList<>(); + triggerIds.add("dummy-trigger-id"); + + List channelIds = new ArrayList<>(); + channelIds.add("dummy-channel-id"); + + Map inputs = new HashMap<>(); + List outputs = new ArrayList<>(); + + Map stepOutputs = new HashMap<>(); + Map error = new HashMap<>(); + error.put("message", "Something wrong!"); + + assertThat(slack.methodsAsync(ValidToken).workflowsFeaturedAdd(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).get().isOk(), is(true)); + + assertThat(slack.methodsAsync(ValidToken).workflowsFeaturedList(r -> r + .channelIds(channelIds) + ).get().isOk(), is(true)); + + assertThat(slack.methodsAsync(ValidToken).workflowsFeaturedRemove(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).get().isOk(), is(true)); + + assertThat(slack.methodsAsync(ValidToken).workflowsFeaturedSet(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).get().isOk(), is(true)); + + assertThat(slack.methodsAsync(ValidToken).workflowsUpdateStep(r -> r + .workflowStepEditId("dummy") + .inputs(inputs) + .outputs(outputs) + ).get().isOk(), is(true)); + + assertThat(slack.methodsAsync(ValidToken).workflowsStepCompleted(r -> r + .workflowStepExecuteId("dummy") + .outputs(stepOutputs) + ).get().isOk(), is(true)); + + assertThat(slack.methodsAsync(ValidToken).workflowsStepFailed(r -> r + .workflowStepExecuteId("dummy") + .error(error) + ).get().isOk(), is(true)); + } + +} + diff --git a/slack-api-client/src/test/java/test_with_remote_apis/methods/workflows_Test.java b/slack-api-client/src/test/java/test_with_remote_apis/methods/workflows_Test.java index f3eb45358..26f73afa3 100644 --- a/slack-api-client/src/test/java/test_with_remote_apis/methods/workflows_Test.java +++ b/slack-api-client/src/test/java/test_with_remote_apis/methods/workflows_Test.java @@ -1,6 +1,10 @@ package test_with_remote_apis.methods; import com.slack.api.Slack; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedAddResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedListResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedRemoveResponse; +import com.slack.api.methods.response.workflows.WorkflowsFeaturedSetResponse; import com.slack.api.methods.response.workflows.WorkflowsStepCompletedResponse; import com.slack.api.methods.response.workflows.WorkflowsStepFailedResponse; import com.slack.api.methods.response.workflows.WorkflowsUpdateStepResponse; @@ -41,6 +45,56 @@ public static void tearDown() throws InterruptedException { String botToken = System.getenv(Constants.SLACK_SDK_TEST_BOT_TOKEN); + @Test + public void workflowsFeaturedAdd() throws ExecutionException, InterruptedException { + List triggerIds = new ArrayList<>(); + triggerIds.add("dummy-trigger-id"); + + WorkflowsFeaturedAddResponse workflowsFeaturedAddResponse = slack.methodsAsync(botToken) + .workflowsFeaturedAdd(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).get(); + assertThat(workflowsFeaturedAddResponse.getError(), is(notNullValue())); + } + + @Test + public void workflowsFeaturedList() throws ExecutionException, InterruptedException { + List channelIds = new ArrayList<>(); + channelIds.add("dummy-channel-id"); + WorkflowsFeaturedListResponse workflowsFeaturedListResponse = slack.methodsAsync(botToken) + .workflowsFeaturedList(r -> r + .channelIds(channelIds) + ).get(); + assertThat(workflowsFeaturedListResponse.getError(), is(notNullValue())); + } + + @Test + public void workflowsFeaturedRemove() throws ExecutionException, InterruptedException { + List triggerIds = new ArrayList<>(); + triggerIds.add("dummy-trigger-id"); + + WorkflowsFeaturedRemoveResponse workflowsFeaturedRemoveResponse = slack.methodsAsync(botToken) + .workflowsFeaturedRemove(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).get(); + assertThat(workflowsFeaturedRemoveResponse.getError(), is(notNullValue())); + } + + @Test + public void workflowsFeaturedSet() throws ExecutionException, InterruptedException { + List triggerIds = new ArrayList<>(); + triggerIds.add("dummy-trigger-id"); + + WorkflowsFeaturedSetResponse workflowsFeaturedSetResponse = slack.methodsAsync(botToken) + .workflowsFeaturedSet(r -> r + .channelId("dummy-channel-id") + .triggerIds(triggerIds) + ).get(); + assertThat(workflowsFeaturedSetResponse.getError(), is(notNullValue())); + } + @Test public void workflowsUpdateStep() throws ExecutionException, InterruptedException { Map inputs = new HashMap<>(); diff --git a/slack-api-model/src/main/java/com/slack/api/model/workflow/FeaturedWorkflow.java b/slack-api-model/src/main/java/com/slack/api/model/workflow/FeaturedWorkflow.java new file mode 100644 index 000000000..33ee18fc2 --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/workflow/FeaturedWorkflow.java @@ -0,0 +1,12 @@ +package com.slack.api.model.workflow; + +import lombok.Data; + +import java.util.List; + +@Data +public class FeaturedWorkflow { + private String channelId; + private List triggers; +} + diff --git a/slack-api-model/src/main/java/com/slack/api/model/workflow/WorkflowTrigger.java b/slack-api-model/src/main/java/com/slack/api/model/workflow/WorkflowTrigger.java new file mode 100644 index 000000000..efe630080 --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/workflow/WorkflowTrigger.java @@ -0,0 +1,10 @@ +package com.slack.api.model.workflow; + +import lombok.Data; + +@Data +public class WorkflowTrigger { + private String id; + private String title; +} +