@celigo/api-specs 0.2.215 → 0.2.217

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:
@@ -6077,8 +6169,10 @@ components:
6077
6169
  `aiAgent.provider` to choose the LLM backend, then configure the matching format:
6078
6170
  `aiAgent.openai` for OpenAI, `aiAgent.litellm` for Gemini and Anthropic Claude
6079
6171
  (with provider-specific settings under `aiAgent.litellm._overrides`), or the
6080
- generic flat format (`aiAgent.model`, `aiAgent.modelOptions`, …) for the catalog
6081
- 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).
6082
6176
  properties:
6083
6177
  name:
6084
6178
  type: string
@@ -6100,10 +6194,11 @@ components:
6100
6194
  description: |-
6101
6195
  Connection for BYOK (bring your own key) — an HTTP connection to the vendor's API.
6102
6196
  Optional for the built-in providers (`openai`, `gemini`, `anthropic`), which run on
6103
- platform-managed credentials when it is omitted. Catalog providers (`mistral`, `xai`,
6104
- `huggingface`, `deepseek`, `cohere`, `groq`) have no platform-managed credentials: the save
6105
- requires it — without one the agent fails to save with 422 `connection_required` on
6106
- `_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`).
6107
6202
  examples:
6108
6203
  - 662aaa6576bf4040548dbbe4
6109
6204
  _integrationId:
package/dist/export.yml CHANGED
@@ -4763,9 +4763,10 @@ components:
4763
4763
  json:
4764
4764
  type: object
4765
4765
  description: |-
4766
- Parsing settings for JSON files. Configure when type is "json". resourcePath locates the
4767
- array of records when they are nested inside a container object; malformed JSON fails
4768
- the entire file's processing.
4766
+ Parsing settings for JSON files. Configure when type is "json". resourcePath selects the
4767
+ record elements inside the document — the wildcard form (`*`, `rows[*]`) iterates an
4768
+ array, while a path that stops at the array (or an empty path on a root array) yields
4769
+ the whole array as one record; malformed JSON fails the entire file's processing.
4769
4770
 
4770
4771
  Required when type is json.
4771
4772
  x-celigo-ai-guidance:
@@ -4807,8 +4808,12 @@ components:
4807
4808
  ]
4808
4809
  ```
4809
4810
  - Records are directly at the root as an array
4810
- - No resourcePath needed (leave blank)
4811
- - Most straightforward structure for processing
4811
+ - Set resourcePath to `*` (or `[*]`) so each element becomes a record
4812
+ - An empty resourcePath returns the entire array as ONE record — a large file then
4813
+ fails with `record_size_exceeded` instead of being split. The export form appends
4814
+ the wildcard itself when the attached sample file is 10 MB or smaller (why a blank
4815
+ path often works in the UI — a larger sample gets no wildcard and the blank path
4816
+ stands); a document sent through the API carries exactly the path it names
4812
4817
 
4813
4818
  ### Container Object Pattern
4814
4819
  ```json
@@ -4824,7 +4829,8 @@ components:
4824
4829
  }
4825
4830
  ```
4826
4831
  - Records are in an array inside a container object
4827
- - Requires resourcePath (e.g., "data")
4832
+ - Requires resourcePath with the element wildcard (e.g., "data[*]" or "data.*");
4833
+ "data" alone selects the array itself and yields it as one record
4828
4834
  - Common in API responses with metadata
4829
4835
 
4830
4836
  ### Nested Container Pattern
@@ -4843,13 +4849,20 @@ components:
4843
4849
  }
4844
4850
  ```
4845
4851
  - Records are deeply nested in the hierarchy
4846
- - Requires dot notation in resourcePath (e.g., "response.results")
4852
+ - Requires dot notation ending in the element wildcard (e.g., "response.results[*]")
4847
4853
  - Common in complex API responses
4848
4854
  - |-
4849
4855
  ## ERROR PREVENTION
4850
4856
 
4851
4857
  - **Invalid Path**: Incorrectly specified resourcePath results in zero records found
