FruxonDocs
ApiTriggers

Dry-runs the supplied trigger bindings + sample payload through the same resolver the dispatcher uses at fire time

Returns one entry per submitted binding. On success the entry carries the resolved `parameters` dict the agent executor would receive; on failure the entry carries an `error` message (unknown parameter name, type-coercion mismatch, agent with no deployed revision).

POST
/v1/tenants/{tenant}/triggers/preview
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

tenant*string

The tenant identifier

bindings?|null

Bindings to preview. One Fruxon.Model.Triggers.PreviewBindingResult comes back per binding in the same order.

payload*

Envelope passed through every trigger-fire path (schedule, manual, integration event). Carries the structured body the mapping resolver queries against so the rest of the system can treat all three sources uniformly.

Fruxon.Model.Triggers.TriggerFirePayload.Body is intentionally System.Object-typed at the leaves — keys map to whatever shape the source provides (string for most fields, nested dictionaries for sub-objects, arrays for repeated structures). The resolver's dotted-path lookup handles all three transparently. Fruxon.Model.Triggers.TriggerFirePayload.Body has two top-level keys — trigger (the per-trigger context the platform synthesises on every fire) and payload (the inbound event envelope, present only for Fruxon.Model.Triggers.TriggerFireSource.IntegrationEvent). Mappings reference them as {{trigger.now}} / {{payload.text}} / {{payload.message_attributes.repository}}. Per-source canonical keys (callers should keep these stable so mapping configurations don't break across releases):Scheduletrigger: now, timezoneManualtrigger: now, timezoneIntegrationEventtrigger: now, timezone; payload: text, from, from_name, conversation_name, conversation_address, session_id, event_type, message_attributes (nested dict)

filter?

Operator-defined content predicate on an Fruxon.Model.Triggers.TriggerKind.IntegrationEvent trigger. The structural match (integration / config / event type) decides whether an inbound event reaches a trigger at all; the filter decides whether a matched event actually fires the bound agents. A null filter — or one with no conditions — fires always, so every pre-existing trigger is unaffected. Evaluated by Fruxon.Model.Triggers.TriggerEventFilterEvaluator against the inbound payload.* envelope, once per trigger, before the binding fan-out (see Fruxon.Model.Triggers.IntegrationEventDispatcher). Stored as JSONB on the trigger and snapshotted into Fruxon.Model.Triggers.TriggerRevision.

[key: string]?never

Response Body

curl -X POST "https://api.fruxon.com/v1/tenants/string/triggers/preview" \  -H "Content-Type: application/json" \  -d '{    "payload": {      "source": "UNSPECIFIED"    }  }'
{
  "bindings": [
    {
      "agentId": "string",
      "parameters": {},
      "error": "string"
    }
  ],
  "filterMatched": false
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}
Empty
Empty