Documentation Index
Fetch the complete documentation index at: https://iii.dev/docs/llms.txt
Use this file to discover all available pages before exploring further.
What a Trigger is
A Trigger is a binding that tells iii when to invoke a Function. The Trigger declares a type (the kind of event that causes it to fire), a configuration (the per-type details, like an HTTP path or a cron expression), and the function ID it invokes. When the corresponding event happens, the Trigger fires and the Engine routes the invocation to a Worker that provides the Function. HTTP requests, cron schedules, queue messages, state changes, log events, and stream events all become Function invocations through Triggers.Trigger types
worker.trigger() and the iii trigger CLI command can invoke any registered Function via its
function_id (see Functions / Direct
invocation). The trigger types described below
are how Functions get bound to other event sources (HTTP requests, cron schedules, queue messages,
etc.). Workers can define their own trigger types.http trigger
type. The iii-cron Worker provides the cron trigger type. The iii-state Worker provides the
state trigger type. A Trigger of a given type can only be registered while a Worker advertising
that type is connected, because that Worker is what produces the events that fire it.
Trigger components
A Trigger has three parts: atype (the kind of event, like http or cron), a config (the
per-type details, like an HTTP path or a cron expression), and a function_id (the Function to
invoke). Together they tell iii what event to listen for, how to listen, and what to call when the
event happens.
Conditional triggers
A Trigger can also specify an optionalcondition_function_id, which can be any gating function
that returns truthy/falsey result. If specified the Engine invokes the condition function first and
the function_id’s handler will only execute if the condition function returns a truthy value.
Since Triggers are concerned with “when to do” and Functions are concerned with “what to do” these
conditional functions preserve that separation: the Function stays focused on its work instead of
accumulating per-Trigger guards that the developer has to link specific invocation paths. Using
condition functions correctly helps maintain Worker and Function composability.
Trigger pipeline
When a Trigger fires, the Engine looks up itsfunction_id in the live registry, finds a Worker
that currently provides the Function, and dispatches the invocation. The function handler sees the
payload alone, never the source of the Trigger or the type of event that fired it.
Trigger Actions
Functions invocation can be controlled via Trigger Actions. The default, synchronous mode blocks until the Function returns its result or the configured timeout fires. The fire-and-forget mode (TriggerAction.Void) returns immediately, scheduling the Function to run without waiting for a
result. Synchronous invocations are appropriate when the caller needs the value the Function
returns. Fire-and-forget is for side-effect work where the caller does not need to wait.
Workers can also define their own
TriggerActions. The iii-queue Worker provides
TriggerAction.Enqueue({queue}), which routes the invocation through a named queue with retries.
See iii-queue for the queue mechanics.Trigger lifecycle
Triggers move through four states.registered means the Trigger has been declared with the Engine.
active means the Trigger is currently listening for its event. invoked means an event has fired
the Trigger. unregistered means the Trigger has been removed. When the Worker that owns a Trigger
disconnects, all of its Triggers are unregistered automatically along with its Functions.
Trigger conditions
A Trigger can carry an optionalcondition_function_id that runs before the handler. When the
Trigger fires, the Engine invokes the condition function with the same payload the handler would
receive. If the condition returns a truthy value, the handler runs; if not, the invocation is
skipped. Use this when the same event source should sometimes fire the Function and sometimes not,
without splitting the Trigger into separate event-source registrations.