Component Specification
Component
The component definition describes a reusable integration component (its metadata, actions, triggers, and optional connection). Below is an explanation of each method you can use when building a component with the DSL:
component(String name)- Builds a newModifiableComponentDefinitionwith the specified backend ID. The name is the component ID used internally and in workflow JSON.actions(A... actionDefinitions)- Declares the actions exposed by this component.categories(ComponentCategory... category)/categories(List<ComponentCategory> categories)- Assigns UI categories for grouping and discovery in the catalog. See ComponentCategory.connection(ModifiableConnectionDefinition connectionDefinition)- Defines the connection used by actions/triggers. If not set, actions can still run without a connection if they don't require one.customAction(boolean customAction)- If true, enables the Custom Action feature in the UI (typically for REST/OpenAPI‑based connectors).customActionHelp(Help customActionHelp)- Adds help text for the Custom Action. Displayed as a popup in the UI next to the Custom Action.description(String description)- Short description shown in the catalog and tooltips.icon(String icon)- Path or resource name of the SVG icon shown in the UI.resources(String documentationUrl)/resources(String documentationUrl, Map<String, String> additionalUrls)- Links to product documentation and optional additional resources (e.g., FAQ, blog posts, templates).title(String title)- Human‑readable display name (Chicago style) shown in the UI.triggers(T... triggerDefinitions)- Declares triggers available on this component.clusterElements(ClusterElementDefinition<?>... clusterElements)- Declares reusable cluster elements (e.g., AI tools) that the component may expose.version(int version)- Component version number. Increment this when you make breaking changes so existing workflows can continue to use older versions.
Example
private static final ComponentDefinition COMPONENT_DEFINITION = component("textHelper")
.title("Text Helper")
.description("Helper component which contains operations to help you work with text.")
.icon("path:assets/text-helper.svg")
.categories(ComponentCategory.HELPERS)
.actions(TextHelperUpperCaseAction.ACTION_DEFINITION);