@celigo/api-specs 0.2.214 → 0.2.216

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ai-agent.yml CHANGED
@@ -23,9 +23,11 @@ tags:
23
23
 
24
24
  Three built-in providers — OpenAI (via the Responses API), Google Gemini (via
25
25
  LiteLLM), and Anthropic Claude (via LiteLLM) — run on platform-managed
26
- credentials or, with a `_connectionId`, on your own key (BYOK). Catalog
27
- providers — Mistral, xAI, Hugging Face, DeepSeek, Cohere, and Groq — use one generic
28
- flat configuration format and always run on a BYOK connection.
26
+ credentials or, with a `_connectionId`, on your own key (BYOK). Every other
27
+ provider is a catalog provider — Mistral, xAI, Hugging Face, DeepSeek, Cohere, Groq,
28
+ Together AI, Azure OpenAI, Fireworks AI, AWS Bedrock, NVIDIA NIM, Ollama Cloud and
29
+ Google Vertex AI today, with new rows seeded without a platform release — and uses
30
+ one generic flat configuration format and always runs on a BYOK connection.
29
31
 
30
32
  Every model carries a lifecycle in the platform's model catalog (`active`,
31
33
  `deprecated`, `retired`, plus an availability switch). The save and every run
@@ -133,12 +135,16 @@ paths:
133
135
  Creates a new AI agent import. The provider decides the configuration
134
136
  format: `aiAgent.openai` for OpenAI, `aiAgent.litellm` for Gemini and
135
137
  Anthropic Claude, or the generic flat format (`aiAgent.model`,
136
- `aiAgent.modelOptions`, …) for the catalog providers Mistral, xAI,
137
- Hugging Face, DeepSeek, Cohere, and Groq — a block that does not match the
138
- provider is rejected. For a built-in provider, omit `_connectionId` to
139
- use platform-managed credentials or include it for BYOK; a catalog
140
- provider needs a BYOK connection to save — without one the request
141
- fails with 422 `connection_required` on `_connectionId`.
138
+ `aiAgent.modelOptions`, …) for every other provider (the catalog
139
+ providers — Mistral, xAI, Hugging Face, DeepSeek, Cohere, Groq, Together
140
+ AI, Azure OpenAI, Fireworks AI, AWS Bedrock, NVIDIA NIM, Ollama Cloud and
141
+ Google Vertex AI today) — a block that does not match the provider is
142
+ rejected. For a built-in provider, omit `_connectionId` to use
143
+ platform-managed credentials or include it for BYOK; a catalog provider
144
+ needs a BYOK connection to save — without one the request fails with 422
145
+ on `aiAgent.model`: `ai_model_not_available` for a catalog-listed model,
146
+ `ai_model_not_in_catalog` for an id the catalog does not list (the model
147
+ catalog check answers before any `connection_required`).
142
148
  operationId: createAiAgent
143
149
  tags:
144
150
  - AI Agents
@@ -1047,8 +1053,10 @@ components:
1047
1053
  - **openai**: OpenAI models (GPT-4.1, GPT-5, etc.). Configure via the `openai` object.
1048
1054
  - **gemini**: Google Gemini models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.gemini`.
1049
1055
  - **anthropic**: Anthropic Claude models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.anthropic`.
1050
- - **Catalog providers** — `mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`. Added
1051
- as catalog data rather than platform code, they share one generic flat format:
1056
+ - **Catalog providers** — every other value of `provider` (Mistral, xAI, Hugging Face,
1057
+ DeepSeek, Cohere, Groq, Together AI, Azure OpenAI, Fireworks AI, AWS Bedrock, NVIDIA NIM,
1058
+ Ollama Cloud and Google Vertex AI today; the catalog grows without a platform release).
1059
+ Added as catalog data rather than platform code, they share one generic flat format:
1052
1060
  `model`, `modelOptions`, `instructions`, `output`, and the `tools` / `prompts` /
1053
1061
  `resources` arrays directly on this object.
1054
1062
 
@@ -1094,26 +1102,45 @@ components:
1094
1102
  - deepseek
1095
1103
  - cohere
1096
1104
  - groq
1105
+ - together_ai
1106
+ - azure_ai
1107
+ - fireworks_ai
1108
+ - bedrock
1109
+ - nvidia_nim
1110
+ - ollama_chat
1111
+ - vertex_ai
1097
1112
  x-enumDescriptions:
