Skip to main content
Version: 2.0
Data Instance Node interface

Data Instance node

Data Instance Node

Overview

The Data Instance Node reshapes incoming payloads into a governed, model-shaped object by evaluating direct JavaScript expressions for each field.
It is ideal when you want a strongly-typed, well-documented data structure (often aligned with a Compose data model) but you still need full flexibility to calculate each field from raw inputs, combined sources, or other computed fields.

Unlike template-style nodes that use {{ }} expressions, Data Instance works with plain JavaScript code and an execution engine that:

  • Resolves field dependencies (via $fields) automatically.
  • Supports single objects, arrays, or merged inputs from multiple upstream nodes.
  • Performs type conversion into common scalar types (String, Boolean, Int/UInt, Float, DateTime).

Configuration Reference

Parameters

ParameterTypeDefaultRequiredDescription
Model IDstring""NoData model ID. When selected, auto-populates fields from model schema.
Fieldsarray[]YesField definitions for data transformation.
Error Modeselect"continueAll"YesstopOnError / continueAll

Field Definition (fields[])

PropertyTypeDescription
NamestringTarget field name (e.g., firstName, order.total).
TypeselectOutput type (String, Boolean, Int8/16/32/64, UInt8/16/32/64, Float32/Float64, DateTime).
Expressionstring (JS)JavaScript code that returns the field value. Has access to $input, $node, $trigger, and $fields.
RequiredbooleanMarks the field as required in the configuration UI.
Sensitivitynumber (1--5)Sensitivity level for data governance and UX.

Settings

SettingOptionsDefaultDescription
Timeout (seconds)numberPipeline defaultMaximum execution time for this node (1--600).
Retry on TimeoutPipeline Default / Enabled / DisabledPipeline DefaultWhether to retry on timeout.
Retry on FailPipeline Default / Enabled / DisabledPipeline DefaultWhether to retry on failure. When Enabled, shows Advanced Retry Configuration.
On ErrorPipeline Default / Stop Pipeline / Continue ExecutionPipeline DefaultBehavior when node fails after all retries.

Advanced Retry Configuration

Only visible when Retry on Fail is set to Enabled.

FieldTypeDefaultRangeDescription
Max Attemptsnumber31--10Maximum retry attempts.
Initial Delay (ms)number1000100--30,000Wait before first retry.
Max Delay (ms)number1200001,000--300,000Upper bound for backoff delay.
Multipliernumber2.01.0--5.0Exponential backoff multiplier.
Jitter Factornumber0.10--0.5Random jitter.

Expression Examples

Simple Field Calculations

// Capitalize a name
$input.firstName.toUpperCase()

// Calculate year
new Date().getFullYear()

// Mark adults vs minors
$input.age >= 18

Using $node for Cross-Node Data

// Read a field from a named upstream node
$node['Read Sensor'].temperature

// Combine data from multiple upstream nodes
$node['Fetch User'].name + ' (' + $node['Fetch Roles'].role + ')'

// Access nested data from a connector node
$node['REST Request'].body.items[0].id

Using $fields for Dependencies

// fullName field
$input.firstName + ' ' + $input.lastName

// greeting field that reuses fullName
'Hello, ' + $fields.fullName

// totalPrice based on other calculated fields
$fields.unitPrice * $fields.quantity

Usage Examples

Example 1: Normalize User Profile Payload

FieldValue
Model ID(optional) userProfileModel
Error ModecontinueAll

Fields:

NameTypeExpression
firstNameString$input.first_name
lastNameString$input.last_name
ageInt32$input.age
fullNameString$fields.firstName + ' ' + $fields.lastName

The node converts an arbitrary incoming object into a clean, typed user profile while gracefully handling missing values.

Example 2: Transform Arrays of Items

Upstream node sends an array of orders:

[
{ id: 'ORD-1', amount: 42.5, currency: 'USD' },
{ id: 'ORD-2', amount: 103.0, currency: 'USD' }
]

Fields:

NameTypeExpression
orderIdString$input.id
amountFloat64$input.amount
displayLabelString'Order ' + $input.id + ' (' + $input.currency + ')'

The output is an array of normalized order objects with consistent types and labels.

Example 3: Merge Data from Multiple Upstream Nodes

FieldValue
Model ID(none)
Error ModestopOnError

Fields:

NameTypeExpression
sensorIdString$node['Read Sensor'].id
temperatureFloat64$node['Read Sensor'].temperature
operatorNameString$node['Fetch Operator'].name
lineNameString$node['Fetch Operator'].assignedLine
labelString$fields.operatorName + ' — ' + $fields.lineName

The node pulls data from two upstream nodes and combines them into a single, flat object. The label field uses $fields to reference previously computed fields.

When to Use Data Instance

Use the Data Instance node when you need:

  • A strongly-typed, governed data model in the middle of a pipeline.
  • Complex field calculations using full JavaScript rather than inline {{ }} expressions.
  • To merge data from multiple upstream nodes into a single, well-structured object.