diff --git a/slack-api-client/src/test/java/test_with_remote_apis/methods/chat_Test.java b/slack-api-client/src/test/java/test_with_remote_apis/methods/chat_Test.java index dd1966412..f6e96f2f3 100644 --- a/slack-api-client/src/test/java/test_with_remote_apis/methods/chat_Test.java +++ b/slack-api-client/src/test/java/test_with_remote_apis/methods/chat_Test.java @@ -15,6 +15,7 @@ import com.slack.api.methods.response.files.FilesUploadResponse; import com.slack.api.methods.response.files.FilesUploadV2Response; import com.slack.api.model.*; +import com.slack.api.model.EntityMetadata.EntityPayload.BooleanField; import com.slack.api.model.EntityMetadata.EntityPayload.FileFields; import com.slack.api.model.EntityMetadata.EntityPayload.IncidentFields; import com.slack.api.model.EntityMetadata.EntityPayload; @@ -539,10 +540,13 @@ public void unfurl_with_work_object_from_object() throws Exception { EntityPayload.StringField.builder().value("World").tagColor("green").build()}; EntityPayload.CustomField[] customFields = { EntityPayload.CustomField.builder().type("string").key("hello_world").label("Message") - .value("Hello World").build(), + .value("Hello World").build(), EntityPayload.CustomField.builder().type("array").key("array_field") - .label("Array Field").itemType("string") - .value(stringArray).build()}; + .label("Array Field").itemType("string") + .value(stringArray).build(), + EntityPayload.CustomField.builder().type("boolean").key("checkbox").label("Checkbox") + .value(true).booleanField(BooleanField.builder().type("checkbox").text("Check the box").build()).build() + }; EntityPayload payload = EntityPayload.builder() .attributes(attributes) .fileFields(fields) @@ -568,6 +572,8 @@ public void unfurl_with_work_object_from_object() throws Exception { .metadata(metadata) .build()); assertThat(unfurlResponse.getError(), is(nullValue())); + assertThat(unfurlResponse.getWarning(), is(nullValue())); + assertThat(unfurlResponse.getResponseMetadata(), is(nullValue())); // Verify if the message can be parsed by the JSON parser ConversationsHistoryResponse history = slack.methods(botToken).conversationsHistory(r -> r diff --git a/slack-api-model/src/main/java/com/slack/api/model/EntityMetadata.java b/slack-api-model/src/main/java/com/slack/api/model/EntityMetadata.java index 6b452889a..e7a189270 100644 --- a/slack-api-model/src/main/java/com/slack/api/model/EntityMetadata.java +++ b/slack-api-model/src/main/java/com/slack/api/model/EntityMetadata.java @@ -129,6 +129,13 @@ public static class TypedField { // When type is 'slack#/types/user' private User user; + + // When type is 'slack#/types/entity_ref' + private EntityRef entityRef; + + // When type is 'boolean' + @SerializedName("boolean") + private BooleanField booleanField; } @Data @@ -146,6 +153,36 @@ public static class User { private Icon icon; } + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class BooleanField { + private String type; + + // Checkbox + private String text; + private String description; + + // or text-based + private String trueText; + private String trueDescription; + private String falseText; + private String falseDescription; + } + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class EntityRef { + private String entityUrl; + private ExternalRef externalRef; + private String displayType; + private String title; + private Icon icon; + } + @Data @Builder @NoArgsConstructor @@ -170,8 +207,6 @@ public static class StringField { public static class Timestamp { private String label; private Integer value; - private String link; - private Icon icon; private String type; private Edit edit; } @@ -220,6 +255,9 @@ public static class CustomField { private Edit edit; private String itemType; private User user; + private EntityRef entityRef; + @SerializedName("boolean") + private BooleanField booleanField; } @Data