1098
- openai: Use OpenAI models via the OpenAI Responses API (built-in; `openai` block).
1099
- gemini: Use Google Gemini models via the LiteLLM proxy (built-in; `litellm` block).
1100
- anthropic: Use Anthropic Claude models via the LiteLLM proxy (built-in; `litellm` block).
1101
- mistral: Use Mistral models (catalog provider; generic flat format, BYOK).
1102
- xai: Use xAI Grok models (catalog provider; generic flat format, BYOK).
1103
- huggingface: Use Hugging Face inference endpoint models (catalog provider; generic flat format, BYOK).
1104
- deepseek: Use DeepSeek models (catalog provider; generic flat format, BYOK).
1105
- cohere: Use Cohere models (catalog provider; generic flat format, BYOK).
1106
- groq: Use Groq-hosted models (catalog provider; generic flat format, BYOK).
1107
- description: AI provider to use.
1113
+ openai: Use OpenAI models via the OpenAI Responses API (built-in; `openai` block; Celigo AI or BYOK)
1114
+ gemini: Use Google Gemini models via the LiteLLM proxy (built-in; `litellm` block; Celigo AI or BYOK)
1115
+ anthropic: Use Anthropic Claude models via the LiteLLM proxy (built-in; `litellm` block; Celigo AI or BYOK)
1116
+ mistral: Use Mistral models (catalog provider; generic flat format, BYOK)
1117
+ xai: Use xAI Grok models (catalog provider; generic flat format, BYOK)
1118
+ huggingface: Use Hugging Face inference endpoint models (catalog provider; generic flat format, BYOK)
1119
+ deepseek: Use DeepSeek models (catalog provider; generic flat format, BYOK)
1120
+ cohere: Use Cohere models (catalog provider; generic flat format, BYOK)
1121
+ groq: Use Groq-hosted models (catalog provider; generic flat format, BYOK)
1122
+ together_ai: Use models served by Together AI (catalog provider; generic flat format, BYOK)
1123
+ azure_ai: Use deployments on an Azure AI Foundry / Azure OpenAI resource — `model` is the deployment name (catalog provider; generic flat format, BYOK)
1124
+ fireworks_ai: Use models served by Fireworks AI (catalog provider; generic flat format, BYOK)
1125
+ bedrock: Use AWS Bedrock models through cross-region inference profile ids such as `global.anthropic.claude-sonnet-4-6` (catalog provider; generic flat format, BYOK)
1126
+ nvidia_nim: Use models served by NVIDIA NIM (catalog provider; generic flat format, BYOK)
1127
+ ollama_chat: Use models served by Ollama Cloud (catalog provider; generic flat format, BYOK)
1128
+ vertex_ai: Use Gemini models on Google Vertex AI with the customer's own GCP project (catalog provider; generic flat format, BYOK)
1129
+ description: |-
1130
+ AI provider to use. Built-in providers run on Celigo AI credentials or on a
1131
+ BYOK connection; every other provider is a catalog row that runs only on a BYOK
1132
+ connection. The catalog is data — a provider can be added without a platform
1133
+ release, and `GET /api/aiproviders` lists the rows currently offered.
1108
1134
  x-celigo-ai-guidance:
1109
1135
  - |-
1110
1136
  The provider decides the configuration format, and the server rejects a
1111
1137
  mismatch with 422 `invalid_provider_config_format`: `openai` needs the
1112
1138
  `openai` block, `gemini` and `anthropic` need the `litellm` block (Gemini- or
1113
- Claude-specific settings under `litellm._overrides`), and the catalog
1114
- providers (`mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`) need the
1115
- generic flat format — `model` and `modelOptions` directly on this object,
1116
- never an `openai` or `litellm` block.
1139
+ Claude-specific settings under `litellm._overrides`), and every other
1140
+ provider (the catalog providers) needs the generic flat format — `model` and
1141
+ `modelOptions` directly on this object, never an `openai` or `litellm` block.
1142
+ Switching across that boundary replaces the whole configuration in the target
1143
+ format; nothing is translated field by field.
1117
1144
  - |-
1118
1145
  Catalog providers are BYOK-only, and the save enforces it through the model
1119
1146
  catalog: without a `_connectionId` the agent fails to save with 422
@@ -1122,6 +1149,18 @@ components:
1122
1149
  configuration.") — the model is a catalog row that is not offered on
1123
1150
  platform-managed credentials. Attach an HTTP connection to the vendor's API
1124
1151
  (token auth) before saving a catalog-provider agent.
1152
+ - |-
1153
+ Without a connection, a provider the catalog does not list is refused at the
1154
+ model check — 422 `ai_model_not_in_catalog` on `aiAgent.model` — so the
1155
+ message names the model, not the provider. Check the provider against the
1156
+ catalog before blaming the model.
1157
+ - |-
1158
+ For `azure_ai` and `bedrock` the vendor-specific settings ride the BYOK
1159
+ connection, not this object: an optional connection `baseURI` (the vendor
1160
+ endpoint the connector asks for), and connection settings forwarded to the
1161
+ vendor — Azure's `apiVersion`, Bedrock's `awsRegionName`. `bedrock`
1162
+ authenticates with a Bedrock API key (no IAM role); for `azure_ai`, `model` is
1163
+ the deployment name.
1125
1164
  model:
1126
1165
  type: string
1127
1166
  description: |-
@@ -1594,13 +1633,27 @@ components:
1594
1633
  web_search: Search the web for real-time information.
1595
1634
  mcp: Connect to an MCP server for additional external tools.
1596
1635
  image_generation: Generate images using an AI image model.
1597
- code_execution: 'Enable OpenAI''s built-in code-execution tool; carries no configuration block, send `{type: code_execution}` only'
1636
+ code_execution: 'Let the model write and run code in OpenAI''s sandbox on a BYOK agent; carries no configuration block, send `{type: code_execution}` only'
1598
1637
  tool: Reference a reusable Celigo Tool resource.
1599
1638
  description: |-
1600
1639
  Type of tool. Every type except `code_execution` is configured through the
1601
1640
  sibling object of the same name; OpenAI spells this one `code_execution`, while
1602
1641
  the Gemini and Anthropic overrides spell theirs `codeExecution` — the other spelling
