diff --git a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/Block.java b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/Block.java
index beeedf4f..3d0dc012 100644
--- a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/Block.java
+++ b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/Block.java
@@ -22,6 +22,7 @@
@JsonSubTypes.Type(value = Image.class, name = Image.TYPE),
@JsonSubTypes.Type(value = Input.class, name = Input.TYPE),
@JsonSubTypes.Type(value = Section.class, name = Section.TYPE),
+ @JsonSubTypes.Type(value = Markdown.class, name = Markdown.TYPE),
}
)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
diff --git a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/BlockElementLengthLimits.java b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/BlockElementLengthLimits.java
index b9f9efc2..a044b499 100644
--- a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/BlockElementLengthLimits.java
+++ b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/BlockElementLengthLimits.java
@@ -11,7 +11,8 @@ public enum BlockElementLengthLimits {
MAX_OPTION_GROUP_LABEL_LENGTH(75),
MAX_OPTION_VALUE_LENGTH(75),
MAX_CHECKBOXES_NUMBER(10),
- MAX_RADIO_BUTTONS_NUMBER(10);
+ MAX_RADIO_BUTTONS_NUMBER(10),
+ MAX_MARKDOWN_LENGTH(12000);
private final int limit;
diff --git a/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/MarkdownIF.java b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/MarkdownIF.java
new file mode 100644
index 00000000..d8090d8d
--- /dev/null
+++ b/slack-base/src/main/java/com/hubspot/slack/client/models/blocks/MarkdownIF.java
@@ -0,0 +1,50 @@
+package com.hubspot.slack.client.models.blocks;
+
+import com.fasterxml.jackson.databind.PropertyNamingStrategies;
+import com.fasterxml.jackson.databind.annotation.JsonNaming;
+import com.google.common.base.Preconditions;
+import com.hubspot.immutables.style.HubSpotStyle;
+import org.immutables.value.Value.Check;
+import org.immutables.value.Value.Derived;
+import org.immutables.value.Value.Immutable;
+import org.immutables.value.Value.Parameter;
+
+@Immutable
+@HubSpotStyle
+@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
+public interface MarkdownIF extends Block {
+ String TYPE = "markdown";
+
+ /**
+ * The type of block. For a markdown block, type is always markdown.
+ *
+ * Type: String
+ *
+ * Required: true
+ */
+ @Override
+ @Derived
+ default String getType() {
+ return TYPE;
+ }
+
+ /**
+ * The standard markdown-formatted text. Limit 12,000 characters max.
+ *
+ * Type: String
+ *
+ * Required: true
+ */
+ @Parameter
+ String getText();
+
+ @Check
+ default void check() {
+ Preconditions.checkState(
+ getText().length() < BlockElementLengthLimits.MAX_MARKDOWN_LENGTH.getLimit(),
+ "Text length must be less than " +
+ BlockElementLengthLimits.MAX_MARKDOWN_LENGTH.getLimit() +
+ " characters"
+ );
+ }
+}