4852
- - **Type Mismatch**: resourcePath must point to an array of objects for proper record processing
4858
+ - **Array as one record**: a path that stops at the array (or an empty path on a root
4859
+ array) yields the whole array as a single record; it fails `record_size_exceeded`
4860
+ ("The size of a single record should not exceed 26214400 bytes. This may happen
4861
+ because the Resource path is not set correctly") once the file passes 25 MiB — the
4862
+ fix is the element wildcard (`*` / `path[*]`). A preSavePage hook cannot split the
4863
+ record instead: the rejection happens while the file is parsed, before any page of
4864
+ records exists for a hook to receive (an export with such a hook fails identically,
4865
+ with zero pages generated)
4853
4866
  - **Empty Results**: If path resolves to null or non-existent field, no error is thrown but no records are processed
4854
4867
  - **Parsing Failures**: Malformed JSON will cause the entire file processing to fail
4855
4868
  - |-
@@ -4863,11 +4876,19 @@ components:
4863
4876
  resourcePath:
4864
4877
  type: string
4865
4878
  description: |-
4866
- Dot-notation path to the array of records within the JSON structure (e.g.
4867
- "response.data.customers"); leave empty when the file's root is already the record
4868
- array. The path must resolve to an array of objects — array indexing and wildcards
4869
- are not supported. A path that resolves to nothing produces zero records without
4870
- raising an error.
4879
+ Dot-notation path that selects the record elements within the JSON document, ending
4880
+ in the element wildcard — `*` when the file's root is the record array,
4881
+ `response.data.customers[*]` (or `.customers.*`) when the array sits under a key. A
4882
+ path that stops at the array — `response.data.customers`, or an empty path on a root
4883
+ array — yields the whole array as a single record, which fails `record_size_exceeded`
4884
+ once it exceeds 26,214,400 bytes. The export form appends the wildcard when the
4885
+ attached sample file is 10 MB or smaller, so a path left blank in the UI often works
4886
+ where the same document sent through the API — or a form with a larger sample — does
4887
+ not. Array indexing and `$`-rooted JSONPath (`$[*]`,
4888
+ `$.rows`) are not supported; a path that resolves to nothing produces zero records
4889
+ without raising an error. This is the file parser's path only — the path to records
4890
+ in an HTTP API response is the separate `http.response.resourcePath`, with its own
4891
+ rules (a bare dot path such as `results.customers` selects the record array there).
4871
4892
  x-celigo-ai-guidance:
4872
4893
  - |-
4873
4894
  Specifies the path to the array of records within the JSON structure.
@@ -4876,18 +4897,18 @@ components:
4876
4897
  - |-
4877
4898
  ## BEHAVIOR
4878
4899
 
4879
- - **Purpose**: Identifies where the array of records is located in the JSON structure
4880
- - **Format**: Dot notation path to navigate nested objects (e.g., "data.records")
4881
- - **When Empty**: System expects records to be at the root level as an array
4882
- - **Result**: Array found at this path is processed as individual records
4900
+ - **Purpose**: Selects the elements that become records within the JSON structure
4901
+ - **Format**: Dot notation to navigate nested objects, ending in the element wildcard (e.g., "data.records[*]")
4902
+ - **When Empty**: The whole document is one record — a root object is that one record; a root array is NOT split (use `*` to split it)
4903
+ - **Result**: Each element the wildcard selects is processed as one record; a path that stops at the array yields the array as one record
4883
4904
  - |-
4884
4905
  ## PATH NOTATION GUIDELINES
4885
4906
 
4886
4907
  ### Basic Path Patterns
4887
4908
 
4888
- - **Root Level Array**: Leave empty or null when records are a direct array at root
4889
- - **Single Level Nesting**: Use the property name (e.g., "data", "results", "items")
4890
- - **Multi-Level Nesting**: Use dot notation (e.g., "response.data.items")
4909
+ - **Root Level Array**: `*` (or `[*]`) when records are a direct array at root
4910
+ - **Single Level Nesting**: The property name plus the wildcard (e.g., "data[*]", "results[*]", "items.*")
4911
+ - **Multi-Level Nesting**: Dot notation plus the wildcard (e.g., "response.data.items[*]")
4891
4912
 
4892
4913
  ### Path Construction Rules
4893
4914
 
@@ -4896,13 +4917,14 @@ components:
4896
4917
  - Each segment must be a valid property name in the JSON
4897
4918
 
4898
4919
  2. **Target Requirements**:
4899
- - The path MUST resolve to an array of objects
4900
- - Each object in the array will be processed as one record
4901
- - The array must be the final element in the path
4920
+ - The parser yields whatever the path selects as the record(s): to get one record per array element, the path MUST end in the element wildcard (`[*]` or `.*`)
4921
+ - A path that stops at the array ("data") selects the array itself and yields ONE record holding every element
4922
+ - A path that selects a single object ("response", "response.data") yields that object as one record — the shape for a file that IS one record
4923
+ - The wildcard iterates whatever it is applied to: on an OBJECT (`*` on a root object, "response.*") it yields one record per member value, not the object — apply it to arrays
4902
4924
 
4903
4925
  3. **Limitations**:
4904
4926
  - Array indexing is not supported in the path (e.g., "data[0]")
4905
- - Wildcard selectors are not supported
4927
+ - `$`-rooted JSONPath is not supported ("$[*]", "$.data[*]" match nothing and yield zero records)
4906
4928
  - Regular expressions are not supported
4907
4929
  - |-
4908
4930
  ## DETERMINATION STRATEGY FOR AI AGENTS
@@ -4918,20 +4940,21 @@ components:
4918
4940
 
4919
4941
  | Source Type | Common Paths | Example |
4920
4942
  |-------------|--------------|---------|
4921
- | REST APIs | "data", "results", "items" | "data" |
4922
- | Complex APIs | "response.data", "data.items" | "response.data" |
4923
- | Database Exports | "rows", "records", "exports" | "rows" |
4924
- | CRM Systems | "contacts", "accounts", "opportunities" | "contacts" |
4925
- | Analytics APIs | "data.rows", "response.data.rows" | "data.rows" |
4943
+ | Root array file | "*" | "*" |
4944
+ | REST APIs | "data[*]", "results[*]", "items[*]" | "data[*]" |
4945
+ | Complex APIs | "response.data[*]", "data.items[*]" | "response.data[*]" |
4946
+ | Database Exports | "rows[*]", "records[*]", "exports[*]" | "rows[*]" |
4947
+ | CRM Systems | "contacts[*]", "accounts[*]", "opportunities[*]" | "contacts[*]" |
4948
+ | Analytics APIs | "data.rows[*]", "response.data.rows[*]" | "data.rows[*]" |
4926
4949
 
4927
4950
  3. **Verification Approach**:
4928
- - The path should resolve to an array (typically with square brackets in the JSON)
4929
- - Each element in this array should represent one complete record
4951
+ - Preview the export: the parse stage must show one record per array element — a single record that is itself an array means the path stopped at the array
4952
+ - Each element should represent one complete record
4930
4953
  - The array should not be a property array (like tags or categories)
4931
4954
  - |-
4932
4955
  ## IMPLEMENTATION EXAMPLES
4933
4956
 
4934
- ### Root Array (No Path Needed)
4957
+ ### Root Array
4935
4958
 
4936
4959
  JSON Structure:
4937
4960
  ```json
@@ -4943,9 +4966,11 @@ components:
4943
4966
 
4944
4967
  Configuration:
4945
4968
  ```json
4946
- "resourcePath": "" // or omit entirely
4969
+ "resourcePath": "*"
4947
4970
  ```
4948
4971
 
4972
+ An empty path (or omitting it) returns this array as ONE record rather than two.
4973
+
4949
4974
  ### Single-Level Nesting
4950
4975
 
4951
4976
  JSON Structure:
@@ -4961,7 +4986,7 @@ components:
4961
4986
 
4962
4987
  Configuration:
4963
4988
  ```json
4964
- "resourcePath": "orders"
4989
+ "resourcePath": "orders[*]"
4965
4990
  ```
4966
4991
 
4967
4992
  ### Multi-Level Nesting
@@ -4983,7 +5008,7 @@ components:
4983
5008
 
4984
5009
  Configuration:
4985
5010
  ```json
4986
- "resourcePath": "response.data.customers"
5011
+ "resourcePath": "response.data.customers[*]"
4987
5012
  ```
4988
5013
  - |-
4989
5014
  ## TROUBLESHOOTING INDICATORS
@@ -4991,6 +5016,8 @@ components:
4991
5016
  If you encounter these issues, review the resourcePath setting:
4992
5017
 
4993
5018
  - Export completes successfully but processes 0 records
5019
+ - `record_size_exceeded` — "The size of a single record should not exceed 26214400 bytes. This may happen because the Resource path is not set correctly": the path stopped at the array, so the whole file is one record; append the element wildcard (`*` for a root array, `path[*]` for a nested one) — a preSavePage hook cannot help: the record is rejected while the file is parsed, before any page exists for a hook to receive
5020
+ - A preview whose single record is itself an array of the expected objects (same cause, small file)
4994
5021
  - "Cannot read property 'forEach' of undefined" errors
4995
5022
  - "Expected array but got object/string/number" errors
4996
5023
  - Records appear flattened or with unexpected structure
@@ -5002,10 +5029,11 @@ components:
5002
5029
  - Document the expected JSON structure alongside the configuration
5003
5030
  - For APIs with changing response structures, implement validation checks
5004
5031
  examples:
5005
- - data.orders
5006
- - response.results
5007
- - items
5008
- - data.customers.records
5032
+ - '*'
5033
+ - data.orders[*]
5034
+ - response.results[*]
5035
+ - items[*]
5036
+ - data.customers.records.*
5009
5037
  xlsx:
5010
5038
  type: object
5011
5039
  description: |-
@@ -9413,7 +9441,7 @@ components:
9413
9441
  PathToRecords:
9414
9442
  type: string
9415
9443
  maxLength: 250
9416
- description: Path to the array of records inside each document or item fetched from the source; each array element is emitted as an individual record, which keeps records within the 5 MB page-size limit even when the source document exceeds it. Accepts dot notation (e.g. `data.orders`) or JSONPath for values starting with `$`, including unions (`$['orders','invoices'][*]`) and filter expressions (`$.items[?(@.qty>3)]`); a path that resolves to nothing emits zero records for that document or item. When omitted, each document or item is emitted as one record, exactly as before — HTTP and file-based exports configure this same capability through their existing `http.response.resourcePath` and `file.json`/`file.xml` `resourcePath` fields.
9444
+ description: Path to the array of records inside each document or item fetched from the source; each array element is emitted as an individual record, which keeps records within the 5 MB page-size limit even when the source document exceeds it. Accepts dot notation (e.g. `data.orders`) or JSONPath for values starting with `$`, including unions (`$['orders','invoices'][*]`) and filter expressions (`$.items[?(@.qty>3)]`); a path that resolves to nothing emits zero records for that document or item. When omitted, each document or item is emitted as one record, exactly as before. HTTP exports configure the same capability through `http.response.resourcePath` with these same path rules; file-based exports configure it through `file.json`/`file.xml` `resourcePath`, where the JSON file parser follows its own rule — the path yields whatever it selects as the record, so it must end in the element wildcard (`*` for a root array, `data.orders[*]` under a key) to emit one record per element, and `$`-rooted JSONPath is not supported there.
9417
9445
  examples:
9418
9446
  - lineItems
9419
9447
  - order.lineItems
@@ -602,8 +602,10 @@ components:
602
602
  - **openai**: OpenAI models (GPT-4.1, GPT-5, etc.). Configure via the `openai` object.
603
603
  - **gemini**: Google Gemini models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.gemini`.
604
604
  - **anthropic**: Anthropic Claude models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.anthropic`.
605
- - **Catalog providers** — `mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`. Added
606
- as catalog data rather than platform code, they share one generic flat format:
605
+ - **Catalog providers** — every other value of `provider` (Mistral, xAI, Hugging Face,
606
+ DeepSeek, Cohere, Groq, Together AI, Azure OpenAI, Fireworks AI, AWS Bedrock, NVIDIA NIM,
607
+ Ollama Cloud and Google Vertex AI today; the catalog grows without a platform release).
608
+ Added as catalog data rather than platform code, they share one generic flat format:
607
609
  `model`, `modelOptions`, `instructions`, `output`, and the `prompts` / `resources`
608
610
  arrays directly on this object.
609
611
 
@@ -655,26 +657,43 @@ components:
655
657
  - deepseek
656
658
  - cohere
657
659
  - groq
660
+ - together_ai
661
+ - azure_ai
662
+ - fireworks_ai
663
+ - bedrock
664
+ - nvidia_nim
665
+ - ollama_chat
666
+ - vertex_ai
658
667
  x-enumDescriptions:
659
- openai: Use OpenAI models via the OpenAI Responses API (built-in; `openai` block).
660
- gemini: Use Google Gemini models via the LiteLLM proxy (built-in; `litellm` block).
661
- anthropic: Use Anthropic Claude models via the LiteLLM proxy (built-in; `litellm` block).
662
- mistral: Use Mistral models (catalog provider; generic flat format, BYOK).
663
- xai: Use xAI Grok models (catalog provider; generic flat format, BYOK).
664
- huggingface: Use Hugging Face inference endpoint models (catalog provider; generic flat format, BYOK).
665
- deepseek: Use DeepSeek models (catalog provider; generic flat format, BYOK).
666
- cohere: Use Cohere models (catalog provider; generic flat format, BYOK).
667
- groq: Use Groq-hosted models (catalog provider; generic flat format, BYOK).
668
- description: AI provider to use.
668
+ openai: Use OpenAI models via the OpenAI Responses API (built-in; `openai` block; Celigo AI or BYOK)
669
+ gemini: Use Google Gemini models via the LiteLLM proxy (built-in; `litellm` block; Celigo AI or BYOK)
670
+ anthropic: Use Anthropic Claude models via the LiteLLM proxy (built-in; `litellm` block; Celigo AI or BYOK)
671
+ mistral: Use Mistral models (catalog provider; generic flat format, BYOK)
672
+ xai: Use xAI Grok models (catalog provider; generic flat format, BYOK)
673
+ huggingface: Use Hugging Face inference endpoint models (catalog provider; generic flat format, BYOK)
674
+ deepseek: Use DeepSeek models (catalog provider; generic flat format, BYOK)
675
+ cohere: Use Cohere models (catalog provider; generic flat format, BYOK)
676
+ groq: Use Groq-hosted models (catalog provider; generic flat format, BYOK)
677
+ together_ai: Use models served by Together AI (catalog provider; generic flat format, BYOK)
678
+ azure_ai: Use deployments on an Azure AI Foundry / Azure OpenAI resource — `model` is the deployment name (catalog provider; generic flat format, BYOK)
679
+ fireworks_ai: Use models served by Fireworks AI (catalog provider; generic flat format, BYOK)
680
+ 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)
681
+ nvidia_nim: Use models served by NVIDIA NIM (catalog provider; generic flat format, BYOK)
682
+ ollama_chat: Use models served by Ollama Cloud (catalog provider; generic flat format, BYOK)
683
+ vertex_ai: Use Gemini models on Google Vertex AI with the customer's own GCP project (catalog provider; generic flat format, BYOK)
684
+ description: |-
685
+ AI provider to use. Built-in providers run on Celigo AI credentials or on a
686
+ BYOK connection; every other provider is a catalog row that runs only on a BYOK
687
+ connection. The catalog is data — a provider can be added without a platform
688
+ release, and `GET /api/aiproviders` lists the rows currently offered.
669
689
  x-celigo-ai-guidance:
670
690
  - |-
671
691
  The provider decides the configuration format, and the server rejects a
672
692
  mismatch with 422 `invalid_provider_config_format`: `openai` needs the
673
693
  `openai` block, `gemini` and `anthropic` need the `litellm` block (Gemini- or
674
- Claude-specific settings under `litellm._overrides`), and the catalog
675
- providers (`mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`) need the
676
- generic flat format — `model` and `modelOptions` directly on this object,
677
- never an `openai` or `litellm` block.
694
+ Claude-specific settings under `litellm._overrides`), and every other
695
+ provider (the catalog providers) needs the generic flat format — `model` and
696
+ `modelOptions` directly on this object, never an `openai` or `litellm` block.
678
697
  - |-
679
698
  Catalog providers are BYOK-only, and the save enforces it through the model
680
699
  catalog: without a `_connectionId` the guardrail fails to save with 422
@@ -683,6 +702,18 @@ components:
683
702
  configuration.") — the model is a catalog row that is not offered on
684
703
  platform-managed credentials. Attach an HTTP connection to the vendor's API
685
704
  (token auth) before saving a catalog-provider guardrail.
705
+ - |-
706
+ Without a connection, a provider the catalog does not list is refused at the
707
+ model check — 422 `ai_model_not_in_catalog` on `guardrail.aiAgent.model` — so the
708
+ message names the model, not the provider. Check the provider against the
709
+ catalog before blaming the model.
710
+ - |-
711
+ For `azure_ai` and `bedrock` the vendor-specific settings ride the BYOK
712
+ connection, not this object: an optional connection `baseURI` (the vendor
713
+ endpoint the connector asks for), and connection settings forwarded to the
714
+ vendor — Azure's `apiVersion`, Bedrock's `awsRegionName`. `bedrock`
715
+ authenticates with a Bedrock API key (no IAM role); for `azure_ai`, `model` is
716
+ the deployment name.
686
717
  model:
687
718
  type: string
688
719
  description: |-
@@ -1566,6 +1597,13 @@ components:
1566
1597
  - deepseek
1567
1598
  - cohere
1568
1599
  - groq
1600
+ - together_ai
1601
+ - azure_ai
1602
+ - fireworks_ai
1603
+ - bedrock
1604
+ - nvidia_nim
1605
+ - ollama_chat
1606
+ - vertex_ai
1569
1607
  required:
1570
1608
  - provider
1571
1609
  then:
@@ -2389,7 +2427,7 @@ components:
2389
2427
  Connection for BYOK (bring your own key) — only meaningful for `ai_agent` type
2390
2428
  guardrails. Optional for the built-in providers (`openai`, `gemini`, `anthropic`),
2391
2429
  which run on platform-managed credentials when it is omitted; catalog providers
2392
- (`mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`) have no platform-managed
2430
+ (every other value of `provider`) have no platform-managed
2393
2431
  credentials and need it to run.
2394
2432
  examples:
2395
2433
  - 68ae48d6b5f755d2dd38c294