1603
- fails with 422 `enum`.
1642
+ fails with 422 `enum`. Code execution runs only on a BYOK agent and only on
1643
+ models that support it: the code runs in OpenAI's sandbox with no outbound
1644
+ network access, the session lasts one hour, and each execution is billed as an
1645
+ AI Action to the connection's OpenAI account rather than as Celigo AI credits.
1646
+ x-celigo-ai-guidance:
1647
+ - |-
1648
+ Add `code_execution` only when the agent has a `_connectionId`. The save does
1649
+ not check the credential type, but every run and preview of an agent on
1650
+ Celigo-managed credentials is refused with `Code Execution requires a BYOK
1651
+ connection.` — switch the agent to a BYOK connection or leave the tool out.
1652
+ - |-
1653
+ Send the tool as `{type: code_execution}` with no other key — a sandbox or
1654
+ options object on it is rejected. Check that the chosen model supports code
1655
+ execution before adding it; the platform does not verify that at save and
1656
+ the UI hides the tool for models that lack it.
1604
1657
  webSearch:
1605
1658
  type: object
1606
1659
  description: Web search configuration (empty object to enable)
@@ -1954,12 +2007,28 @@ components:
1954
2007
  googleSearch: Use Google Search for real-time information grounding.
1955
2008
  urlContext: Retrieve and use content from specified URLs.
1956
2009
  fileSearch: Search through previously uploaded files.
1957
- codeExecution: 'Enable Gemini''s built-in code-execution tool; carries no configuration block, send `{type: codeExecution}` only'
2010
+ codeExecution: 'Let the model write and run code in Gemini''s sandbox on a BYOK agent; carries no configuration block, send `{type: codeExecution}` only'
1958
2011
  mcp: Connect to an MCP server for additional external tools.
1959
2012
  tool: Reference a reusable Celigo Tool resource.
1960
2013
  description: |-
1961
2014
  Type of Gemini tool. `codeExecution` is the Gemini spelling — `code_execution`
1962
- fails with 422 `enum`.
2015
+ fails with 422 `enum`. Code execution runs only on a BYOK agent and only on
2016
+ models that support it (not on `gemini-2.5-flash-image`): the code runs in
2017
+ Gemini's sandbox with no outbound network access for up to 30 seconds per
2018
+ execution and at most 5 executions per API call (the limit resets each turn),
2019
+ and each execution is billed as an AI Action to the connection's Google
2020
+ account rather than as Celigo AI credits.
2021
+ x-celigo-ai-guidance:
2022
+ - |-
2023
+ Add `codeExecution` only when the agent has a `_connectionId`. The save does
2024
+ not check the credential type, but every run and preview of an agent on
2025
+ Celigo-managed credentials is refused with `Code Execution requires a BYOK
2026
+ connection.` — switch the agent to a BYOK connection or leave the tool out.
2027
+ - |-
2028
+ Send the tool as `{type: codeExecution}` with no other key — any other key on
2029
+ it is rejected. Check that the chosen model supports code execution before
2030
+ adding it; the platform does not verify that at save and the UI hides the
2031
+ tool for models that lack it.
1963
2032
  googleSearch:
1964
2033
  type: object
1965
2034
  description: Google Search configuration (empty object to enable)
@@ -2291,10 +2360,26 @@ components:
2291
2360
  tool: Reference a reusable Celigo Tool resource.
2292
2361
  mcp: Connect to an MCP server for additional external tools.
2293
2362
  webSearch: Search the web for real-time information.
2294
- codeExecution: 'Enable Anthropic''s built-in code-execution tool; carries no configuration block, send `{type: codeExecution}` only'
2363
+ codeExecution: 'Let the model write and run code in Anthropic''s sandbox on a BYOK agent (beta); carries no configuration block, send `{type: codeExecution}` only'
2295
2364
  description: |-
2296
2365
  Type of Claude tool. `codeExecution` is the Anthropic spelling — `code_execution`
2297
- fails with 422 `enum`.
2366
+ fails with 422 `enum`. Code execution (beta on Anthropic) runs only on a BYOK
2367
+ agent and only on models that support it: the code runs per API call in
2368
+ Anthropic's sandbox (Python 3.11 with pandas, numpy and matplotlib) with no
2369
+ outbound network access and no state kept between turns, and each execution is
2370
+ billed as an AI Action to the connection's Anthropic account rather than as
2371
+ Celigo AI credits.
2372
+ x-celigo-ai-guidance:
2373
+ - |-
2374
+ Add `codeExecution` only when the agent has a `_connectionId`. The save does
2375
+ not check the credential type, but every run and preview of an agent on
2376
+ Celigo-managed credentials is refused with `Code Execution requires a BYOK
2377
+ connection.` — switch the agent to a BYOK connection or leave the tool out.
2378
+ - |-
2379
+ Send the tool as `{type: codeExecution}` with no other key — any other key on
2380
+ it is rejected. Check that the chosen model supports code execution before
2381
+ adding it; the platform does not verify that at save and the UI hides the
2382
+ tool for models that lack it.
2298
2383
  tool:
2299
2384
  type: object
2300
2385
  description: Reference to a Celigo Tool resource, used when type is "tool".
@@ -2511,6 +2596,13 @@ components:
2511
2596
  - deepseek
2512
2597
  - cohere
2513
2598
  - groq
2599
+ - together_ai
2600
+ - azure_ai
2601
+ - fireworks_ai
2602
+ - bedrock
2603
+ - nvidia_nim
2604
+ - ollama_chat
2605
+ - vertex_ai
2514
2606
  required:
2515
2607
  - provider
2516
2608
  then:
@@ -5679,12 +5771,16 @@ components:
5679
5771
  - |-
5680
5772
  On a grouped record (the export groups rows, so the record is an
5681
5773
  array) only `create` can author output — build it from the rows with
5682
- `$[0].field`, `$[*].field`, or a `buildArrayHelper` over `$[*]`.
5774
+ `$[0].field`, `$[*].field`, or a `buildArrayHelper` over `$[*]`
5775
+ (`$.rows[0].field` and `$.rows[*]` with `inputContext: envelope`).
5683
5776
  `modify` has no object to overlay onto an array: the record passes
5684
- through untouched and the processor reports success. Either mode
5685
- reshapes the inside of one record; neither changes how many records
5686
- the page carries (that is the export's `preSavePage` hook) or whether
5687
- the export groups at all (that is its grouping setting).
5777
+ through untouched and the processor reports success. Paths written
5778
+ for one object record (`$.field`, an entry `$.lines[*]`) resolve
5779
+ nothing there, so `create` returns `{}` for each record, also with
5780
+ no error (live, 2026-10-30). Either mode reshapes the inside of one
5781
+ record; neither changes how many records the page carries (that is
5782
+ the export's `preSavePage` hook) or whether the export groups at all
5783
+ (that is its grouping setting).
5688
5784
  examples:
5689
5785
  - create
5690
5786
  - modify
@@ -5749,8 +5845,8 @@ components:
5749
5845
  - record
5750
5846
  - envelope
5751
5847
  x-enumDescriptions:
5752
- record: The transform processor evaluates `mappings[].extract` JSONPath against the flat record itself (`$.field`, no `record.` segment) — the default when absent.
5753
- envelope: The transform processor evaluates JSONPath against the wrapped runtime envelope `{record, job, testMode, settings, headers, queryParams}` (file-provider steps also carry `fileMeta`) — record fields need the `record.` segment (`$.record.field`), while `headers` and `queryParams` sit beside `record` (`$.headers['X-Id']`, `$.queryParams.src`).
5848
+ record: The transform processor evaluates `mappings[].extract` JSONPath against the flat record itself (`$.field`, no `record.` segment; a grouped record is the array of rows, `$[0].field`) — the default when absent.
5849
+ envelope: The transform processor evaluates JSONPath against the wrapped runtime envelope `{record, job, testMode, settings, headers, queryParams}` (file-provider steps also carry `fileMeta`) — record fields need the `record.` segment (`$.record.field`), and a grouped record sits under `rows` instead (`$.rows[0].field`), while `headers` and `queryParams` sit beside `record` (`$.headers['X-Id']`, `$.queryParams.src`).
5754
5850
  description: |
5755
5851
  Controls the JSON shape the transformTwoDotZero processor
5756
5852
  evaluates `mappings[].extract` JSONPath values against at
@@ -5766,24 +5862,38 @@ components:
5766
5862
  processor sees the FLAT record as its evaluation root.
5767
5863
  `mappings[].extract` JSONPath MUST anchor directly at
5768
5864
  `$` with NO `record.` segment — e.g. `"$.orderId"`,
5769
- `"$.customer.email"`; PLACEHOLDER extracts use
5865
+ `"$.customer.email"` on an object record, `"$[0].orderId"`
5866
+ on a grouped one; PLACEHOLDER extracts use
5770
5867
  `"$.PLACEHOLDER_<field>"`.
5771
5868
  This is the dominant Celigo idiom and the right choice for new transforms.
5772
5869
  - `envelope`: the processor sees a wrapped object
5773
5870
  `{record: {...}, job, testMode, settings, headers,
5774
5871
  queryParams}` (plus `fileMeta` on file-provider steps).
5775
5872
  `mappings[].extract` JSONPath MUST include the
5776
- `record.` segment for record fields — e.g.
5777
- `"$.record.orderId"` — and reads `headers` and
5873
+ `record.` segment for an object record's fields — e.g.
5874
+ `"$.record.orderId"`; a grouped record sits under `rows`
5875
+ instead (`"$.rows[0].orderId"`) — and reads `headers` and
5778
5876
  `queryParams` beside it (`$.headers['X-Id']`);
5779
5877
  PLACEHOLDER extracts use `"$.record.PLACEHOLDER_<field>"`.
5780
5878
  Pick this only when the transform was authored against
5781
5879
  the envelope shape on purpose.
5782
5880
  - |-
5783
- Handlebars expressions inside `extract`
5784
- (`{{record.field}}`, `{{dateFormat ... record.field}}`)
5785
- ALWAYS reference the `record` root regardless of
5881
+ Handlebars expressions inside `extract` reference the
5882
+ `record` root on an object record (`{{record.field}}`,
5883
+ `{{dateFormat ... record.field}}`) and `rows` on a
5884
+ grouped one (`{{rows.0.field}}`), regardless of
5786
5885
  `inputContext` — only JSONPath anchoring flips.
5886
+ - |-
5887
+ ## Grouped records
5888
+
5889
+ When the export groups rows, each record is an array of
5890
+ rows. In `record` mode JSONPath roots at that array
5891
+ (`$[0].field`, `$[*]`); `envelope` binds it as `rows`,
5892
+ not `record` — `$.rows[0].field`, and an entry
5893
+ `$.rows[*]` whose children read `$.rows.field` — while
5894
+ `$.record[0].field` and `$.record[*]` resolve nothing,
5895
+ with no error (live, 2026-10-30). Handlebars extracts
5896
+ read it as `rows` in both modes (`{{rows.0.field}}`).
5787
5897
  - |-
5788
5898
  In `envelope` mode the output is still a bare record: a
5789
5899
  `modify` transform returns the record with its mapped
@@ -5804,7 +5914,8 @@ components:
5804
5914
  ``mappings[].extract`` JSONPath values MUST anchor
5805
5915
  directly at ``$`` with NO ``record.`` segment — for
5806
5916
  example ``"$.orderId"`` or
5807
- ``"$.customer.email"``. PLACEHOLDER extracts use
5917
+ ``"$.customer.email"`` on an object record, and
5918
+ ``"$[0].orderId"`` on a grouped one. PLACEHOLDER extracts use
5808
5919
  ``"$.PLACEHOLDER_<field>"``. This is the dominant
5809
5920
  Celigo idiom and the right choice for new transforms.
5810
5921
 
@@ -5816,9 +5927,10 @@ components:
5816
5927
  ``record``) — the
5817
5928
  same runtime-context envelope Handlebars / SQL /
5818
5929
  GraphQL templates render against. ``mappings[].extract``
5819
- JSONPath values for record fields MUST include the
5930
+ JSONPath values for an object record's fields MUST include the
5820
5931
  ``record.`` segment — for example ``"$.record.orderId"``
5821
- or ``"$.record.customer.email"`` — while ``headers`` and
5932
+ or ``"$.record.customer.email"``; a grouped record's rows
5933
+ sit under ``rows`` instead (``"$.rows[0].orderId"``) — while ``headers`` and
5822
5934
  ``queryParams`` are read beside it
5823
5935
  (``"$.headers['X-Id']"``). PLACEHOLDER extracts
5824
5936
  use ``"$.record.PLACEHOLDER_<field>"``. Pick this
@@ -5831,8 +5943,9 @@ components:
5831
5943
 
5832
5944
  Handlebars expressions inside ``extract``
5833
5945
  (``{{record.field}}``,
5834
- ``{{dateFormat ... record.field}}``, etc.) ALWAYS
5835
- reference the runtime context's ``record`` root
5946
+ ``{{dateFormat ... record.field}}``, etc.) reference the
5947
+ runtime context's ``record`` root on an object record,
5948
+ and ``rows`` (``{{rows.0.field}}``) on a grouped one,
5836
5949
  regardless of ``inputContext`` — the Handlebars runtime
