+ * This file must be an image, and you must provide either the URL or ID. + * In addition, the user posting these blocks must have access to this file. + * If both are provided then the payload will be rejected. + * Currently only png, jpg, jpeg, and gif Slack image files are supported. + *
+ * @see document
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SlackFileObject {
+
+ /**
+ * Slack ID of the file.
+ */
+ private String id;
+
+ /**
+ * This URL can be the url_private or the permalink of the Slack file.
+ */
+ private String url;
+}
diff --git a/slack-api-model/src/main/java/com/slack/api/model/block/element/ImageElement.java b/slack-api-model/src/main/java/com/slack/api/model/block/element/ImageElement.java
index 1de89e270..a3add4714 100644
--- a/slack-api-model/src/main/java/com/slack/api/model/block/element/ImageElement.java
+++ b/slack-api-model/src/main/java/com/slack/api/model/block/element/ImageElement.java
@@ -1,6 +1,7 @@
package com.slack.api.model.block.element;
import com.slack.api.model.block.ContextBlockElement;
+import com.slack.api.model.block.composition.SlackFileObject;
import lombok.*;
/**
@@ -29,4 +30,6 @@ public class ImageElement extends BlockElement implements ContextBlockElement {
private Integer imageWidth;
private Integer imageHeight;
private Integer imageBytes;
+
+ private SlackFileObject slackFile;
}
diff --git a/slack-api-model/src/test/java/test_locally/api/model/block/BlocksTest.java b/slack-api-model/src/test/java/test_locally/api/model/block/BlocksTest.java
index 9c45f3d3d..597d85446 100644
--- a/slack-api-model/src/test/java/test_locally/api/model/block/BlocksTest.java
+++ b/slack-api-model/src/test/java/test_locally/api/model/block/BlocksTest.java
@@ -4,6 +4,7 @@
import com.slack.api.model.block.Blocks;
import com.slack.api.model.block.ContextBlock;
import com.slack.api.model.block.ContextBlockElement;
+import com.slack.api.model.block.composition.SlackFileObject;
import com.slack.api.model.block.composition.WorkflowObject;
import com.slack.api.model.block.element.BlockElement;
import org.junit.Test;
@@ -65,6 +66,14 @@ public void testCall() {
@Test
public void testImage() {
assertThat(Blocks.image(i -> i.blockId("block-id").imageUrl("https://www.example.com/")), is(notNullValue()));
+ assertThat(Blocks.image(i -> i
+ .blockId("block-id")
+ .slackFile(SlackFileObject.builder().id("F111111").build())
+ ), is(notNullValue()));
+ assertThat(Blocks.image(i -> i
+ .blockId("block-id")
+ .slackFile(SlackFileObject.builder().url("https://files.slack.com/files-pri/T111-F111/foo.png").build())
+ ), is(notNullValue()));
}
@Test
diff --git a/slack-app-backend/pom.xml b/slack-app-backend/pom.xml
index 724383747..7c334affe 100644
--- a/slack-app-backend/pom.xml
+++ b/slack-app-backend/pom.xml
@@ -6,11 +6,11 @@