Core concepts

A handful of nouns carry the whole model. Read them top to bottom — each builds on the one before it.

Integration

The connector namespace

A top-level namespace for a product or API you connect to — stripe, acmefx. It owns the base configuration and secrets for that vendor. Integrations are platform-owned and made available to a tenant by explicit assignment.

Junction

The reusable unit

A named, versioned workflow that does one job against an integration — say acmefx.quote. A junction is the unit you author, version, and call. Junctions can call other junctions, so larger flows compose from smaller, typed pieces.

JunctionVersion

An immutable snapshot

Every change to a junction produces a new version. Once a version leaves draft it is frozen, so a published version can never shift under a caller. To edit a frozen version you open a fresh draft, which clones the latest triggers and steps.

Trigger

The entry point

How a junction is invoked, plus its typed input and output contracts and its ordered step list. A trigger has a kind: http (a synchronous call), inbound (a webhook), scheduled, signal, or manual.

Step

One unit of work

An individually testable action inside a trigger. Steps run in order, and each step's output is addressable by later steps as {{steps.<name>.output}}. Built-in step types cover authentication, shaping a value, making an HTTP call, branching on a condition, and calling another junction.

Principal

The identity & tenancy unit

The single entity for who is calling and what they can configure. Principals form a hierarchy of three tiers — admin (platform), org (your customer), and an optional sub_account. Each principal has its own API keys, and its configuration and secrets cascade down the hierarchy.

Lifecycle states

Every junction version moves through the same states. At most one version is published per junction at any time.

draft

Editable. Triggers and steps can change freely.

testing

Frozen and callable from staging — no production traffic.

published

Live in production. Exactly one per junction.

retired

Audit-only. Terminal — auto-set when a newer version publishes.

Template namespaces

Step configuration is templated with {{…}} references. Five namespaces are available at runtime:

{{input}} The trigger's validated input payload.
{{config}} Merged configuration and secrets for the calling principal.
{{junction}} Metadata about the junction being run.
{{system}} Runtime values such as the current timestamp.
{{steps.<name>.output}} The output of an earlier step.

Next: see how a run works end to end.