5837
5950
  always sees the wrapped envelope. Only JSONPath
5838
5951
  behavior flips with this field.
@@ -6056,8 +6169,10 @@ components:
6056
6169
  `aiAgent.provider` to choose the LLM backend, then configure the matching format:
6057
6170
  `aiAgent.openai` for OpenAI, `aiAgent.litellm` for Gemini and Anthropic Claude
6058
6171
  (with provider-specific settings under `aiAgent.litellm._overrides`), or the
6059
- generic flat format (`aiAgent.model`, `aiAgent.modelOptions`, …) for the catalog
6060
- providers Mistral, xAI, Hugging Face, DeepSeek, Cohere, and Groq.
6172
+ generic flat format (`aiAgent.model`, `aiAgent.modelOptions`, …) for every other
6173
+ provider — the catalog providers (Mistral, xAI, Hugging Face, DeepSeek, Cohere, Groq,
6174
+ Together AI, Azure OpenAI, Fireworks AI, AWS Bedrock, NVIDIA NIM, Ollama Cloud and
6175
+ Google Vertex AI today; the catalog grows without a platform release).
6061
6176
  properties:
6062
6177
  name:
6063
6178
  type: string
@@ -6079,10 +6194,11 @@ components:
6079
6194
  description: |-
6080
6195
  Connection for BYOK (bring your own key) — an HTTP connection to the vendor's API.
6081
6196
  Optional for the built-in providers (`openai`, `gemini`, `anthropic`), which run on
6082
- platform-managed credentials when it is omitted. Catalog providers (`mistral`, `xai`,
6083
- `huggingface`, `deepseek`, `cohere`, `groq`) have no platform-managed credentials: the save
6084
- requires it — without one the agent fails to save with 422 `connection_required` on
6085
- `_connectionId`.
6197
+ platform-managed credentials when it is omitted. Catalog providers (every other value
6198
+ of `provider`) have no platform-managed credentials: the save requires it — without
6199
+ one the agent fails to save with 422 on `aiAgent.model` (`ai_model_not_available` for
6200
+ a catalog-listed model, `ai_model_not_in_catalog` for an id the catalog does not
6201
+ list; the model catalog check answers before any `connection_required`).
6086
6202
  examples:
6087
6203
  - 662aaa6576bf4040548dbbe4
6088
6204
  _integrationId:
package/dist/api.yml CHANGED
@@ -5263,12 +5263,16 @@ components:
5263
5263
  - |-
