Data Nodes
Nodes for reading and writing data from Tables and external APIs.
Available Nodes
Fetch Data
Query data from tables
Table Insert
Insert new records
Table Update
Update/delete records
HTTP Request
HTTP requests to APIs
Fetch Data
Fetch Data
Query data from a Lux table or external database.
Configuration:
| Field | Type | Description |
|---|---|---|
source | select | lux_table or external_db |
tableName | string | Table name (e.g., customers) |
filter | json | Filter conditions |
orderBy | string | Sort order (e.g., created_at DESC) |
limit | number | Maximum records to return (default: 100) |
Output:
{{ $node.fetch_data-1.data }}- Array of matching records
Example - Fetch from Lux Table:
{
"id": "fetch_data-1",
"type": "fetch_data",
"label": "Get Active Customers",
"config": {
"source": "lux_table",
"tableName": "customers",
"filter": "{ \"status\": \"active\" }",
"orderBy": "created_at DESC",
"limit": 50
}
}Example - Dynamic Filter:
{
"config": {
"source": "lux_table",
"tableName": "orders",
"filter": "{ \"customer_id\": \"{{ $input.customerId }}\" }"
}
}Table Insert
Table Insert
Insert a new row into a table.
Configuration:
| Field | Type | Description |
|---|---|---|
tableName | string | Table to insert into |
fields | array | Array of column/value mappings |
Fields Format:
{
"fields": [
{ "column": "id", "value": "{{ $node.generate_uuid-1.id }}" },
{ "column": "name", "value": "{{ $input.name }}" },
{ "column": "email", "value": "{{ $input.email }}" },
{ "column": "created_at", "value": "{{ $node.get_timestamp-1.timestamp }}" }
]
}Output:
{{ $node.table_insert-1.success }}- Boolean success status{{ $node.table_insert-1.record }}- The inserted record
Example:
{
"id": "table_insert-1",
"type": "table_insert",
"label": "Create Customer",
"config": {
"tableName": "customers",
"fields": [
{ "column": "id", "value": "{{ $node.generate_uuid-1.id }}" },
{ "column": "name", "value": "{{ $input.name }}" },
{ "column": "email", "value": "{{ $input.email }}" }
]
}
}Table Update
Table Update
Update, upsert, or delete records in a table.
Configuration:
| Field | Type | Description |
|---|---|---|
tableName | string | Table to modify |
operation | select | update, upsert, or delete |
conditions | array | Where conditions to match rows |
fields | array | Fields to update (for update/upsert) |
matchColumns | array | Columns to match on (for upsert) |
limit | object | How many rows to affect |
Conditions Format:
{
"conditions": [
{ "column": "id", "operator": "equals", "value": "{{ $input.id }}" }
]
}Available Operators: equals, not_equals, gt, gte, lt, lte, contains, text_contains, is_null, is_not_null
Example - Update:
{
"id": "table_update-1",
"type": "table_update",
"label": "Update Status",
"config": {
"tableName": "orders",
"operation": "update",
"conditions": [
{ "column": "id", "operator": "equals", "value": "{{ $input.orderId }}" }
],
"fields": [
{ "column": "status", "mode": "set_value", "value": "shipped" }
],
"limit": { "type": "first" }
}
}Example - Upsert:
{
"config": {
"tableName": "user_preferences",
"operation": "upsert",
"matchColumns": ["user_id"],
"fields": [
{ "column": "user_id", "mode": "set_value", "value": "{{ $input.userId }}" },
{ "column": "theme", "mode": "set_value", "value": "{{ $input.theme }}" }
]
}
}Example - Find & Replace:
{
"config": {
"tableName": "products",
"operation": "update",
"conditions": [
{ "column": "description", "operator": "text_contains", "value": "old-domain.com" }
],
"fields": [
{ "column": "description", "mode": "find_replace", "find": "old-domain.com", "replace": "new-domain.com" }
],
"limit": { "type": "all" }
}
}API Request
HTTP Request
Make HTTP requests to external APIs.
Configuration:
| Field | Type | Description |
|---|---|---|
method | select | GET, POST, PUT, PATCH, DELETE |
url | expression | Request URL |
headers | keyvalue | Request headers |
queryParams | keyvalue | URL query parameters |
body | keyvalue | Request body (for POST/PUT/PATCH) |
timeout | number | Timeout in seconds (default: 30) |
Output:
{{ $node.api_request-1.status }}- HTTP status code{{ $node.api_request-1.data }}- Response body{{ $node.api_request-1.headers }}- Response headers
Example - GET Request:
{
"id": "api_request-1",
"type": "api_request",
"label": "Get User",
"config": {
"method": "GET",
"url": "https://api.example.com/users/{{ $input.userId }}"
}
}Example - POST Request:
{
"id": "api_request-1",
"type": "api_request",
"label": "Create Order",
"config": {
"method": "POST",
"url": "https://api.example.com/orders",
"headers": [
{ "key": "Content-Type", "value": "application/json" },
{ "key": "Authorization", "value": "Bearer {{ $env.API_KEY }}" }
],
"body": [
{ "key": "customer_id", "value": "{{ $input.customerId }}" },
{ "key": "amount", "value": "{{ $input.amount }}" }
]
}
}Expression Syntax
Reference data from previous nodes:
| Pattern | Description |
|---|---|
{{ $input.fieldName }} | Input data from trigger |
{{ $node.fetch_data-1.data }} | Output from fetch_data node |
{{ $node.api_request-1.data.user.name }} | Nested API response data |
{{ $env.API_KEY }} | Environment variable/secret |
{{ $now }} | Current ISO timestamp |
See Also: