AckdbIngestTrait
A pre-computed trait value in an ingest request.
Properties
traitKeystringrequiredMust exist in trait_definitions for this org.
valuerequiredThe trait value. Type must match the trait definition's valueType. **Do NOT send an empty string `""` for a `number` or `date` trait - it is rejected (422). Omit the trait entirely when the source value is blank.**
opstringdefault "set"Atomic operation to apply. Default is `set` (overwrite). Use computed ops to avoid read-then-write race conditions on concurrent events. **Number ops:** `increment` (current + value), `decrement` (current - value), `min` (keep smaller), `max` (keep larger). **Date ops:** `set_if_newer` (keep more recent), `set_if_older` (keep older). **Array ops:** `append` (add items, deduped), `remove` (remove items). **The op MUST be compatible with the trait's `valueType` or the ingest is rejected (422):** `set` works for every type; `increment`/`decrement`/`min`/`max` are number-only; `set_if_newer`/`set_if_older` are date-only; `append`/`remove` are string_array-only. An omitted op silently defaults to `set` (overwrite) - pick the right op for accumulating counts/sums (`increment`) and 'keep latest' dates (`set_if_newer`), or you will clobber the prior value.
"set""increment""decrement""min""max""set_if_newer""set_if_older""append""remove"workflowstringrequiredWhich workflow computed this value. Empty string = direct API write.
confidencenumberrequiredmin 0 · max 11.0 = observed/verified, lower = inferred/estimated.
Example
{
"traitKey": "slack_message_count",
"value": 42,
"op": "increment",
"workflow": "slack-ingestion",
"confidence": 1
}