Partial update
Applies a partial update: only the non-null fields of the request are written. `Kind` is immutable. Agent bindings are managed through the nested `bindings` sub-resource, not this endpoint.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The trigger identifier.
uuidThe tenant identifier
The patch payload — null fields are left unchanged.
Repoint the trigger at a different TenantIntegrationConfig (one Slack workspace to another). The integration id itself is immutable — switching providers is a recreate, not an update. Null means "leave alone" (consistent with the rest of this DTO); clearing the pin isn't supported here.
uuidint3260 <= value <= 2147483647"UNSPECIFIED" | "DAILY" | "WEEKLY" | "MONTHLY" | "INTERVAL""UNSPECIFIED" | "MONDAY" | "TUESDAY" | "WEDNESDAY" | "THURSDAY" | "FRIDAY" | "SATURDAY" | "SUNDAY"The days of the week a Weekly schedule fires on. Null leaves the stored set untouched (patch semantics, like the rest of this DTO); a non-null list replaces it. Pass an empty list to clear back to the single scalar day. Only valid for Weekly; no duplicates.
int32Multiple intra-day fire times for a Daily or Weekly schedule. Null leaves the stored list untouched (patch semantics, like the rest of this DTO); a non-null list replaces it. Pass an empty list to clear back to the single scalar time. Only valid for Daily/Weekly; entries must be ≥30 minutes apart.
int32"UNSPECIFIED" | "MINUTES" | "HOURS" | "DAYS"Content filter patch. Null leaves the stored filter untouched (consistent with the rest of this DTO). An explicit filter replaces it; an explicit filter with no conditions clears it back to fire-always. Only valid on TriggerKind.IntegrationEvent triggers. See Triggers.TriggerEventFilter.
Work-shape patch. Follows the same semantics as UpdateTriggerRequest.Filter: null leaves the stored work shape untouched, an explicit value replaces it. Clearing a work shape is deliberately NOT expressible here — it would orphan a live ledger's items behind an automation that no longer admits, and the operator verb for that is drain, not a silent PATCH. Only valid on TriggerKind.Schedule triggers in V0.
How often this automation reports what its work came to, and at what hour. Null leaves the
current setting alone, the same rule UpdateTriggerRequest.WorkShape and Filter follow — an
edit that is not about reporting must not silently reset it.
When non-null, fully replaces the trigger's bindings + mappings: agents
in the list are kept or added; bindings missing from the list are
removed; for agents that appear in both before and after, the
mapping list is replaced wholesale. Null leaves bindings + mappings
untouched, consistent with the rest of this patch DTO. The existing
per-binding endpoints (PUT/DELETE /triggers/{id}/bindings/{agent})
stay available for atomic single-binding membership tweaks without
touching mappings.
Response Body
curl -X PATCH "https://api.fruxon.com/v1/tenants/string/triggers/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "00000000-0000-0000-0000-000000000000",
"networkId": "00000000-0000-0000-0000-000000000000",
"kind": "SCHEDULE",
"integrationId": "string",
"integrationConfigId": "00000000-0000-0000-0000-000000000000",
"eventType": "string",
"displayName": "string",
"active": false,
"timeout": 0,
"scheduleFrequency": "DAILY",
"scheduleDay": "MONDAY",
"scheduleDays": [
"MONDAY"
],
"scheduleDayOfMonth": 0,
"scheduleHour": "string",
"scheduleMinute": "string",
"scheduleTimes": [
{
"hour": 0,
"minute": 0
}
],
"intervalValue": 0,
"intervalUnit": "MINUTES",
"timezone": "string",
"filter": {
"match": "ALL",
"conditions": [
{
"path": "string",
"operator": "UNSPECIFIED",
"value": "string",
"values": null,
"caseSensitive": false
}
]
},
"workShape": {
"door": {
"doorId": "string",
"integrationConfigId": "string",
"query": "string",
"parameters": {},
"startFrom": 0,
"skipWhen": {
"match": "UNSPECIFIED",
"conditions": []
},
"projection": [
"string"
]
},
"source": {
"kind": "TOOL",
"ragAssetId": "string",
"ragReadMode": "DOCUMENTS",
"ragSearch": "string",
"pageSize": 0,
"integrationConfigId": "string",
"integrationId": "string",
"listToolId": "string",
"getToolId": "string",
"recordsPath": "string",
"cursorParamName": "string",
"totalPath": "string",
"pageOrder": "SOURCE_ORDER",
"parameters": {},
"itemIdPath": "string",
"itemVersionPath": "string",
"previousVersionField": "string",
"sinkTargetPath": "string",
"sinkTargetKind": "ROW",
"skipWhen": {
"match": "UNSPECIFIED",
"conditions": []
},
"sourceUrlPath": "string",
"cursorPath": "string",
"watermarkParamName": "string",
"watermarkFormat": "RAW",
"overlapWindowMs": 0,
"startFrom": 0,
"flattenSheetRows": false
},
"onDemand": {
"keyPaths": [
"string"
],
"labelPaths": [
"string"
],
"inputs": [],
"tool": {
"enabled": false,
"description": "string"
},
"agentsMayStart": false
},
"stages": [
{
"id": "string",
"displayName": "string",
"kind": "UNSPECIFIED",
"agentId": "string",
"instruction": "string",
"ask": null,
"wait": null,
"batch": null,
"sink": null,
"actionTypeCeiling": null,
"claimLimit": null,
"maxRunning": null,
"parameters": [],
"produces": [],
"requires": [],
"dedupeKey": [],
"routes": [],
"ignoreReasons": []
}
],
"parameters": [
{
"name": "string",
"value": "string",
"description": "string"
}
],
"policy": {
"claimLimit": 0,
"maxAttempts": 0,
"leaseSeconds": 0,
"actionTypeCeiling": "READ_ONLY",
"itemCostCapUsd": 0,
"effectiveClaimLimit": 1,
"effectiveMaxAttempts": 1,
"effectiveLeaseSeconds": 1
},
"outcomeUnit": {
"singular": "string",
"plural": "string"
},
"cohorts": {
"window": "DAY",
"settleWithinHours": 0,
"confirmAboveCredits": 0,
"followUp": []
}
},
"outcomeDigest": {
"frequency": "DAILY",
"sendHour": 0,
"report": {
"agentId": "string",
"contactSlot": "string",
"labelPaths": [
"string"
],
"isComplete": true,
"effectiveLabelPaths": [
"string"
]
}
},
"createdAt": 0,
"modifiedAt": 0,
"lastFiredAt": 0,
"hasWebhookKey": false,
"webhookOwnership": "PER_BINDING",
"agentIds": [
"string"
],
"bindings": [
{
"agentId": "string",
"parameterMappings": [],
"environmentSlug": "string",
"outputBindingId": "00000000-0000-0000-0000-000000000000",
"outputDestination": {
"bindingId": "00000000-0000-0000-0000-000000000000",
"participantId": "00000000-0000-0000-0000-000000000000",
"integrationConfigId": "00000000-0000-0000-0000-000000000000",
"provider": "string",
"address": "string"
},
"defaultOutputDestinations": []
}
],
"warnings": [
"string"
],
"managedBy": {
"ownerKind": "KNOWLEDGE_SOURCE",
"ownerId": "00000000-0000-0000-0000-000000000000",
"roles": [
"SOURCE"
],
"ownership": "MANAGED",
"ownerDisplayName": "string",
"ownerContainerId": "00000000-0000-0000-0000-000000000000",
"ownerContainerDisplayName": "string",
"linkedOwnerCount": 0
}
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}What the automation spent over time, agent by agent and part by part.
The `ledger/spend` figure bucketed by day or week: the same runs, attributed to the same agents and parts and priced the same way, so the buckets of one budget window add up to that window's `ledger/spend`. Tokens are priced per UTC day, so `HOUR` is refused. Counted live from run records, so a window reaching further back than the workspace keeps run history is counted from `countedFromMs`. Buckets with no spend are omitted. A run that spans midnight UTC puts its tool cost and credits on the day it started and the tokens it used after midnight on the next day.
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). Nothing in the route or body names an Application, so each binding's agent is checked on its own: an agent the caller cannot reach reads exactly as one that does not exist — the same `not found` error, with nothing about its revision or parameters.