5264
5264
  On a grouped record (the export groups rows, so the record is an
5265
5265
  array) only `create` can author output — build it from the rows with
5266
- `$[0].field`, `$[*].field`, or a `buildArrayHelper` over `$[*]`.
5266
+ `$[0].field`, `$[*].field`, or a `buildArrayHelper` over `$[*]`
5267
+ (`$.rows[0].field` and `$.rows[*]` with `inputContext: envelope`).
5267
5268
  `modify` has no object to overlay onto an array: the record passes
5268
- through untouched and the processor reports success. Either mode
5269
- reshapes the inside of one record; neither changes how many records
5270
- the page carries (that is the export's `preSavePage` hook) or whether
5271
- the export groups at all (that is its grouping setting).
5269
+ through untouched and the processor reports success. Paths written
5270
+ for one object record (`$.field`, an entry `$.lines[*]`) resolve
5271
+ nothing there, so `create` returns `{}` for each record, also with
5272
+ no error (live, 2026-10-30). Either mode reshapes the inside of one
5273
+ record; neither changes how many records the page carries (that is
5274
+ the export's `preSavePage` hook) or whether the export groups at all
5275
+ (that is its grouping setting).
5272
5276
  examples:
5273
5277
  - create
5274
5278
  - modify
@@ -5333,8 +5337,8 @@ components:
5333
5337
  - record
5334
5338
  - envelope
5335
5339
  x-enumDescriptions:
5336
- record: The transform processor evaluates `mappings[].extract` JSONPath against the flat record itself (`$.field`, no `record.` segment) — the default when absent.
5337
- envelope: The transform processor evaluates JSONPath against the wrapped runtime envelope `{record, job, testMode, settings, headers, queryParams}` (file-provider steps also carry `fileMeta`) — record fields need the `record.` segment (`$.record.field`), while `headers` and `queryParams` sit beside `record` (`$.headers['X-Id']`, `$.queryParams.src`).
5340
+ record: The transform processor evaluates `mappings[].extract` JSONPath against the flat record itself (`$.field`, no `record.` segment; a grouped record is the array of rows, `$[0].field`) — the default when absent.
5341
+ envelope: The transform processor evaluates JSONPath against the wrapped runtime envelope `{record, job, testMode, settings, headers, queryParams}` (file-provider steps also carry `fileMeta`) — record fields need the `record.` segment (`$.record.field`), and a grouped record sits under `rows` instead (`$.rows[0].field`), while `headers` and `queryParams` sit beside `record` (`$.headers['X-Id']`, `$.queryParams.src`).
5338
5342
  description: |
5339
5343
  Controls the JSON shape the transformTwoDotZero processor
5340
5344
  evaluates `mappings[].extract` JSONPath values against at
@@ -5350,24 +5354,38 @@ components:
5350
5354
  processor sees the FLAT record as its evaluation root.
5351
5355
  `mappings[].extract` JSONPath MUST anchor directly at
5352
5356
  `$` with NO `record.` segment — e.g. `"$.orderId"`,
5353
- `"$.customer.email"`; PLACEHOLDER extracts use
5357
+ `"$.customer.email"` on an object record, `"$[0].orderId"`
5358
+ on a grouped one; PLACEHOLDER extracts use
5354
5359
  `"$.PLACEHOLDER_<field>"`.
5355
5360
  This is the dominant Celigo idiom and the right choice for new transforms.
5356
5361
  - `envelope`: the processor sees a wrapped object
5357
5362
  `{record: {...}, job, testMode, settings, headers,
5358
5363
  queryParams}` (plus `fileMeta` on file-provider steps).
5359
5364
  `mappings[].extract` JSONPath MUST include the
5360
- `record.` segment for record fields — e.g.
5361
- `"$.record.orderId"` — and reads `headers` and
5365
+ `record.` segment for an object record's fields — e.g.
5366
+ `"$.record.orderId"`; a grouped record sits under `rows`
5367
+ instead (`"$.rows[0].orderId"`) — and reads `headers` and
5362
5368
  `queryParams` beside it (`$.headers['X-Id']`);
5363
5369
  PLACEHOLDER extracts use `"$.record.PLACEHOLDER_<field>"`.
5364
5370
  Pick this only when the transform was authored against
5365
5371
  the envelope shape on purpose.
5366
5372
  - |-
5367
- Handlebars expressions inside `extract`
5368
- (`{{record.field}}`, `{{dateFormat ... record.field}}`)
5369
- ALWAYS reference the `record` root regardless of
5373
+ Handlebars expressions inside `extract` reference the
5374
+ `record` root on an object record (`{{record.field}}`,
5375
+ `{{dateFormat ... record.field}}`) and `rows` on a
5376
+ grouped one (`{{rows.0.field}}`), regardless of
5370
5377
  `inputContext` — only JSONPath anchoring flips.
5378
+ - |-
5379
+ ## Grouped records
5380
+
5381
+ When the export groups rows, each record is an array of
5382
+ rows. In `record` mode JSONPath roots at that array
5383
+ (`$[0].field`, `$[*]`); `envelope` binds it as `rows`,
5384
+ not `record` — `$.rows[0].field`, and an entry
5385
+ `$.rows[*]` whose children read `$.rows.field` — while
5386
+ `$.record[0].field` and `$.record[*]` resolve nothing,
5387
+ with no error (live, 2026-10-30). Handlebars extracts
5388
+ read it as `rows` in both modes (`{{rows.0.field}}`).
5371
5389
  - |-
5372
5390
  In `envelope` mode the output is still a bare record: a
5373
5391
  `modify` transform returns the record with its mapped
@@ -5388,7 +5406,8 @@ components:
5388
5406
  ``mappings[].extract`` JSONPath values MUST anchor
5389
5407
  directly at ``$`` with NO ``record.`` segment — for
5390
5408
  example ``"$.orderId"`` or
5391
- ``"$.customer.email"``. PLACEHOLDER extracts use
5409
+ ``"$.customer.email"`` on an object record, and
5410
+ ``"$[0].orderId"`` on a grouped one. PLACEHOLDER extracts use
5392
5411
  ``"$.PLACEHOLDER_<field>"``. This is the dominant
5393
5412
  Celigo idiom and the right choice for new transforms.
5394
5413
 
@@ -5400,9 +5419,10 @@ components:
5400
5419
  ``record``) — the
5401
5420
  same runtime-context envelope Handlebars / SQL /
5402
5421
  GraphQL templates render against. ``mappings[].extract``
5403
- JSONPath values for record fields MUST include the
5422
+ JSONPath values for an object record's fields MUST include the
5404
5423
  ``record.`` segment — for example ``"$.record.orderId"``
5405
- or ``"$.record.customer.email"`` — while ``headers`` and
5424
+ or ``"$.record.customer.email"``; a grouped record's rows
5425
+ sit under ``rows`` instead (``"$.rows[0].orderId"``) — while ``headers`` and
5406
5426
  ``queryParams`` are read beside it
5407
5427
  (``"$.headers['X-Id']"``). PLACEHOLDER extracts
5408
5428
  use ``"$.record.PLACEHOLDER_<field>"``. Pick this
@@ -5415,8 +5435,9 @@ components:
5415
5435
 
5416
5436
  Handlebars expressions inside ``extract``
5417
5437
  (``{{record.field}}``,
5418
- ``{{dateFormat ... record.field}}``, etc.) ALWAYS
5419
- reference the runtime context's ``record`` root
5438
+ ``{{dateFormat ... record.field}}``, etc.) reference the
5439
+ runtime context's ``record`` root on an object record,
5440
+ and ``rows`` (``{{rows.0.field}}``) on a grouped one,
5420
5441
  regardless of ``inputContext`` — the Handlebars runtime
