API reference
Kiwi Fabric activities
Federated queries, distributed transactions, data-source registration and file upload against Kiwi Fabric.
Federated queries, distributed transactions, data-source registration and file upload against Kiwi Fabric. This page covers 5 activity types.
kiwi_fabric_connection#
Kiwi Fabric Connection. Opens a connection to a Kiwi Fabric instance for later Kiwi Federated Query / Kiwi Distributed Transaction activities to reuse.
| Input | Type | Required | Description |
|---|---|---|---|
baseUrl |
string | Yes | Kiwi Fabric API base URL, e.g. https://fabric.example.com |
apiKey |
string | Yes | Kiwi Fabric API key (sent as Authorization: Bearer) Secret: stored encrypted. |
| Output | Type | Description |
|---|---|---|
output.connection |
object | The live client — pick this node in a Kiwi Federated Query / Kiwi Distributed Transaction activity's "Connection" field to reuse it |
Config block example:
{}
kiwi_fabric_datasource#
Kiwi Fabric Data Source. Register a Kiwi Fabric data source and/or a queryable capability (table) on it — makes an uploaded file, or any other source, queryable by name.
Operations: registerDataSource, registerCapability. Set with the operation input.
| Input | Type | Required | Description |
|---|---|---|---|
connection |
string | No | Reuse a Kiwi Fabric Connection node already on the canvas. Leave unset to configure a standalone connection below instead. Can reuse a kiwi_fabric_connection node. |
baseUrl |
string | No | Kiwi Fabric API base URL, e.g. https://fabric.example.com (only used when no Connection node is selected above) |
apiKey |
string | No | Kiwi Fabric API key (only used when no Connection node is selected above) Secret: stored encrypted. |
name |
string | No | Data source name to register (must be unique in Kiwi Fabric) Used when operation is registerDataSource. |
type |
string | No | Data source category (default: File) Used when operation is registerDataSource. Allowed values: File, Rdbms, NoSql, Rest, Soap, Cloud, VectorDb. Default: File. |
subType |
string | No | Sub-type within the category — for File: CSV, TSV, Json, Parquet, Excel, Avro, Delta, Iceberg (auto-detected from the extension if omitted) Used when operation is registerDataSource. |
connectionStringTemplate |
string | No | For File sources: the file's storage path — use a Kiwi Fabric File upload's output.relativePath. For other types: the connection string. Used when operation is registerDataSource. |
description |
string | No | Optional description |
username |
string | No | Optional — only needed for credentialed source types Used when operation is registerDataSource. |
password |
string | No | Optional — only needed for credentialed source types Used when operation is registerDataSource. Secret: stored encrypted. |
dataSourceName |
string | No | The data source this capability belongs to (must already exist — see registerDataSource) Used when operation is registerCapability. |
tableName |
string | No | The queryable table name — this is what you SELECT ... FROM in a Kiwi Federated Query Used when operation is registerCapability. |
columns |
array | No | Column schema: [{"name": "...", "type": "string|int|long|float|double|decimal|bool|DateTime|Guid", "isNullable": true}] Used when operation is registerCapability. |
identityColumn |
string | No | Identity/primary-key column name — optional for a read-only capability Used when operation is registerCapability. |
predicateCapabilities |
string | No | How much filtering can be pushed down to the source (default: None) Used when operation is registerCapability. Allowed values: None, Partial, Full. |
supportsProjection |
boolean | No | Whether column projection can be pushed down (default: true) Used when operation is registerCapability. |
supportsPaging |
boolean | No | Whether paging can be pushed down (default: true) Used when operation is registerCapability. |
kind |
string | No | Capability kind (default: Table) Used when operation is registerCapability. Allowed values: Table, StoredProcedure, SpRead, SpWrite. Default: Table. |
| Output | Type | Description |
|---|---|---|
output.id |
string | The registered data source's id (registerDataSource) |
output.name |
string | The registered data source's name (registerDataSource) |
output.type |
string | The registered data source's type (registerDataSource) |
output.subType |
string | The registered data source's sub-type (registerDataSource) |
output.connectionStringTemplate |
string | The registered data source's connection string/path (registerDataSource) |
output.isActive |
boolean | Whether the data source is active (registerDataSource) |
output.dataSourceName |
string | The capability's owning data source (registerCapability) |
output.tableName |
string | The registered, now-queryable table name (registerCapability) |
output.columns |
array | The capability's registered column schema (registerCapability) |
output.predicateCapabilities |
string | Pushdown level Kiwi Fabric recorded (registerCapability) |
output.supportsProjection |
boolean | Whether projection pushdown is enabled (registerCapability) |
output.supportsPaging |
boolean | Whether paging pushdown is enabled (registerCapability) |
Config block example:
{
"kiwi_fabric_datasource": {
"operation": "registerCapability"
},
"inputs": [
{
"name": "dataSourceName",
"value": "sales_upload"
},
{
"name": "tableName",
"value": "sales"
},
{
"name": "columns",
"value": [
{
"name": "productId",
"type": "int"
},
{
"name": "amount",
"type": "decimal"
}
]
}
]
}
kiwi_fabric_file#
Kiwi Fabric File. Upload a file into Kiwi Fabric's managed storage, or list/delete previously uploaded files.
Operations: upload, list, delete. Set with the operation input.
| Input | Type | Required | Description |
|---|---|---|---|
connection |
string | No | Reuse a Kiwi Fabric Connection node already on the canvas. Leave unset to configure a standalone connection below instead. Can reuse a kiwi_fabric_connection node. |
baseUrl |
string | No | Kiwi Fabric API base URL, e.g. https://fabric.example.com (only used when no Connection node is selected above) |
apiKey |
string | No | Kiwi Fabric API key (only used when no Connection node is selected above) Secret: stored encrypted. |
storageId |
string | No | Use a governed Storage instead of a literal path/contentBase64 below — the physical location is configured by an administrator and never exposed to the workflow. Used when operation is upload. |
areaId |
string | No | Storage Area within the Storage above — the RBAC boundary this operation is authorized against. Used when operation is upload. |
relativePath |
string | No | Path relative to the Storage Area's root to upload Used when operation is upload. |
path |
string | No | Local file path to upload. Either this or contentBase64 is required. Ignored when a Storage is picked above. Used when operation is upload. |
contentBase64 |
string | No | File content as base64 — an alternative to path for uploading content produced earlier in the run without touching disk. Requires fileName. Ignored when a Storage is picked above. Used when operation is upload. |
fileName |
string | No | File name to register with Kiwi Fabric (defaults to path's own file name when using path; required when using contentBase64) Used when operation is upload. |
format |
string | No | Format hint — auto-detected from the file extension when omitted (required for formats with no reliable extension, e.g. Delta/Iceberg) Used when operation is upload. Allowed values: Csv, Tsv, Json, Parquet, Excel, Delta, Iceberg, Avro. |
fileId |
string | No | The file's id (from a prior upload/list) to delete Used when operation is delete. |
| Output | Type | Description |
|---|---|---|
output.fileId |
string | The uploaded file's id (upload) |
output.originalName |
string | The uploaded file's original name (upload) |
output.relativePath |
string | Storage path/URI Kiwi Fabric registered the file under (upload) — pass as FilePath when separately registering a data source |
output.sizeBytes |
number | File size in bytes (upload) |
output.format |
string | The format Kiwi Fabric recorded for the file (upload) |
output.uploadedAt |
string | Upload timestamp (upload) |
output.files |
array | Previously uploaded files — each shaped like the upload outputs above (list) |
output.message |
string | Result message (delete) |
Config block example:
{
"kiwi_fabric_file": {
"operation": "upload"
},
"inputs": [
{
"name": "path",
"value": "C:/reports/sales.xlsx"
},
{
"name": "format",
"value": "Excel"
}
]
}
kiwi_fabric_query#
Kiwi Federated Query. Run a SQL query that transparently federates across Kiwi Fabric's registered data sources.
| Input | Type | Required | Description |
|---|---|---|---|
connection |
string | No | Reuse a Kiwi Fabric Connection node already on the canvas. Leave unset to configure a standalone connection below instead. Can reuse a kiwi_fabric_connection node. |
baseUrl |
string | No | Kiwi Fabric API base URL, e.g. https://fabric.example.com (only used when no Connection node is selected above) |
apiKey |
string | No | Kiwi Fabric API key (only used when no Connection node is selected above) Secret: stored encrypted. |
sql |
string | Yes | SQL to execute, e.g. SELECT * FROM orders o JOIN crm_customers c ON o.customer_id = c.id WHERE o.total > @minTotal |
parameters |
object | No | Named parameters referenced in the SQL as @name, e.g. {"minTotal": 100} |
| Output | Type | Description |
|---|---|---|
output.rows |
array | Result rows, each a dictionary of column name to value |
output.rowCount |
number | Number of rows returned |
output.originalSql |
string | The SQL that was executed |
output.totalMs |
number | Total query execution time in milliseconds |
output.sourceSummaries |
array | One entry per underlying data source touched — rows fetched, timing, and predicate/projection pushdown flags |
Config block example:
{
"inputs": [
{
"name": "sql",
"value": "SELECT * FROM orders WHERE total > @minTotal"
},
{
"name": "parameters",
"value": {
"minTotal": 100
}
}
]
}
kiwi_fabric_saga#
Kiwi Distributed Transaction. Execute a multi-step distributed transaction (SAGA) via Kiwi Fabric, with automatic compensation on failure.
| Input | Type | Required | Description |
|---|---|---|---|
connection |
string | No | Reuse a Kiwi Fabric Connection node already on the canvas. Leave unset to configure a standalone connection below instead. Can reuse a kiwi_fabric_connection node. |
baseUrl |
string | No | Kiwi Fabric API base URL, e.g. https://fabric.example.com (only used when no Connection node is selected above) |
apiKey |
string | No | Kiwi Fabric API key (only used when no Connection node is selected above) Secret: stored encrypted. |
sagaId |
string | No | Optional saga id (a GUID is generated if omitted) |
steps |
array | Yes | Saga steps: [{id, table, operation: insert|update|delete|rawsql|restcall|execute, dependsOn, payload/setClauses+filter/actionSql+compensationSql/actionUrl+.../spParameters, ...}] — steps with the same dependsOn run in parallel; on any failure, already-completed steps are compensated automatically in reverse order. |
parameters |
object | No | Saga-level named values, referenced from stored-procedure step parameter bindings |
| Output | Type | Description |
|---|---|---|
output.sagaId |
string | The executed saga's id |
output.success |
boolean | Whether every step completed (false if any step failed and was compensated) |
output.durationMs |
number | Total saga execution time in milliseconds |
output.errorMessage |
string | Failure reason, if any |
output.steps |
array | Per-step results — forward steps, then compensation steps (id suffixed ":compensation") if compensation ran |
output.gaps |
array | Steps with no compensation path that could not be reversed, if any |
Config block example:
{
"inputs": [
{
"name": "steps",
"value": [
{
"id": "s1",
"table": "orders",
"operation": "insert",
"payload": {
"customerId": 42,
"total": 199.99
}
}
]
}
]
}