Skip to main content
The Workflow resource is the primary declarative unit in the Graph Workflow Protocol (apiVersion: aether/v1). It describes a directed execution graph — which templates to run, how they are connected, what arguments they accept, and what lifecycle hooks fire at key points. The engine validates and persists a full JSON snapshot of the document at submit time, so the definition that runs is always exactly what you submitted.

Top-level fields

string
required
Protocol version. Must be the string "aether/v1". Any other value causes validation to fail with ErrValidation.
string
required
Resource discriminator. Must be "Workflow" for a standalone workflow. ("CronWorkflow" is used by the CronWorkflow resource.)
object
required
Standard resource metadata.
object
required
The workflow specification. Contains the entrypoint, templates, arguments, timeout, and hooks.

Complete example

The following example demonstrates all top-level fields in a workflow that fetches data, transforms it, and sends a notification — with a timeout, priority, workflow-level arguments, and lifecycle hooks.

Validation rules

All names (metadata, template names, task names, parameter names) must match ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ with a maximum of 63 characters. Dots are reserved as the system namespace separator and are not allowed in user-defined names.
spec.entrypoint must match the name of an existing template in spec.templates. An unresolved entrypoint is a hard validation error; the workflow will not be submitted.
Hook templates must be task templates. Referencing a dag or loop template from a hook causes validation to fail. Hooks are fire-and-forget notifications, not recursive scheduling units.