5421
5442
  always sees the wrapped envelope. Only JSONPath
5422
5443
  behavior flips with this field.
@@ -3158,12 +3158,16 @@ components:
3158
3158
  - |-
3159
3159
  On a grouped record (the export groups rows, so the record is an
3160
3160
  array) only `create` can author output — build it from the rows with
3161
- `$[0].field`, `$[*].field`, or a `buildArrayHelper` over `$[*]`.
3161
+ `$[0].field`, `$[*].field`, or a `buildArrayHelper` over `$[*]`
3162
+ (`$.rows[0].field` and `$.rows[*]` with `inputContext: envelope`).
3162
3163
  `modify` has no object to overlay onto an array: the record passes
3163
- through untouched and the processor reports success. Either mode
3164
- reshapes the inside of one record; neither changes how many records
3165
- the page carries (that is the export's `preSavePage` hook) or whether
3166
- the export groups at all (that is its grouping setting).
3164
+ through untouched and the processor reports success. Paths written
3165
+ for one object record (`$.field`, an entry `$.lines[*]`) resolve
3166
+ nothing there, so `create` returns `{}` for each record, also with
3167
+ no error (live, 2026-10-30). Either mode reshapes the inside of one
3168
+ record; neither changes how many records the page carries (that is
3169
+ the export's `preSavePage` hook) or whether the export groups at all
3170
+ (that is its grouping setting).
3167
3171
  examples:
3168
3172
  - create
3169
3173
  - modify
@@ -3228,8 +3232,8 @@ components:
3228
3232
  - record
3229
3233
  - envelope
3230
3234
  x-enumDescriptions:
3231
- record: The transform processor evaluates `mappings[].extract` JSONPath against the flat record itself (`$.field`, no `record.` segment) — the default when absent.
3232
- envelope: The transform processor evaluates JSONPath against the wrapped runtime envelope `{record, job, testMode, settings, headers, queryParams}` (file-provider steps also carry `fileMeta`) — record fields need the `record.` segment (`$.record.field`), while `headers` and `queryParams` sit beside `record` (`$.headers['X-Id']`, `$.queryParams.src`).
3235
+ record: The transform processor evaluates `mappings[].extract` JSONPath against the flat record itself (`$.field`, no `record.` segment; a grouped record is the array of rows, `$[0].field`) — the default when absent.
3236
+ envelope: The transform processor evaluates JSONPath against the wrapped runtime envelope `{record, job, testMode, settings, headers, queryParams}` (file-provider steps also carry `fileMeta`) — record fields need the `record.` segment (`$.record.field`), and a grouped record sits under `rows` instead (`$.rows[0].field`), while `headers` and `queryParams` sit beside `record` (`$.headers['X-Id']`, `$.queryParams.src`).
3233
3237
  description: |
3234
3238
  Controls the JSON shape the transformTwoDotZero processor
3235
3239
  evaluates `mappings[].extract` JSONPath values against at
@@ -3245,24 +3249,38 @@ components:
3245
3249
  processor sees the FLAT record as its evaluation root.
3246
3250
  `mappings[].extract` JSONPath MUST anchor directly at
3247
3251
  `$` with NO `record.` segment — e.g. `"$.orderId"`,
3248
- `"$.customer.email"`; PLACEHOLDER extracts use
3252
+ `"$.customer.email"` on an object record, `"$[0].orderId"`
3253
+ on a grouped one; PLACEHOLDER extracts use
3249
3254
  `"$.PLACEHOLDER_<field>"`.
3250
3255
  This is the dominant Celigo idiom and the right choice for new transforms.
3251
3256
  - `envelope`: the processor sees a wrapped object
3252
3257
  `{record: {...}, job, testMode, settings, headers,
3253
3258
  queryParams}` (plus `fileMeta` on file-provider steps).
3254
3259
  `mappings[].extract` JSONPath MUST include the
3255
- `record.` segment for record fields — e.g.
3256
- `"$.record.orderId"` — and reads `headers` and
3260
+ `record.` segment for an object record's fields — e.g.
3261
+ `"$.record.orderId"`; a grouped record sits under `rows`
3262
+ instead (`"$.rows[0].orderId"`) — and reads `headers` and
3257
3263
  `queryParams` beside it (`$.headers['X-Id']`);
3258
3264
  PLACEHOLDER extracts use `"$.record.PLACEHOLDER_<field>"`.
3259
3265
  Pick this only when the transform was authored against
3260
3266
  the envelope shape on purpose.
3261
3267
  - |-
3262
- Handlebars expressions inside `extract`
3263
- (`{{record.field}}`, `{{dateFormat ... record.field}}`)
3264
- ALWAYS reference the `record` root regardless of
3268
+ Handlebars expressions inside `extract` reference the
3269
+ `record` root on an object record (`{{record.field}}`,
3270
+ `{{dateFormat ... record.field}}`) and `rows` on a
3271
+ grouped one (`{{rows.0.field}}`), regardless of
3265
3272
  `inputContext` — only JSONPath anchoring flips.
3273
+ - |-
3274
+ ## Grouped records
3275
+
3276
+ When the export groups rows, each record is an array of
3277
+ rows. In `record` mode JSONPath roots at that array
3278
+ (`$[0].field`, `$[*]`); `envelope` binds it as `rows`,
3279
+ not `record` — `$.rows[0].field`, and an entry
3280
+ `$.rows[*]` whose children read `$.rows.field` — while
3281
+ `$.record[0].field` and `$.record[*]` resolve nothing,
3282
+ with no error (live, 2026-10-30). Handlebars extracts
3283
+ read it as `rows` in both modes (`{{rows.0.field}}`).
3266
3284
  - |-
3267
3285
  In `envelope` mode the output is still a bare record: a
3268
3286
  `modify` transform returns the record with its mapped
@@ -3283,7 +3301,8 @@ components:
3283
3301
  ``mappings[].extract`` JSONPath values MUST anchor
3284
3302
  directly at ``$`` with NO ``record.`` segment — for
3285
3303
  example ``"$.orderId"`` or
3286
- ``"$.customer.email"``. PLACEHOLDER extracts use
3304
+ ``"$.customer.email"`` on an object record, and
3305
+ ``"$[0].orderId"`` on a grouped one. PLACEHOLDER extracts use
3287
3306
  ``"$.PLACEHOLDER_<field>"``. This is the dominant
3288
3307
  Celigo idiom and the right choice for new transforms.
3289
3308
 
@@ -3295,9 +3314,10 @@ components:
3295
3314
  ``record``) — the
3296
3315
  same runtime-context envelope Handlebars / SQL /
3297
3316
  GraphQL templates render against. ``mappings[].extract``
3298
- JSONPath values for record fields MUST include the
3317
+ JSONPath values for an object record's fields MUST include the
3299
3318
  ``record.`` segment — for example ``"$.record.orderId"``
3300
- or ``"$.record.customer.email"`` — while ``headers`` and
3319
+ or ``"$.record.customer.email"``; a grouped record's rows
3320
+ sit under ``rows`` instead (``"$.rows[0].orderId"``) — while ``headers`` and
3301
3321
  ``queryParams`` are read beside it
3302
3322
  (``"$.headers['X-Id']"``). PLACEHOLDER extracts
3303
3323
  use ``"$.record.PLACEHOLDER_<field>"``. Pick this
@@ -3310,8 +3330,9 @@ components:
3310
3330
 
3311
3331
  Handlebars expressions inside ``extract``
3312
3332
  (``{{record.field}}``,
3313
- ``{{dateFormat ... record.field}}``, etc.) ALWAYS
3314
- reference the runtime context's ``record`` root
3333
+ ``{{dateFormat ... record.field}}``, etc.) reference the
3334
+ runtime context's ``record`` root on an object record,
3335
+ and ``rows`` (``{{rows.0.field}}``) on a grouped one,
3315
3336
  regardless of ``inputContext`` — the Handlebars runtime
3316
3337
  always sees the wrapped envelope. Only JSONPath
3317
3338
  behavior flips with this field.