Skip to content

Transactions and logging

Transaction identifiers, timing fields, context, and what Datastruct records

Every /data and /func call is one transaction. This reference defines its identifier, timing, context, and recorded data.

Transaction identifiers

JSON
{ "transaction_id": "trx_01k2v8q9m7f3zb6cw4h5n0j1xd" }

The identifier is a trx_ TypeID backed by UUIDv7. It is opaque: do not parse it or derive a timestamp. Every retry gets a new identifier. Include it in support requests.

Identifier prefixes

Prefix Object
trx_ Transaction
org_ Organization
wfl_ Workflow
dfunc_ Data function
crd_ Stored credential
dsrc_ Data source
dprv_ Data provider

All identifiers are opaque.

Timing

Field Scope
Top-level response_time_ms Whole service request
status.<name>.response_time_ms One source or function

Source timing includes credential resolution. Since /data runs sources in parallel, total time is near the slowest source, not their sum. Service timing excludes client-to-service network time.

Context

config.context accepts prod, test, or dev; default dev. It labels the transaction. It does not change what is recorded. Send prod for production traffic. For /func, it also selects which stored credential auto-selection uses. See Source configuration.

Recorded data

Transactions record the identifier, organization, workflow, context, run configuration, and status. Input and output values are recorded only where Datastruct has marked a field as safe to log:

Endpoint Recorded input and output values
/data None
/func Fields the data function marks as safe to log, such as whether a record matched and the error type. Other fields are omitted.

These rules apply in every context.

Confirmation needed: Confirm the transaction retention period.

Confirmation needed: Confirm whether customers can currently read transaction records through the console or an API. Until confirmed, integrators should retain their own operational logs.