Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
name = UsersMultiSelectMenu.TYPE
),
@JsonSubTypes.Type(value = UrlSource.class, name = UrlSource.TYPE),
@JsonSubTypes.Type(value = WorkflowButton.class, name = WorkflowButton.TYPE),
}
)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.hubspot.slack.client.models.blocks.elements;

import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import com.hubspot.slack.client.models.blocks.objects.Text;
import com.hubspot.slack.client.models.blocks.objects.WorkflowObject;
import java.util.Optional;
import org.immutables.value.Value;
import org.immutables.value.Value.Immutable;

/**
* Slack's workflow button runs a link trigger with customizable inputs when clicked.
* Works with the {@code section} and {@code actions} blocks; available on the Messages surface.
* @see <a href="https://docs.slack.dev/reference/block-kit/block-elements/workflow-button-element">Workflow button element</a>
*/
@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface WorkflowButtonIF extends BlockElement, HasActionId {
String TYPE = "workflow_button";

@Override
@Value.Derived
default String getType() {
return TYPE;
}

@Value.Parameter(order = 1)
Text getText();

@Value.Parameter(order = 2)
WorkflowObject getWorkflow();

@Value.Parameter(order = 3)
String getActionId();

Optional<String> getStyle();

Optional<String> getAccessibilityLabel();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.hubspot.slack.client.models.blocks.elements.richtextelements;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

/**
* Polymorphic {@code details} object of a {@link RichTextCitationElement}. The concrete type is
* discriminated by {@code citation_type}: {@code file}, {@code external}, {@code web},
* {@code message}, or {@code memory}.
* @see <a href="https://docs.slack.dev/reference/block-kit/block-elements/citation-element">Citation element</a>
*/
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "citation_type",
defaultImpl = UnknownCitationDetails.class
)
@JsonSubTypes(
{
@JsonSubTypes.Type(
value = FileCitationDetails.class,
name = FileCitationDetails.CITATION_TYPE
),
@JsonSubTypes.Type(
value = ExternalCitationDetails.class,
name = ExternalCitationDetails.CITATION_TYPE
),
@JsonSubTypes.Type(
value = WebCitationDetails.class,
name = WebCitationDetails.CITATION_TYPE
),
@JsonSubTypes.Type(
value = MessageCitationDetails.class,
name = MessageCitationDetails.CITATION_TYPE
),
@JsonSubTypes.Type(
value = MemoryCitationDetails.class,
name = MemoryCitationDetails.CITATION_TYPE
),
}
)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public interface CitationDetails {
String getCitationType();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.hubspot.slack.client.models.blocks.elements.richtextelements;

import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import org.immutables.value.Value;
import org.immutables.value.Value.Immutable;

/**
* An {@code external} citation details object (the {@code details} of a citation element).
* @see <a href="https://docs.slack.dev/reference/block-kit/block-elements/citation-element/#fields">Citation element — fields</a>
*/
@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface ExternalCitationDetailsIF extends CitationDetails {
String CITATION_TYPE = "external";

@Override
@Value.Derived
default String getCitationType() {
return CITATION_TYPE;
}

String getAppName();

String getAppIconUrl();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.hubspot.slack.client.models.blocks.elements.richtextelements;

import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import org.immutables.value.Value;
import org.immutables.value.Value.Immutable;

/**
* A {@code file} citation details object (the {@code details} of a citation element).
* @see <a href="https://docs.slack.dev/reference/block-kit/block-elements/citation-element/#fields">Citation element — fields</a>
*/
@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface FileCitationDetailsIF extends CitationDetails {
String CITATION_TYPE = "file";

@Override
@Value.Derived
default String getCitationType() {
return CITATION_TYPE;
}

String getDescriptor();

String getFileId();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.hubspot.slack.client.models.blocks.elements.richtextelements;

import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import org.immutables.value.Value;
import org.immutables.value.Value.Immutable;

/**
* A {@code memory} citation details object (the {@code details} of a citation element).
* @see <a href="https://docs.slack.dev/reference/block-kit/block-elements/citation-element/#fields">Citation element — fields</a>
*/
@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface MemoryCitationDetailsIF extends CitationDetails {
String CITATION_TYPE = "memory";

@Override
@Value.Derived
default String getCitationType() {
return CITATION_TYPE;
}

String getMemoryId();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.hubspot.slack.client.models.blocks.elements.richtextelements;

import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import org.immutables.value.Value;
import org.immutables.value.Value.Immutable;

/**
* A {@code message} citation details object (the {@code details} of a citation element).
* @see <a href="https://docs.slack.dev/reference/block-kit/block-elements/citation-element/#fields">Citation element — fields</a>
*/
@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
public interface MessageCitationDetailsIF extends CitationDetails {
String CITATION_TYPE = "message";

@Override
@Value.Derived
default String getCitationType() {
return CITATION_TYPE;
}

String getChannel();

String getMessageTs();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.hubspot.slack.client.models.blocks.elements.richtextelements;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import java.util.Optional;
import org.immutables.value.Value;
import org.immutables.value.Value.Immutable;

/**
* Slack's attachment mention element renders as a rich app attachment or entity reference.
* This is a rich text element, compatible only with the {@code rich_text} block. It must be
* used within the {@code rich_text_list}, {@code rich_text_quote}, or {@code rich_text_section}
* block element within the {@code rich_text} block's {@code elements} array.
* @see <a href="https://docs.slack.dev/reference/block-kit/block-elements/attachment-mention-element">Attachment mention element</a>
*/
@Immutable
@HubSpotStyle
@Value.Enclosing
@JsonNaming(SnakeCaseStrategy.class)
public interface RichTextAttachmentMentionElementIF extends RichTextElement {
String TYPE = "attachment_mention";

@Override
@Value.Derived
default String getType() {
return TYPE;
}

@Value.Parameter
String getUrl();

Optional<String> getText();

Optional<String> getAppId();

Optional<String> getEntityId();

Optional<String> getIconUrl();

Optional<String> getChannelId();

Optional<String> getTs();

Optional<Boolean> getFullSizePreviewEnabled();

Optional<String> getIconName();

Optional<String> getReferenceObjectType();

Optional<String> getProductName();

Optional<StyleIF> getStyle();

@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
@JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonDeserialize(as = RichTextAttachmentMentionElement.Style.class)
interface StyleIF {
Optional<Boolean> getBold();

Optional<Boolean> getItalic();

Optional<Boolean> getStrike();

Optional<Boolean> getHighlight();

Optional<Boolean> getClientHighlight();

Optional<Boolean> getUnderline();

Optional<Boolean> getUnlink();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.hubspot.slack.client.models.blocks.elements.richtextelements;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.hubspot.immutables.style.HubSpotStyle;
import java.util.Optional;
import org.immutables.value.Value;
import org.immutables.value.Value.Immutable;

/**
* Slack's canvas element renders as a link to a canvas.
* This is a rich text element, compatible only with the {@code rich_text} block. It must be
* used within the {@code rich_text_list}, {@code rich_text_quote}, or {@code rich_text_section}
* block element within the {@code rich_text} block's {@code elements} array.
* @see <a href="https://docs.slack.dev/reference/block-kit/block-elements/canvas-element">Canvas element</a>
*/
@Immutable
@HubSpotStyle
@Value.Enclosing
@JsonNaming(SnakeCaseStrategy.class)
public interface RichTextCanvasElementIF extends RichTextElement {
String TYPE = "canvas";

@Override
@Value.Derived
default String getType() {
return TYPE;
}

@Value.Parameter
String getFileId();

Optional<String> getLabel();

Optional<Boolean> getHideTitle();

Optional<String> getSectionId();

Optional<String> getText();

Optional<String> getUrl();

Optional<Boolean> getIsSkillInvocation();

Optional<StyleIF> getStyle();

@Immutable
@HubSpotStyle
@JsonNaming(SnakeCaseStrategy.class)
@JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonDeserialize(as = RichTextCanvasElement.Style.class)
interface StyleIF {
Optional<Boolean> getBold();

Optional<Boolean> getItalic();

Optional<Boolean> getStrike();

Optional<Boolean> getHighlight();

Optional<Boolean> getClientHighlight();

Optional<Boolean> getUnderline();

Optional<Boolean> getUnlink();
}
}
Loading
Loading