ByteChef LogoByteChef
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 new ModifiableComponentDefinition with 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);

On this page