@celigo/api-specs 0.2.39 → 0.2.40

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/import.yml CHANGED
@@ -113,6 +113,14 @@ paths:
113
113
  - POST
114
114
  requestMediaType: json
115
115
  successMediaType: json
116
+ topic_publisher:
117
+ summary: Event Streams publisher to a topic (no connection)
118
+ value:
119
+ name: Publish Order Events
120
+ adaptorType: TopicImport
121
+ topic:
122
+ _topicId: 6ab1f48d38d7733b4599875c
123
+ batchSize: 1000
116
124
  responses:
117
125
  '201':
118
126
  description: Import created successfully
@@ -139,6 +147,18 @@ paths:
139
147
  apiIdentifier: if0626b560
140
148
  createdAt: '2026-06-09T17:32:41.218Z'
141
149
  lastModified: '2026-06-09T17:32:41.296Z'
150
+ topic_publisher:
151
+ summary: Created Event Streams publisher — batchSize default filled in
152
+ value:
153
+ _id: 6ab1f58171fc8127d374d4a5
154
+ name: Publish Order Events
155
+ adaptorType: TopicImport
156
+ topic:
157
+ _topicId: 6ab1f48d38d7733b4599875c
158
+ batchSize: 1000
159
+ apiIdentifier: id6e6429c9
160
+ createdAt: '2026-09-22T03:26:57.989Z'
161
+ lastModified: '2026-09-22T03:26:58.155Z'
142
162
  '400':
143
163
  $ref: '#/components/responses/400-bad-request'
144
164
  '401':
@@ -3061,11 +3081,13 @@ components:
3061
3081
  type: string
3062
3082
  x-celigo-agent:
3063
3083
  - handlebars
3084
+ x-celigo-ui-override: 'The FTP import form requires this once its "Use temp file" toggle is on (fieldDefinitions/resources/imports/ftp.js: ''ftp.inProgressFileName'' requiredWhen ftp.useTempFile is true; blob mode ''ftp.blobInProgressFileName'' requiredWhen ftp.blobUseTempFile is true). The toggles are form-only and are not saved — the form derives them from whether this field is set — so the API has no field to condition on and saves the import with or without the name.'
3064
3085
  description: |-
3065
3086
  Temporary name the file carries while its upload is in progress, preventing other systems
3066
3087
  from processing a partially transferred file; it is renamed to its final name once the
3067
- upload completes. Include a handlebars uniqueness token (e.g. {{timestamp}}) when one file
3068
- is written per flow run.
3088
+ upload completes. Its presence is what the UI shows as "Use temp file while upload in
3089
+ progress": set it to turn the temporary name on, omit it to turn it off. Include a
3090
+ handlebars uniqueness token (e.g. {{timestamp}}) when one file is written per flow run.
3069
3091
  x-celigo-ai-guidance:
3070
3092
  - |-
3071
3093
  inProgressFileName is the designated temporary filename assigned to a file
@@ -8267,6 +8289,48 @@ components:
8267
8289
  limits against the same downstream system but
8268
8290
  use different credentials. Mutually exclusive
8269
8291
  with `_id` on the same entry.
8292
+ Topic:
8293
+ type: object
8294
+ description: |-
8295
+ Publishing settings for an Event Streams publisher (`adaptorType: TopicImport`). Each
8296
+ incoming record is published as a message to the topic; the platform delivers it
8297
+ internally, so the import carries no `_connectionId`. Present when `adaptorType` is
8298
+ `TopicImport`; the server fills `batchSize` with its default when it is omitted.
8299
+ x-celigo-ai-guidance:
8300
+ - |-
8301
+ Sending this object without `adaptorType` is enough — the server infers `TopicImport`
8302
+ from it. Never add a `_connectionId`: the server then validates the document as that
8303
+ connection's adaptor instead (an http connection fails with 422 missing_required_field
8304
+ "http subschema not defined").
8305
+ properties:
8306
+ _topicId:
8307
+ type: string
8308
+ format: objectId
8309
+ x-celigo-refModel: topics
8310
+ x-celigo-ui-override: 'Required by the Event Streams publisher form (fieldDefinitions/resources/imports/import.js: ''topic._topicId'' is required:true, validWhen isNot ''''). The API saves a TopicImport without it, so the requirement is encoded on the request schema to mirror the form and keep publishers bound to a topic.'
8311
+ description: |-
8312
+ Topic the records are published to. Create or look it up with `GET /v1/topics`; the
8313
+ topic must belong to the same account.
8314
+ x-celigo-ai-guidance:
8315
+ - |-
8316
+ An id that is not a topic in the account fails the save with 422 `invalid_ref`
8317
+ ("<id> is not a valid topic._topicId").
8318
+ examples:
8319
+ - 6ab1f48d38d7733b4599875c
8320
+ batchSize:
8321
+ type: integer
8322
+ minimum: 1
8323
+ default: 1000
8324
+ description: |-
8325
+ Number of records published per request to the topic. Lower it when individual
8326
+ messages are large; the default keeps publishing efficient for typical record sizes.
8327
+ x-celigo-ai-guidance:
8328
+ - |-
8329
+ Zero and negative values fail the save with 422 `min` ("Path `topic.batchSize` (0) is
8330
+ less than minimum allowed value (1)").
8331
+ examples:
8332
+ - 1000
8333
+ - 100
8270
8334
  File:
8271
8335
  type: object
8272
8336
  description: |-
@@ -8701,16 +8765,43 @@ components:
8701
8765
  examples:
8702
8766
  - true
8703
8767
  - false
8768
+ appendToExistingFile:
8769
+ type: boolean
8770
+ default: false
8771
+ x-celigo-ui-override: 'Defaulted by the Azure Data Lake Storage Gen2 import form (fieldDefinitions/resources/imports/azuredatalakestoragegen2.js: ''file.appendToExistingFile'' defaultValue r?.file?.appendToExistingFile === true, shown only for file.type csv in records mode). When it is on, preSave clears file.compressionFormat, file.encrypt, file.pgp and the Content-Type header — append mode and compress/encrypt are exclusive on the form. The API stores the flag on any file import.'
8772
+ description: |-
8773
+ When true, an Azure Data Lake Storage Gen2 import (`assistant: azuredatalakestoragegen2`)
8774
+ appends each run's CSV output to the file named by `file.fileName` instead of replacing
8775
+ it. Appended content cannot be compressed or encrypted, so leave `compressionFormat`,
8776
+ `encrypt` and `pgp` unset when this is on.
8777
+ examples:
8778
+ - true
8779
+ - false
8780
+ contentType:
8781
+ type: string
8782
+ x-celigo-agent:
8783
+ - handlebars
8784
+ description: |-
8785
+ MIME type recorded on the file written to a cloud file provider such as Azure Data Lake
8786
+ Storage Gen2. Accepts a Handlebars expression so the type can follow the record (e.g.
8787
+ `{{record.mimeType}}`). Omit to let the destination assign its default.
8788
+ examples:
8789
+ - text/csv
8790
+ - application/json
8791
+ - '{{record.mimeType}}'
8704
8792
  directory:
8705
8793
  type: object
8706
8794
  required:
8707
8795
  - pathMode
8708
8796
  description: |-
8709
8797
  Structured destination location for cloud file-provider imports (Google Drive shared
8710
- drives, Box, Dropbox), replacing the flat path used by classic FTP/S3 destinations. Select
8711
- the location by folder ID or by a path relative to a configured storage root via pathMode.
8712
- For these cloud providers, directoryId mode addresses the folder by id alone — the flat
8713
- destination-path field is not consulted at runtime.
8798
+ drives, Box, Dropbox, Google Cloud Storage, Azure Data Lake Storage Gen2), replacing the
8799
+ flat path used by classic FTP/S3 destinations. Select the location by folder ID or by a
8800
+ path relative to a configured storage root via pathMode. For the drive-style providers,
8801
+ directoryId mode addresses the folder by id alone — the flat destination-path field is
8802
+ not consulted at runtime. Google Cloud Storage puts the bucket in `storageRootId`;
8803
+ Azure Data Lake Storage Gen2 puts the container in `name` and the directory prefix of the
8804
+ file path in `http.relativeURI`.
8714
8805
  x-celigo-ai-guidance:
8715
8806
  - Save-time validation accepts any string for id without checking it against the provider — set it only from a folder ID the user supplied or the UI folder browser stored; never fabricate one. To address a folder by path instead, set pathMode to relativePath and put the path in the adaptor's flat path field.
8716
8807
  properties:
@@ -8737,16 +8828,21 @@ components:
8737
8828
  type: string
8738
8829
  description: |-
8739
8830
  Display name of the folder identified by id, kept for readability in the UI; the
8740
- folder browser fills it when the location is picked visually.
8831
+ folder browser fills it when the location is picked visually. For Azure Data Lake
8832
+ Storage Gen2 it is the authoritative container name instead — the form saves the
8833
+ container here and no id.
8741
8834
  examples:
8742
8835
  - Invoices - Outbound
8836
+ - invoices-outbound
8743
8837
  storageRootId:
8744
8838
  type: string
8745
8839
  description: |-
8746
8840
  Provider-native ID of the storage root the relative path resolves against; set when
8747
- pathMode is relativePath. The provider's own ID, not a Celigo resource ID.
8841
+ pathMode is relativePath. The provider's own ID, not a Celigo resource ID. For Google
8842
+ Cloud Storage it is the bucket name.
8748
8843
  examples:
8749
8844
  - 1qU1hvFarBFMb4-twqKm1rR5o_6j9vs9g
8845
+ - erp-exports
8750
8846
  storageRootName:
8751
8847
  type: string
8752
8848
  description: Display name of the storage root identified by storageRootId, retained for reference in the UI.
@@ -9165,18 +9261,21 @@ components:
9165
9261
  - medium
9166
9262
  - high
9167
9263
  - xhigh
9264
+ - max
9168
9265
  x-enumDescriptions:
9169
9266
  none: No additional reasoning effort.
9170
9267
  minimal: Least reasoning effort for simple, straightforward tasks.
9171
9268
  low: Light reasoning for moderately simple tasks.
9172
9269
  medium: Balanced reasoning effort for typical tasks.
9173
- high: Maximum reasoning effort for complex, multi-step tasks.
9174
- xhigh: Highest reasoning effort for the most demanding, multi-step tasks.
9270
+ high: Heavy reasoning effort for complex, multi-step tasks.
9271
+ xhigh: Very high reasoning effort for the most demanding, multi-step tasks.
9272
+ max: Highest available reasoning effort, above xhigh.
9175
9273
  description: How much reasoning effort the model should invest
9176
9274
  x-celigo-ai-guidance:
9177
9275
  - |-
9178
9276
  How much reasoning effort the model should invest.
9179
9277
  Reasoning- capable models only — see `reasoning` for the gating rule.
9278
+ - Any other value fails the save with 422 `enum` on `aiAgent.openai.reasoning.effort`.
9180
9279
  summary:
9181
9280
  type: string
9182
9281
  enum:
@@ -9312,6 +9411,13 @@ components:
9312
9411
  additionalproperties:
9313
9412
  type: boolean
9314
9413
  description: When true, the structured output may include properties beyond those defined in `properties`.
9414
+ schema:
9415
+ type: object
9416
+ readOnly: true
9417
+ additionalProperties: true
9418
+ description: |-
9419
+ Server-written copy of `jsonSchema`, returned whenever `jsonSchema` is set — on
9420
+ AI agent imports and on guardrail agents alike. Send `jsonSchema`, not this field.
9315
9421
  if:
9316
9422
  properties:
9317
9423
  type:
@@ -9354,13 +9460,19 @@ components:
9354
9460
  - web_search
9355
9461
  - mcp
9356
9462
  - image_generation
9463
+ - code_execution
9357
9464
  - tool
9358
9465
  x-enumDescriptions:
9359
9466
  web_search: Search the web for real-time information.
9360
9467
  mcp: Connect to an MCP server for additional external tools.
9361
9468
  image_generation: Generate images using an AI image model.
9469
+ code_execution: 'Enable OpenAI''s built-in code-execution tool; carries no configuration block, send `{type: code_execution}` only'
9362
9470
  tool: Reference a reusable Celigo Tool resource.
9363
- description: Type of tool.
9471
+ description: |-
9472
+ Type of tool. Every type except `code_execution` is configured through the
9473
+ sibling object of the same name; OpenAI spells this one `code_execution`, while
9474
+ the Gemini and Anthropic overrides spell theirs `codeExecution` — the other spelling
9475
+ fails with 422 `enum`.
9364
9476
  webSearch:
9365
9477
  type: object
9366
9478
  description: Web search configuration (empty object to enable)
@@ -9694,15 +9806,19 @@ components:
9694
9806
  - googleSearch
9695
9807
  - urlContext
9696
9808
  - fileSearch
9809
+ - codeExecution
9697
9810
  - mcp
9698
9811
  - tool
9699
9812
  x-enumDescriptions:
9700
9813
  googleSearch: Use Google Search for real-time information grounding.
9701
9814
  urlContext: Retrieve and use content from specified URLs.
9702
9815
  fileSearch: Search through previously uploaded files.
9816
+ codeExecution: 'Enable Gemini''s built-in code-execution tool; carries no configuration block, send `{type: codeExecution}` only'
9703
9817
  mcp: Connect to an MCP server for additional external tools.
9704
9818
  tool: Reference a reusable Celigo Tool resource.
9705
- description: Type of Gemini tool.
9819
+ description: |-
9820
+ Type of Gemini tool. `codeExecution` is the Gemini spelling — `code_execution`
9821
+ fails with 422 `enum`.
9706
9822
  googleSearch:
9707
9823
  type: object
9708
9824
  description: Google Search configuration (empty object to enable)
@@ -10034,11 +10150,15 @@ components:
10034
10150
  - tool
10035
10151
  - mcp
10036
10152
  - webSearch
10153
+ - codeExecution
10037
10154
  x-enumDescriptions:
10038
10155
  tool: Reference a reusable Celigo Tool resource.
10039
10156
  mcp: Connect to an MCP server for additional external tools.
10040
10157
  webSearch: Search the web for real-time information.
10041
- description: Type of Claude tool.
10158
+ codeExecution: 'Enable Anthropic''s built-in code-execution tool; carries no configuration block, send `{type: codeExecution}` only'
10159
+ description: |-
10160
+ Type of Claude tool. `codeExecution` is the Anthropic spelling — `code_execution`
10161
+ fails with 422 `enum`.
10042
10162
  tool:
10043
10163
  type: object
10044
10164
  description: Reference to a Celigo Tool resource, used when type is "tool".
@@ -10086,9 +10206,43 @@ components:
10086
10206
  description: Connection to the MCP server.
10087
10207
  allowedTools:
10088
10208
  type: array
10089
- description: Specific tools to allow from the MCP server (all if omitted).
10209
+ description: |-
10210
+ Specific tools to allow from the MCP server (all if omitted). Each
10211
+ entry is either a plain tool name or an object carrying display
10212
+ metadata — same contract as the OpenAI and Gemini `allowedTools`.
10090
10213
  items:
10091
- type: string
10214
+ oneOf:
10215
+ - title: name
10216
+ type: string
10217
+ description: Tool name as exposed by the MCP server.
10218
+ - title: tool
10219
+ type: object
10220
+ required:
10221
+ - name
10222
+ properties:
10223
+ name:
10224
+ type: string
10225
+ maxLength: 256
10226
+ description: Tool name as exposed by the MCP server.
10227
+ title:
10228
+ type: string
10229
+ maxLength: 300
10230
+ description: Display title shown for the tool.
10231
+ description:
10232
+ type: string
10233
+ maxLength: 1000
10234
+ description: Display description shown for the tool.
10235
+ x-celigo-ai-guidance:
10236
+ - |-
10237
+ Object entries accept only name/title/description — any other key
10238
+ fails the save with 422 `invalid_field_value` ("unknown field(s): …"),
10239
+ and an object without `name` fails with 422 `missing_required_field`
10240
+ ("Expected field: name to be present.").
10241
+ examples:
10242
+ - - hub_repo_search
10243
+ - name: hub_repo_info
10244
+ title: Repository info
10245
+ description: Look up a repository by name
10092
10246
  webSearch:
10093
10247
  type: object
10094
10248
  description: Web search configuration, used when type is "webSearch".
@@ -10226,176 +10380,1098 @@ components:
10226
10380
  then:
10227
10381
  required:
10228
10382
  - model
10229
- GuardrailConfig:
10383
+ GuardrailAiAgentConfig:
10230
10384
  type: object
10231
- description: |-
10232
- Configuration for GuardrailImport adaptor type.
10385
+ description: |
10386
+ LLM configuration for an `ai_agent` guardrail — which provider and model evaluate each
10387
+ record, with instructions, parameter tuning, and output format. Guardrails never invoke
10388
+ tools, so unlike an AI agent import no block here accepts a `tools` array; MCP `prompts`
10389
+ and `resources` remain available. Providers come in two families with two configuration
10390
+ formats:
10233
10391
 
10234
- Guardrails evaluate data flowing through integrations for safety and
10235
- compliance. The `type` field selects which check to apply, and the
10236
- corresponding sub-object (`aiAgent`, `pii`, or `moderation`) provides
10237
- the configuration.
10392
+ - **Built-in providers** — each has its own configuration block.
10393
+ - **openai**: OpenAI models (GPT-4.1, GPT-5, etc.). Configure via the `openai` object.
10394
+ - **gemini**: Google Gemini models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.gemini`.
10395
+ - **anthropic**: Anthropic Claude models via the LiteLLM proxy. Configure via `litellm` with overrides in `litellm._overrides.anthropic`.
10396
+ - **Catalog providers** — `mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`. Added
10397
+ as catalog data rather than platform code, they share one generic flat format:
10398
+ `model`, `modelOptions`, `instructions`, `output`, and the `prompts` / `resources`
10399
+ arrays directly on this object.
10238
10400
 
10239
- A `_connectionId` on the parent import is only needed for BYOK
10240
- `ai_agent` guardrails. In responses the server echoes the active type's
10241
- sub-object and applies the `confidenceThreshold` default; it also
10242
- returns inactive sibling sub-objects (e.g. `moderation: {categories: []}`
10243
- on a `pii` guardrail, or a populated `pii` left over from a type switch),
10244
- but only the active type's sub-object is meaningful. Legacy documents
10245
- may carry a server-written default `aiAgent` stub on `pii`/`moderation`
10246
- guardrails; current servers strip the inactive `aiAgent` on write.
10401
+ A `_connectionId` on the parent import selects bring-your-own-key (BYOK)
10402
+ credentials. Without one, built-in providers run on platform-managed
10403
+ credentials; catalog providers have no platform-managed credentials, so they
10404
+ save without a connection but cannot run until one is attached.
10247
10405
  x-celigo-ai-guidance:
10248
10406
  - |-
10249
- Guardrails are safety and compliance checks that can be applied
10250
- to data flowing through integrations. Three mutually-exclusive
10251
- types are supported — see `type` below for the full decision
10252
- rule on which to pick:
10253
-
10254
- - **pii**: Detect (and optionally mask) personally identifiable
10255
- information. Local deterministic classifier; fixed enum of
10256
- entity types (`pii.entities`).
10257
- - **moderation**: Detect harmful / inappropriate / policy-
10258
- violating CONTENT. Local deterministic classifier; fixed enum
10259
- of categories (`moderation.categories` — `sexual`, `hate`,
10260
- `harassment`, `self_harm`, `violence`, `illicit`, etc.). Use
10261
- category names exactly as listed in the enum — e.g. `hate`
10262
- (not "hate speech"), `violence` (not "violent content"). Map
10263
- natural-language synonyms ("explicit" → `sexual`, "toxic" →
10264
- `harassment`, etc.) to the closest enum value rather than
10265
- falling back to `ai_agent`.
10266
- - **ai_agent**: LLM-evaluated judgement against custom
10267
- instructions. Catch-all for intents that don't fit `pii` or
10268
- `moderation` — domain-specific compliance, business-policy
10269
- checks, data-quality assertions, etc. Pick this LAST, not as
10270
- the default.
10271
- - |-
10272
- Prefer the cheaper / more deterministic types (`pii` > `moderation` >
10273
- `ai_agent`) whenever the brief's intent fits.
10274
- - Guardrail imports do not require a `_connectionId` (unless using BYOK for `ai_agent` type).
10407
+ Do not send `tools` on any block. A non-empty array at `tools`, `openai.tools`,
10408
+ `litellm._overrides.gemini.tools`, or `litellm._overrides.anthropic.tools` fails the
10409
+ save with 422 `guardrail_tools_not_allowed` naming that path. Responses still echo
10410
+ `openai.tools: []` on OpenAI guardrails; do not copy it back into a write.
10411
+ required:
10412
+ - provider
10275
10413
  properties:
10276
- type:
10414
+ provider:
10277
10415
  type: string
10278
10416
  enum:
10279
- - ai_agent
10280
- - pii
10281
- - moderation
10417
+ - openai
10418
+ - gemini
10419
+ - anthropic
10420
+ - mistral
10421
+ - xai
10422
+ - huggingface
10423
+ - deepseek
10424
+ - cohere
10425
+ - groq
10282
10426
  x-enumDescriptions:
10283
- ai_agent: Evaluate data using an AI model with custom instructions.
10284
- pii: Detect personally identifiable information in data fields.
10285
- moderation: Check content for harmful or inappropriate categories.
10286
- description: |-
10287
- The type of guardrail to apply. Each type requires its corresponding
10288
- sub-configuration object (`aiAgent`, `pii`, or `moderation`).
10427
+ openai: Use OpenAI models via the OpenAI Responses API (built-in; `openai` block).
10428
+ gemini: Use Google Gemini models via the LiteLLM proxy (built-in; `litellm` block).
10429
+ anthropic: Use Anthropic Claude models via the LiteLLM proxy (built-in; `litellm` block).
10430
+ mistral: Use Mistral models (catalog provider; generic flat format, BYOK).
10431
+ xai: Use xAI Grok models (catalog provider; generic flat format, BYOK).
10432
+ huggingface: Use Hugging Face inference endpoint models (catalog provider; generic flat format, BYOK).
10433
+ deepseek: Use DeepSeek models (catalog provider; generic flat format, BYOK).
10434
+ cohere: Use Cohere models (catalog provider; generic flat format, BYOK).
10435
+ groq: Use Groq-hosted models (catalog provider; generic flat format, BYOK).
10436
+ description: AI provider to use.
10289
10437
  x-celigo-ai-guidance:
10290
10438
  - |-
10291
- The type of guardrail to apply.
10292
- Pick exactly one — `pii` / `moderation` / `ai_agent` are mutually exclusive at
10293
- the type level (a brief that wants both runs as two guardrails in sequence,
10294
- not one).
10295
- - |-
10296
- ## How to choose
10297
-
10298
- Apply these rules **in order** and pick the first match. Do
10299
- NOT skip ahead to `ai_agent` just because the brief is in
10300
- natural language — `pii` and `moderation` are also expressed
10301
- as natural-language briefs. The decision is about WHAT the
10302
- brief asks the guardrail to detect, not how the brief is
10303
- worded.
10304
-
10305
- 1. **`pii`** — pick this when the brief names ANY personally
10306
- identifiable information, OR when the brief names entity
10307
- categories (SSN, email, phone, credit card, address, name,
10308
- passport, license, account number, etc.) that match
10309
- `pii.entities`. Examples that route here:
10310
- "detect SSN and credit card numbers", "mask customer
10311
- emails and phone numbers", "scan for PII".
10312
-
10313
- 2. **`moderation`** — pick this when the brief asks the
10314
- guardrail to detect harmful, inappropriate, unsafe, or
10315
- policy-violating CONTENT (as opposed to PII data fields)
10316
- AND the intent maps to any value in `moderation.categories`
10317
- (`sexual`, `hate`, `harassment`, `self_harm`, `violence`,
10318
- `illicit`, etc.) — including via close synonyms. Apply
10319
- the synonym mapping liberally:
10320
- - "explicit", "obscene", "vulgar", "profane",
10321
- "inappropriate language", "swearing", "NSFW" → typically
10322
- maps to `sexual` and/or `harassment`
10323
- - "abusive", "insulting", "bullying", "toxic" → `harassment`
10324
- - "hateful", "discriminatory", "racist", "sexist" → `hate`
10325
- - "threatening", "intimidating" → `harassment_threatening`
10326
- or `violence`
10327
- - "graphic violence", "gore" → `violence_graphic`
10328
- - "suicide", "self-injury" → `self_harm`
10329
- - "drugs", "weapons", "illegal activity" → `illicit`
10330
- Briefs like "screen email body for explicit language",
10331
- "block toxic chat messages", "flag harassment in support
10332
- tickets", "moderate user-generated content for unsafe
10333
- material" all route to `moderation`. When the brief uses
10334
- a synonym, populate `moderation.categories` with the
10335
- closest enum value(s) — do NOT invent new category
10336
- strings; the enum is fixed.
10337
-
10338
- 3. **`ai_agent`** — pick this ONLY when the brief asks for
10339
- judgement that doesn't fit `pii` or `moderation`. Typical
10340
- triggers: domain-specific compliance checks (HIPAA / SOX
10341
- rule evaluation), business-policy validation (price
10342
- bounds, approval thresholds), data-quality assertions
10343
- (required fields populated, values plausible), or any
10344
- "evaluate against these custom rules" framing where the
10345
- rules are domain-specific and have no `pii.entities` /
10346
- `moderation.categories` analogue. If you can map the
10347
- brief's intent to a moderation category (even via a
10348
- synonym above), use `moderation` instead — `ai_agent` is
10349
- the catch-all, not the default.
10350
-
10351
- Tie-breaker for borderline cases: prefer the more specific
10352
- type (`pii` > `moderation` > `ai_agent`). `pii` and
10353
- `moderation` are local deterministic classifiers with fixed
10354
- enums — they're cheaper, faster, and more predictable than
10355
- `ai_agent` (which calls a real LLM per record). Default to
10356
- the cheaper path whenever the intent fits.
10439
+ The provider decides the configuration format, and the server rejects a
10440
+ mismatch with 422 `invalid_provider_config_format`: `openai` needs the
10441
+ `openai` block, `gemini` and `anthropic` need the `litellm` block (Gemini- or
10442
+ Claude-specific settings under `litellm._overrides`), and the catalog
10443
+ providers (`mistral`, `xai`, `huggingface`, `deepseek`, `cohere`, `groq`) need the
10444
+ generic flat format — `model` and `modelOptions` directly on this object,
10445
+ never an `openai` or `litellm` block.
10357
10446
  - |-
10358
- ## Sub-configuration requirements (one per type)
10359
-
10360
- - **ai_agent** requires the `aiAgent` sub-configuration.
10361
- - **pii** requires the `pii` sub-configuration with at least
10362
- one entity from `pii.entities`.
10363
- - **moderation** requires the `moderation` sub-configuration
10364
- with at least one category from `moderation.categories`.
10365
- confidenceThreshold:
10366
- type: number
10367
- minimum: 0
10368
- maximum: 1
10369
- default: 0.7
10370
- x-celigo-ui-override: Required by the guardrail form (confidenceThreshold is required:true once a type is selected, default 0.7). Encoded to mirror the form so builders produce connectable configurations.
10447
+ Catalog providers are BYOK-only at run time: the guardrail saves without a
10448
+ `_connectionId`, but its first run fails with 422 `invalid_request` ("No API
10449
+ key configured for provider …"). Always attach an HTTP connection to the
10450
+ vendor's API (token auth) when the provider is a catalog provider.
10451
+ model:
10452
+ type: string
10371
10453
  description: |-
10372
- Confidence threshold (0 to 1). Detections below this threshold are
10373
- ignored. Lower values catch more issues but increase false positives.
10454
+ Model identifier for a catalog provider (generic flat format) — for example
10455
+ `grok-4.6`. Built-in providers set the model inside their own block
10456
+ (`openai.model`, `litellm.model`) instead.
10374
10457
  x-celigo-ai-guidance:
10375
- - Confidence threshold for guardrail detection (0 to 1).
10376
10458
  - |-
10377
- Only detections with confidence at or above this threshold will be flagged.
10378
- Lower values catch more potential issues but may increase false positives.
10379
- examples:
10380
- - 0.7
10381
- - 0.5
10382
- - 0.9
10383
- aiAgent:
10459
+ Required for every catalog provider — omitting it or sending an empty string
10460
+ fails the save with 422 `missing_required_field`.
10461
+ - |-
10462
+ Without a `_connectionId` on the parent import the model must be one the
10463
+ catalog lists for the provider: an unknown id fails the save with 422
10464
+ `model_not_found`, a listed-but-disabled id with 422 `model_disabled`. With a
10465
+ `_connectionId` (BYOK) any model string saves — the server does not check it
10466
+ against the catalog or the vendor.
10467
+ modelOptions:
10384
10468
  type: object
10385
10469
  description: |-
10386
- AI agent check configuration; set when `type` is `ai_agent`. On
10387
- `pii`/`moderation` guardrails a legacy server-written stub may
10388
- appear here — it is inert, and current servers strip it on write.
10389
- pii:
10390
- type: object
10391
- required:
10392
- - entities
10393
- description: PII detection configuration. Required when `type` is `pii`.
10394
- x-celigo-ai-guidance:
10395
- - Configuration for PII (Personally Identifiable Information) detection.
10396
- - |-
10397
- Required when `guardrail.type` is "pii".
10398
- At least one entity type must be specified.
10470
+ Model tuning for a catalog provider (generic flat format). Which keys, values, and
10471
+ ranges are accepted is defined per catalog model and validated on save when the
10472
+ model is a catalog entry.
10473
+ properties:
10474
+ maxOutputTokens:
10475
+ type: number
10476
+ description: Maximum number of tokens the model may generate.
10477
+ temperature:
10478
+ type: number
10479
+ description: Sampling temperature.
10480
+ topP:
10481
+ type: number
10482
+ description: Nucleus sampling threshold.
10483
+ reasoning_effort:
10484
+ type: string
10485
+ enum:
10486
+ - low
10487
+ - medium
10488
+ - high
10489
+ - xhigh
10490
+ x-enumDescriptions:
10491
+ low: Minimal reasoning before answering.
10492
+ medium: Moderate reasoning.
10493
+ high: Extensive reasoning.
10494
+ xhigh: Maximum reasoning.
10495
+ description: Reasoning depth for models that expose it.
10496
+ x-celigo-ai-guidance:
10497
+ - |-
10498
+ When the model is a catalog entry, the server validates this object against
10499
+ that model's schema and fails the save with 422 `invalid_model_options`
10500
+ naming the key: unknown keys are rejected, `reasoning_effort` must be one of
10501
+ the enum values where the model accepts it at all (xAI's `grok-4.6` does;
10502
+ DeepSeek's `deepseek-chat` rejects the key), and numeric bounds apply —
10503
+ on `grok-4.6`, `temperature` ≤ 2, `topP` ≤ 1, `maxOutputTokens` ≥ 100.
10504
+ - |-
10505
+ With a `_connectionId` and a model the catalog does not list, the object is
10506
+ passed through unvalidated — send only options the vendor's API accepts.
10507
+ instructions:
10508
+ type: string
10509
+ description: |-
10510
+ System prompt for a catalog provider (generic flat format). Built-in providers
10511
+ set it inside their own block (`openai.instructions`,
10512
+ `litellm._overrides.anthropic.systemInstruction`).
10513
+ output:
10514
+ type: object
10515
+ description: |-
10516
+ Output format for a catalog provider (generic flat format). Built-in providers
10517
+ configure it inside their own block (`openai.output`, `litellm.responseFormat`).
10518
+ properties:
10519
+ format:
10520
+ type: object
10521
+ description: Controls the structure of the model's output.
10522
+ properties:
10523
+ type:
10524
+ type: string
10525
+ enum:
10526
+ - text
10527
+ - json_schema
10528
+ x-enumDescriptions:
10529
+ text: Free-form text.
10530
+ json_schema: Structured JSON conforming to `jsonSchema`.
10531
+ description: Output type.
10532
+ x-celigo-ai-guidance:
10533
+ - |-
10534
+ `blob` is not accepted here — the save fails with 422
10535
+ `unsupported_output_format` naming the model (verified on `grok-4.6`).
10536
+ name:
10537
+ type: string
10538
+ description: Name of the JSON schema, for `json_schema` output.
10539
+ strict:
10540
+ type: boolean
10541
+ description: When true, the model must conform exactly to `jsonSchema`.
10542
+ jsonSchema:
10543
+ type: object
10544
+ additionalProperties: true
10545
+ description: JSON Schema the structured output must conform to, for `json_schema` output.
10546
+ verbose:
10547
+ type: string
10548
+ description: Level of detail in the model's response, for models that expose it.
10549
+ prompts:
10550
+ type: array
10551
+ description: |-
10552
+ MCP prompt entries available to a catalog-provider guardrail (generic flat format).
10553
+ Each entry references one MCP connection and the prompt names allowed from it.
10554
+ items:
10555
+ type: object
10556
+ properties:
10557
+ type:
10558
+ type: string
10559
+ enum:
10560
+ - mcp
10561
+ x-enumDescriptions:
10562
+ mcp: Reference prompts exposed by an MCP server.
10563
+ description: Type of prompt entry. Always "mcp".
10564
+ mcp:
10565
+ type: object
10566
+ properties:
10567
+ _mcpConnectionId:
10568
+ type: string
10569
+ format: objectId
10570
+ x-celigo-refModel: connections
10571
+ description: Connection to the MCP server that exposes the prompts.
10572
+ allowedPrompts:
10573
+ type: array
10574
+ description: Prompt names the model may fetch from the server.
10575
+ items:
10576
+ type: string
10577
+ x-celigo-ai-guidance:
10578
+ - |-
10579
+ An unknown `_mcpConnectionId` fails the save with 422 `invalid_ref` naming
10580
+ the array index.
10581
+ resources:
10582
+ $ref: '#/components/schemas/McpResources'
10583
+ openai:
10584
+ type: object
10585
+ description: |
10586
+ OpenAI-specific configuration. Used when `provider` is "openai".
10587
+ required:
10588
+ - model
10589
+ - instructions
10590
+ properties:
10591
+ instructions:
10592
+ type: string
10593
+ maxLength: 1000000
10594
+ description: |
10595
+ System prompt that defines the check's behavior, goals, and constraints.
10596
+ examples:
10597
+ - You are a data validation agent. Check each record for completeness.
10598
+ x-celigo-ui-override: Required by the AI agent configuration form (the model's system prompt). Encoded here to mirror the form so builders produce connectable configurations.
10599
+ model:
10600
+ type: string
10601
+ description: OpenAI model identifier. Open string (not an enum) — model names change frequently.
10602
+ examples:
10603
+ - gpt-5.4
10604
+ - gpt-5.4-pro
10605
+ - gpt-5-mini
10606
+ - gpt-5-nano
10607
+ - gpt-4.1-mini
10608
+ - gpt-4o
10609
+ x-celigo-ui-override: Required by the AI agent configuration form. Encoded here to mirror the form so builders produce connectable configurations.
10610
+ x-celigo-ai-guidance:
10611
+ - |-
10612
+ With platform-managed credentials (no `_connectionId` on the parent
10613
+ import), the model must be one the platform hosts. The save does not
10614
+ check this — an unlisted model saves, and the guardrail's first run fails
10615
+ with 422 `invalid_model`, whose message lists the hosted models. A
10616
+ BYOK connection bypasses the hosted list and the model string is
10617
+ passed through to the provider as-is.
10618
+ reasoning:
10619
+ type: object
10620
+ description: Controls depth of reasoning for complex tasks.
10621
+ x-celigo-ai-guidance:
10622
+ - |-
10623
+ Supported on reasoning-capable OpenAI models only (currently the GPT-5 family and the o-series).
10624
+ Setting `reasoning` on a non-reasoning model (e.g.
10625
+ `gpt-4.1-mini`) is rejected by the provider at runtime — omit the field on those models.
10626
+ properties:
10627
+ effort:
10628
+ type: string
10629
+ enum:
10630
+ - none
10631
+ - minimal
10632
+ - low
10633
+ - medium
10634
+ - high
10635
+ - xhigh
10636
+ - max
10637
+ x-enumDescriptions:
10638
+ none: No additional reasoning effort.
10639
+ minimal: Least reasoning effort for simple, straightforward tasks.
10640
+ low: Light reasoning for moderately simple tasks.
10641
+ medium: Balanced reasoning effort for typical tasks.
10642
+ high: Extensive reasoning effort for complex, multi-step tasks.
10643
+ xhigh: Extended reasoning effort beyond high for demanding tasks.
10644
+ max: Highest available reasoning effort.
10645
+ description: How much reasoning effort the model should invest
10646
+ x-celigo-ai-guidance:
10647
+ - |-
10648
+ How much reasoning effort the model should invest.
10649
+ Reasoning- capable models only — see `reasoning` for the gating rule.
10650
+ summary:
10651
+ type: string
10652
+ enum:
10653
+ - concise
10654
+ - auto
10655
+ - detailed
10656
+ x-enumDescriptions:
10657
+ concise: Brief, high-level reasoning summary.
10658
+ auto: Let the model decide the appropriate level of detail.
10659
+ detailed: Comprehensive reasoning summary with full explanations.
10660
+ description: Level of detail in reasoning summaries
10661
+ x-celigo-ai-guidance:
10662
+ - |-
10663
+ Level of detail in reasoning summaries.
10664
+ Reasoning-capable models only — see `reasoning` for the gating rule.
10665
+ temperature:
10666
+ type: number
10667
+ minimum: 0
10668
+ maximum: 2
10669
+ description: |
10670
+ Sampling temperature. Higher values (e.g. 1.5) produce more creative output,
10671
+ lower values (e.g. 0.2) produce more focused and deterministic output.
10672
+ topP:
10673
+ type: number
10674
+ minimum: 0.1
10675
+ maximum: 1
10676
+ description: Nucleus sampling parameter
10677
+ topLogprobs:
10678
+ type: number
10679
+ minimum: 0
10680
+ maximum: 20
10681
+ description: Number of most likely tokens to return log probabilities for at each output position.
10682
+ maxOutputTokens:
10683
+ type: number
10684
+ minimum: 100
10685
+ maximum: 128000
10686
+ description: Maximum number of tokens in the model's response. Unlike an AI agent import, a guardrail does not receive a server-written value when this is omitted.
10687
+ serviceTier:
10688
+ type: string
10689
+ enum:
10690
+ - auto
10691
+ - default
10692
+ - priority
10693
+ x-enumDescriptions:
10694
+ auto: Let OpenAI automatically select the appropriate service tier.
10695
+ default: Standard service tier with normal rate limits and latency.
10696
+ priority: Premium tier with higher rate limits and lower latency at increased cost.
10697
+ description: |-
10698
+ OpenAI service tier. "priority" provides higher rate limits and
10699
+ lower latency at increased cost.
10700
+ x-celigo-ai-guidance:
10701
+ - |-
10702
+ BYOK only.
10703
+ Platform-managed credentials (no `_connectionId` on the parent import) always
10704
+ run at `default` regardless of what's set here.
10705
+ output:
10706
+ type: object
10707
+ description: Output format configuration
10708
+ properties:
10709
+ format:
10710
+ type: object
10711
+ description: |
10712
+ Controls the structure of the model's output.
10713
+ properties:
10714
+ type:
10715
+ type: string
10716
+ enum:
10717
+ - text
10718
+ - json_schema
10719
+ - blob
10720
+ x-enumDescriptions:
10721
+ text: Free-form text response from the model.
10722
+ json_schema: Structured JSON output conforming to a defined schema.
10723
+ blob: Binary data output for non-text content.
10724
+ description: Output format type.
10725
+ schemaMode:
10726
+ type: string
10727
+ enum:
10728
+ - manual
10729
+ - json
10730
+ x-enumDescriptions:
10731
+ manual: The schema was built field-by-field in the visual editor.
10732
+ json: The schema was pasted or edited as raw JSON.
10733
+ description: |-
10734
+ How the structured-output schema was authored in the UI.
10735
+ Editor state only — it does not change how `jsonSchema` is
10736
+ sent to the provider.
10737
+ name:
10738
+ type: string
10739
+ description: Name for the output format (used with json_schema)
10740
+ x-celigo-ui-override: Required by the AI agent form when output format type is json_schema. Encoded here to mirror the form so builders produce connectable configurations.
10741
+ strict:
10742
+ type: boolean
10743
+ description: When true, enforces strict schema validation on output.
10744
+ x-celigo-ai-guidance:
10745
+ - Whether to enforce strict schema validation on output
10746
+ jsonSchema:
10747
+ type: object
10748
+ description: |
10749
+ JSON Schema for structured output. Required when `format.type` is "json_schema".
10750
+ x-celigo-ui-override: Required by the AI agent form when output format type is json_schema. Encoded here to mirror the form so builders produce connectable configurations.
10751
+ properties:
10752
+ type:
10753
+ type: string
10754
+ description: Root JSON Schema type of the structured output; use "object" for record-shaped results.
10755
+ enum:
10756
+ - object
10757
+ - array
10758
+ - string
10759
+ - number
10760
+ - integer
10761
+ - boolean
10762
+ x-enumDescriptions:
10763
+ object: JSON object with named properties.
10764
+ array: Ordered list of values.
10765
+ string: Text string value.
10766
+ number: Numeric value including decimals.
10767
+ integer: Whole number value without decimals.
10768
+ boolean: True or false value.
10769
+ properties:
10770
+ type: object
10771
+ additionalProperties: true
10772
+ description: JSON Schema definitions for each field the structured output may contain.
10773
+ required:
10774
+ type: array
10775
+ description: Property names the model must include in the structured output.
10776
+ items:
10777
+ type: string
10778
+ additionalproperties:
10779
+ type: boolean
10780
+ description: When true, the structured output may include properties beyond those defined in `properties`.
10781
+ schema:
10782
+ type: object
10783
+ readOnly: true
10784
+ additionalProperties: true
10785
+ description: |-
10786
+ Server-written copy of `jsonSchema`, present in responses once `jsonSchema`
10787
+ is set. Send `jsonSchema`, not this field.
10788
+ if:
10789
+ properties:
10790
+ type:
10791
+ const: json_schema
10792
+ required:
10793
+ - type
10794
+ then:
10795
+ required:
10796
+ - name
10797
+ - jsonSchema
10798
+ verbose:
10799
+ type: string
10800
+ enum:
10801
+ - low
10802
+ - medium
10803
+ - high
10804
+ x-enumDescriptions:
10805
+ low: Minimal detail in the model's response.
10806
+ medium: Moderate detail in the model's response, the default level.
10807
+ high: Maximum detail and verbosity in the model's response.
10808
+ description: Level of detail in the model's response
10809
+ x-celigo-ai-guidance:
10810
+ - |-
10811
+ Supported on the GPT-5 family only. Other OpenAI models (e.g.
10812
+ `gpt-4.1`, `gpt-4.1-mini`,
10813
+ `gpt-4.1-nano`) accept only `medium` (the no-op default) — `low` and `high` are
10814
+ rejected by the provider at runtime.
10815
+ Omit the field entirely on non-GPT-5 models rather than relying on the default.
10816
+ prompts:
10817
+ type: array
10818
+ description: |-
10819
+ MCP prompt entries available to the guardrail's model. Each item references one
10820
+ MCP connection and the prompt names allowed from it.
10821
+ items:
10822
+ type: object
10823
+ properties:
10824
+ type:
10825
+ type: string
10826
+ enum:
10827
+ - mcp
10828
+ x-enumDescriptions:
10829
+ mcp: Connect to an MCP server to use its exposed prompts.
10830
+ description: Type of prompt entry. Always "mcp".
10831
+ mcp:
10832
+ type: object
10833
+ description: MCP server prompt configuration.
10834
+ properties:
10835
+ _mcpConnectionId:
10836
+ type: string
10837
+ format: objectId
10838
+ x-celigo-refModel: connections
10839
+ description: Connection to the MCP server.
10840
+ allowedPrompts:
10841
+ type: array
10842
+ description: Prompt names to allow from the MCP server.
10843
+ items:
10844
+ type: string
10845
+ resources:
10846
+ $ref: '#/components/schemas/McpResources'
10847
+ litellm:
10848
+ type: object
10849
+ description: |
10850
+ LiteLLM proxy configuration. Used when `provider` is "gemini" or "anthropic".
10851
+
10852
+ LiteLLM provides a unified interface to multiple AI providers. Gemini-specific
10853
+ settings are in `_overrides.gemini`; Claude-specific settings are in
10854
+ `_overrides.anthropic`.
10855
+
10856
+ `model` is required when litellm is the active provider path.
10857
+ properties:
10858
+ model:
10859
+ type: string
10860
+ description: |-
10861
+ LiteLLM model identifier. For Gemini, models are stored without the `gemini/`
10862
+ prefix; for Anthropic, use the Claude model id (e.g. `claude-sonnet-4-6`).
10863
+ examples:
10864
+ - gemini-2.5-flash
10865
+ - gemini-2.5-pro
10866
+ - gemini-2.5-flash-lite
10867
+ - claude-sonnet-4-6
10868
+ - claude-opus-4-7
10869
+ x-celigo-ui-override: Required by the AI agent configuration form. Encoded here to mirror the form so builders produce connectable configurations.
10870
+ x-celigo-ai-guidance:
10871
+ - |-
10872
+ With platform-managed credentials (no `_connectionId` on the parent
10873
+ import), the model must be one the platform hosts for the provider —
10874
+ Gemini and Anthropic Claude both have a hosted list. The save does not
10875
+ check this — an unlisted model saves, and the guardrail's first run fails
10876
+ with 422 `invalid_model`, whose message lists the hosted models.
10877
+ temperature:
10878
+ type: number
10879
+ minimum: 0
10880
+ maximum: 2
10881
+ description: Sampling temperature
10882
+ x-celigo-ai-guidance:
10883
+ - |-
10884
+ When `provider` is "anthropic", the value must be between 0 and 1 — a higher value
10885
+ fails the save with 422 `invalid_field_value`. Gemini accepts the full 0-2 range.
10886
+ maxCompletionTokens:
10887
+ type: number
10888
+ minimum: 100
10889
+ maximum: 128000
10890
+ description: Maximum number of tokens in the response
10891
+ topP:
10892
+ type: number
10893
+ minimum: 0.1
10894
+ maximum: 1
10895
+ description: Nucleus sampling parameter
10896
+ seed:
10897
+ type: number
10898
+ description: Random seed for reproducible outputs
10899
+ responseFormat:
10900
+ type: object
10901
+ description: Output format configuration
10902
+ x-celigo-ai-guidance:
10903
+ - |-
10904
+ When `provider` is "anthropic", `type` must be "text" or "json_schema" — "blob" is
10905
+ rejected with 422 `invalid_response_format`. As with the other providers, "json_schema"
10906
+ requires `name` and `jsonSchema`.
10907
+ properties:
10908
+ type:
10909
+ type: string
10910
+ description: Output format type.
10911
+ enum:
10912
+ - text
10913
+ - json_schema
10914
+ - blob
10915
+ x-enumDescriptions:
10916
+ text: Free-form text response from the model.
10917
+ json_schema: Structured JSON output conforming to a defined schema.
10918
+ blob: Binary data output for non-text content.
10919
+ schemaMode:
10920
+ type: string
10921
+ enum:
10922
+ - manual
10923
+ - json
10924
+ x-enumDescriptions:
10925
+ manual: The schema was built field-by-field in the visual editor.
10926
+ json: The schema was pasted or edited as raw JSON.
10927
+ description: |-
10928
+ How the structured-output schema was authored in the UI. Editor
10929
+ state only — it does not change how `jsonSchema` is sent to the
10930
+ provider.
10931
+ name:
10932
+ type: string
10933
+ description: Name for the output format (used with json_schema).
10934
+ x-celigo-ui-override: Required by the AI agent form when output format type is json_schema. Encoded here to mirror the form so builders produce connectable configurations.
10935
+ strict:
10936
+ type: boolean
10937
+ description: When true, enforces strict schema validation on output.
10938
+ jsonSchema:
10939
+ type: object
10940
+ description: JSON Schema for structured output. Required when `responseFormat.type` is "json_schema".
10941
+ x-celigo-ui-override: Required by the AI agent form when output format type is json_schema. Encoded here to mirror the form so builders produce connectable configurations.
10942
+ properties:
10943
+ type:
10944
+ type: string
10945
+ description: Root JSON Schema type of the structured output; use "object" for record-shaped results.
10946
+ enum:
10947
+ - object
10948
+ - array
10949
+ - string
10950
+ - number
10951
+ - integer
10952
+ - boolean
10953
+ x-enumDescriptions:
10954
+ object: JSON object with named properties.
10955
+ array: Ordered list of values.
10956
+ string: Text string value.
10957
+ number: Numeric value including decimals.
10958
+ integer: Whole number value without decimals.
10959
+ boolean: True or false value.
10960
+ properties:
10961
+ type: object
10962
+ additionalProperties: true
10963
+ description: JSON Schema definitions for each field the structured output may contain.
10964
+ required:
10965
+ type: array
10966
+ description: Property names the model must include in the structured output.
10967
+ items:
10968
+ type: string
10969
+ additionalProperties:
10970
+ type: boolean
10971
+ description: When true, the structured output may include properties beyond those defined in `properties`.
10972
+ if:
10973
+ properties:
10974
+ type:
10975
+ const: json_schema
10976
+ required:
10977
+ - type
10978
+ then:
10979
+ required:
10980
+ - name
10981
+ - jsonSchema
10982
+ _overrides:
10983
+ type: object
10984
+ description: Provider-specific overrides
10985
+ properties:
10986
+ gemini:
10987
+ type: object
10988
+ description: |
10989
+ Gemini-specific configuration overrides.
10990
+ required:
10991
+ - systemInstruction
10992
+ properties:
10993
+ systemInstruction:
10994
+ type: string
10995
+ maxLength: 1000000
10996
+ description: |
10997
+ System instruction for Gemini models. Equivalent to OpenAI's `instructions`.
10998
+ Maximum 1,000,000 characters.
10999
+ x-celigo-ui-override: Required by the AI agent configuration form (the model's system prompt, the Gemini equivalent of `instructions`). Encoded here to mirror the form so builders produce connectable configurations.
11000
+ prompts:
11001
+ type: array
11002
+ description: |-
11003
+ MCP prompt entries available to the Gemini model. Each item references one
11004
+ MCP connection and the prompt names allowed from it.
11005
+ items:
11006
+ type: object
11007
+ properties:
11008
+ type:
11009
+ type: string
11010
+ enum:
11011
+ - mcp
11012
+ x-enumDescriptions:
11013
+ mcp: Connect to an MCP server to use its exposed prompts.
11014
+ description: Type of prompt entry. Always "mcp".
11015
+ mcp:
11016
+ type: object
11017
+ description: MCP server prompt configuration.
11018
+ properties:
11019
+ _mcpConnectionId:
11020
+ type: string
11021
+ format: objectId
11022
+ x-celigo-refModel: connections
11023
+ description: Connection to the MCP server.
11024
+ allowedPrompts:
11025
+ type: array
11026
+ description: Prompt names to allow from the MCP server.
11027
+ items:
11028
+ type: string
11029
+ resources:
11030
+ $ref: '#/components/schemas/McpResources'
11031
+ responseModalities:
11032
+ type: array
11033
+ description: Response output modalities
11034
+ x-celigo-ai-guidance:
11035
+ - |-
11036
+ `["image"]` requires an image-capable Gemini model (currently `gemini-2.5-flash-image`).
11037
+ Selecting it on a text-only model is rejected by the provider — pair image
11038
+ output with the right model or omit.
11039
+ items:
11040
+ type: string
11041
+ enum:
11042
+ - text
11043
+ - image
11044
+ x-enumDescriptions:
11045
+ text: Generate text content in the response.
11046
+ image: Generate image content in the response.
11047
+ topK:
11048
+ type: number
11049
+ description: Top-K sampling parameter for Gemini
11050
+ thinkingConfig:
11051
+ type: object
11052
+ description: Controls Gemini's extended thinking capabilities
11053
+ x-celigo-ai-guidance:
11054
+ - |-
11055
+ Supported on reasoning-capable Gemini models only (currently `gemini-2.5-pro`
11056
+ and `gemini-2.5-flash`).
11057
+ Setting `thinkingConfig` on a non-thinking model (e.g.
11058
+ `gemini-2.5-flash-lite`,
11059
+ `gemini-2.5-flash-image`) is rejected by the provider at runtime — omit the
11060
+ field on those models.
11061
+ properties:
11062
+ includeThoughts:
11063
+ type: boolean
11064
+ description: When true, includes the model's thinking steps in the response.
11065
+ x-celigo-ai-guidance:
11066
+ - Whether to include thinking steps in the response
11067
+ thinkingBudget:
11068
+ type: number
11069
+ minimum: 100
11070
+ maximum: 4000
11071
+ description: Maximum tokens allocated for thinking
11072
+ thinkingLevel:
11073
+ type: string
11074
+ description: Controls how much thinking effort the model applies; use higher levels for complex, multi-step tasks at the cost of latency and tokens.
11075
+ enum:
11076
+ - minimal
11077
+ - low
11078
+ - medium
11079
+ - high
11080
+ x-enumDescriptions:
11081
+ minimal: Least thinking effort for simple tasks.
11082
+ low: Light thinking for moderately simple tasks.
11083
+ medium: Balanced thinking effort for typical tasks.
11084
+ high: Maximum thinking effort for complex, multi-step tasks.
11085
+ imageConfig:
11086
+ type: object
11087
+ description: Gemini image generation configuration
11088
+ properties:
11089
+ aspectRatio:
11090
+ type: string
11091
+ description: Aspect ratio of generated images; choose a ratio matching the intended display format.
11092
+ enum:
11093
+ - '1:1'
11094
+ - '2:3'
11095
+ - '3:2'
11096
+ - '3:4'
11097
+ - '4:3'
11098
+ - '4:5'
11099
+ - '5:4'
11100
+ - '9:16'
11101
+ - '16:9'
11102
+ - '21:9'
11103
+ x-enumDescriptions:
11104
+ '1:1': Square aspect ratio.
11105
+ '2:3': Portrait aspect ratio (2 wide by 3 tall).
11106
+ '3:2': Landscape aspect ratio (3 wide by 2 tall).
11107
+ '3:4': Portrait aspect ratio (3 wide by 4 tall).
11108
+ '4:3': Standard landscape aspect ratio (4 wide by 3 tall).
11109
+ '4:5': Portrait aspect ratio (4 wide by 5 tall).
11110
+ '5:4': Landscape aspect ratio (5 wide by 4 tall).
11111
+ '9:16': Tall portrait aspect ratio for mobile screens.
11112
+ '16:9': Widescreen landscape aspect ratio.
11113
+ '21:9': Ultra-widescreen cinematic aspect ratio.
11114
+ imageSize:
11115
+ type: string
11116
+ description: Output resolution of generated images; higher resolutions increase detail and file size.
11117
+ enum:
11118
+ - 1K
11119
+ - 2K
11120
+ - 4K
11121
+ x-enumDescriptions:
11122
+ 1K: Standard resolution output around 1024 pixels.
11123
+ 2K: High resolution output around 2048 pixels.
11124
+ 4K: Ultra-high resolution output around 4096 pixels.
11125
+ mediaResolution:
11126
+ type: string
11127
+ enum:
11128
+ - low
11129
+ - medium
11130
+ - high
11131
+ x-enumDescriptions:
11132
+ low: Low resolution for faster processing and reduced token usage.
11133
+ medium: Balanced resolution for typical media processing.
11134
+ high: High resolution for maximum detail in media inputs.
11135
+ description: Resolution for media inputs (images, video)
11136
+ anthropic:
11137
+ type: object
11138
+ description: |
11139
+ Claude-specific configuration overrides. Used when `provider` is "anthropic".
11140
+ required:
11141
+ - systemInstruction
11142
+ properties:
11143
+ systemInstruction:
11144
+ type: string
11145
+ maxLength: 1000000
11146
+ description: |
11147
+ System instruction for Claude models. Equivalent to OpenAI's `instructions`.
11148
+ Maximum 1,000,000 characters.
11149
+ x-celigo-ui-override: Required by the AI agent configuration form (the model's system prompt, the Claude equivalent of `instructions`). Encoded here to mirror the form so builders produce connectable configurations.
11150
+ topK:
11151
+ type: number
11152
+ minimum: 0
11153
+ description: |-
11154
+ Top-K sampling parameter. Deprecated on Claude models released after Claude Opus
11155
+ 4.6, which reject any value at runtime; set it only on older models.
11156
+ thinkingConfig:
11157
+ type: object
11158
+ description: Controls Claude's extended thinking capabilities.
11159
+ properties:
11160
+ type:
11161
+ type: string
11162
+ enum:
11163
+ - enabled
11164
+ - disabled
11165
+ - adaptive
11166
+ x-enumDescriptions:
11167
+ enabled: Turn on extended thinking with an explicit token budget.
11168
+ disabled: Turn off extended thinking.
11169
+ adaptive: Let the model decide how much to think based on task complexity.
11170
+ description: Extended thinking mode.
11171
+ budgetTokens:
11172
+ type: number
11173
+ minimum: 1024
11174
+ description: |-
11175
+ Maximum tokens allocated for thinking. Required when `type` is "enabled" —
11176
+ omitting it fails the save with 422 `invalid_thinking_config`.
11177
+ x-celigo-ui-override: Required by the AI agent form when thinkingConfig.type is "enabled". Encoded here to mirror the form so builders produce connectable configurations.
11178
+ display:
11179
+ type: string
11180
+ enum:
11181
+ - summarized
11182
+ - omitted
11183
+ x-enumDescriptions:
11184
+ summarized: Include a summarized view of the model's thinking in the response.
11185
+ omitted: Exclude the model's thinking from the response.
11186
+ description: How thinking output is surfaced in the response.
11187
+ effort:
11188
+ type: string
11189
+ enum:
11190
+ - low
11191
+ - medium
11192
+ - high
11193
+ - xhigh
11194
+ - max
11195
+ x-enumDescriptions:
11196
+ low: Light thinking effort for moderately simple tasks.
11197
+ medium: Balanced thinking effort for typical tasks.
11198
+ high: Maximum standard thinking effort for complex tasks.
11199
+ xhigh: Extended thinking effort beyond high for demanding tasks.
11200
+ max: Highest available thinking effort.
11201
+ description: |-
11202
+ How much thinking effort the model applies; use with `type` "adaptive". Higher
11203
+ values (`xhigh`, `max`) may be gated to specific Claude models by the provider.
11204
+ if:
11205
+ properties:
11206
+ type:
11207
+ const: enabled
11208
+ required:
11209
+ - type
11210
+ then:
11211
+ required:
11212
+ - budgetTokens
11213
+ serviceTier:
11214
+ type: string
11215
+ enum:
11216
+ - auto
11217
+ - standard_only
11218
+ x-enumDescriptions:
11219
+ auto: Let Anthropic select the appropriate service tier.
11220
+ standard_only: Restrict processing to the standard service tier.
11221
+ description: Anthropic service tier for the request.
11222
+ prompts:
11223
+ type: array
11224
+ description: |-
11225
+ MCP prompt entries available to the Claude model. Each item references one
11226
+ MCP connection and the prompt names allowed from it.
11227
+ items:
11228
+ type: object
11229
+ properties:
11230
+ type:
11231
+ type: string
11232
+ enum:
11233
+ - mcp
11234
+ x-enumDescriptions:
11235
+ mcp: Connect to an MCP server to use its exposed prompts.
11236
+ description: Type of prompt entry. Always "mcp".
11237
+ mcp:
11238
+ type: object
11239
+ description: MCP server prompt configuration.
11240
+ properties:
11241
+ _mcpConnectionId:
11242
+ type: string
11243
+ format: objectId
11244
+ x-celigo-refModel: connections
11245
+ description: Connection to the MCP server.
11246
+ allowedPrompts:
11247
+ type: array
11248
+ description: Prompt names to allow from the MCP server.
11249
+ items:
11250
+ type: string
11251
+ resources:
11252
+ $ref: '#/components/schemas/McpResources'
11253
+ if:
11254
+ properties:
11255
+ provider:
11256
+ const: openai
11257
+ required:
11258
+ - provider
11259
+ then:
11260
+ required:
11261
+ - openai
11262
+ properties:
11263
+ openai:
11264
+ required:
11265
+ - model
11266
+ - instructions
11267
+ else:
11268
+ if:
11269
+ properties:
11270
+ provider:
11271
+ enum:
11272
+ - gemini
11273
+ - anthropic
11274
+ required:
11275
+ - provider
11276
+ then:
11277
+ required:
11278
+ - litellm
11279
+ properties:
11280
+ litellm:
11281
+ required:
11282
+ - model
11283
+ else:
11284
+ if:
11285
+ properties:
11286
+ provider:
11287
+ enum:
11288
+ - mistral
11289
+ - xai
11290
+ - huggingface
11291
+ - deepseek
11292
+ - cohere
11293
+ - groq
11294
+ required:
11295
+ - provider
11296
+ then:
11297
+ required:
11298
+ - model
11299
+ GuardrailConfig:
11300
+ type: object
11301
+ description: |-
11302
+ Configuration for GuardrailImport adaptor type.
11303
+
11304
+ Guardrails evaluate data flowing through integrations for safety and
11305
+ compliance. The `type` field selects which check to apply, and the
11306
+ corresponding sub-object (`aiAgent`, `pii`, or `moderation`) provides
11307
+ the configuration.
11308
+
11309
+ A `_connectionId` on the parent import is only needed for BYOK
11310
+ `ai_agent` guardrails. In responses the server echoes the active type's
11311
+ sub-object and applies the `confidenceThreshold` default; it also
11312
+ returns inactive sibling sub-objects (e.g. `moderation: {categories: []}`
11313
+ on a `pii` guardrail, or a populated `pii` left over from a type switch),
11314
+ but only the active type's sub-object is meaningful. Legacy documents
11315
+ may carry a server-written default `aiAgent` stub on `pii`/`moderation`
11316
+ guardrails; current servers strip the inactive `aiAgent` on write.
11317
+ x-celigo-ai-guidance:
11318
+ - |-
11319
+ Guardrails are safety and compliance checks that can be applied
11320
+ to data flowing through integrations. Three mutually-exclusive
11321
+ types are supported — see `type` below for the full decision
11322
+ rule on which to pick:
11323
+
11324
+ - **pii**: Detect (and optionally mask) personally identifiable
11325
+ information. Local deterministic classifier; fixed enum of
11326
+ entity types (`pii.entities`).
11327
+ - **moderation**: Detect harmful / inappropriate / policy-
11328
+ violating CONTENT. Local deterministic classifier; fixed enum
11329
+ of categories (`moderation.categories` — `sexual`, `hate`,
11330
+ `harassment`, `self_harm`, `violence`, `illicit`, etc.). Use
11331
+ category names exactly as listed in the enum — e.g. `hate`
11332
+ (not "hate speech"), `violence` (not "violent content"). Map
11333
+ natural-language synonyms ("explicit" → `sexual`, "toxic" →
11334
+ `harassment`, etc.) to the closest enum value rather than
11335
+ falling back to `ai_agent`.
11336
+ - **ai_agent**: LLM-evaluated judgement against custom
11337
+ instructions. Catch-all for intents that don't fit `pii` or
11338
+ `moderation` — domain-specific compliance, business-policy
11339
+ checks, data-quality assertions, etc. Pick this LAST, not as
11340
+ the default.
11341
+ - |-
11342
+ Prefer the cheaper / more deterministic types (`pii` > `moderation` >
11343
+ `ai_agent`) whenever the brief's intent fits.
11344
+ - Guardrail imports do not require a `_connectionId` (unless using BYOK for `ai_agent` type).
11345
+ - |-
11346
+ Never send `tools` anywhere under `aiAgent` on an `ai_agent` guardrail (`aiAgent.tools`,
11347
+ `aiAgent.openai.tools`, `aiAgent.litellm._overrides.gemini.tools`, `….anthropic.tools`) —
11348
+ any non-empty array fails the save with 422 `guardrail_tools_not_allowed` ("Tools aren't
11349
+ supported on a guardrail AI agent configuration…"), on create and on update. `prompts` and
11350
+ `resources` are accepted; the server still echoes `openai.tools: []` on OpenAI guardrails.
11351
+ properties:
11352
+ type:
11353
+ type: string
11354
+ enum:
11355
+ - ai_agent
11356
+ - pii
11357
+ - moderation
11358
+ x-enumDescriptions:
11359
+ ai_agent: Evaluate data using an AI model with custom instructions.
11360
+ pii: Detect personally identifiable information in data fields.
11361
+ moderation: Check content for harmful or inappropriate categories.
11362
+ description: |-
11363
+ The type of guardrail to apply. Each type requires its corresponding
11364
+ sub-configuration object (`aiAgent`, `pii`, or `moderation`).
11365
+ x-celigo-ai-guidance:
11366
+ - |-
11367
+ The type of guardrail to apply.
11368
+ Pick exactly one — `pii` / `moderation` / `ai_agent` are mutually exclusive at
11369
+ the type level (a brief that wants both runs as two guardrails in sequence,
11370
+ not one).
11371
+ - |-
11372
+ ## How to choose
11373
+
11374
+ Apply these rules **in order** and pick the first match. Do
11375
+ NOT skip ahead to `ai_agent` just because the brief is in
11376
+ natural language — `pii` and `moderation` are also expressed
11377
+ as natural-language briefs. The decision is about WHAT the
11378
+ brief asks the guardrail to detect, not how the brief is
11379
+ worded.
11380
+
11381
+ 1. **`pii`** — pick this when the brief names ANY personally
11382
+ identifiable information, OR when the brief names entity
11383
+ categories (SSN, email, phone, credit card, address, name,
11384
+ passport, license, account number, etc.) that match
11385
+ `pii.entities`. Examples that route here:
11386
+ "detect SSN and credit card numbers", "mask customer
11387
+ emails and phone numbers", "scan for PII".
11388
+
11389
+ 2. **`moderation`** — pick this when the brief asks the
11390
+ guardrail to detect harmful, inappropriate, unsafe, or
11391
+ policy-violating CONTENT (as opposed to PII data fields)
11392
+ AND the intent maps to any value in `moderation.categories`
11393
+ (`sexual`, `hate`, `harassment`, `self_harm`, `violence`,
11394
+ `illicit`, etc.) — including via close synonyms. Apply
11395
+ the synonym mapping liberally:
11396
+ - "explicit", "obscene", "vulgar", "profane",
11397
+ "inappropriate language", "swearing", "NSFW" → typically
11398
+ maps to `sexual` and/or `harassment`
11399
+ - "abusive", "insulting", "bullying", "toxic" → `harassment`
11400
+ - "hateful", "discriminatory", "racist", "sexist" → `hate`
11401
+ - "threatening", "intimidating" → `harassment_threatening`
11402
+ or `violence`
11403
+ - "graphic violence", "gore" → `violence_graphic`
11404
+ - "suicide", "self-injury" → `self_harm`
11405
+ - "drugs", "weapons", "illegal activity" → `illicit`
11406
+ Briefs like "screen email body for explicit language",
11407
+ "block toxic chat messages", "flag harassment in support
11408
+ tickets", "moderate user-generated content for unsafe
11409
+ material" all route to `moderation`. When the brief uses
11410
+ a synonym, populate `moderation.categories` with the
11411
+ closest enum value(s) — do NOT invent new category
11412
+ strings; the enum is fixed.
11413
+
11414
+ 3. **`ai_agent`** — pick this ONLY when the brief asks for
11415
+ judgement that doesn't fit `pii` or `moderation`. Typical
11416
+ triggers: domain-specific compliance checks (HIPAA / SOX
11417
+ rule evaluation), business-policy validation (price
11418
+ bounds, approval thresholds), data-quality assertions
11419
+ (required fields populated, values plausible), or any
11420
+ "evaluate against these custom rules" framing where the
11421
+ rules are domain-specific and have no `pii.entities` /
11422
+ `moderation.categories` analogue. If you can map the
11423
+ brief's intent to a moderation category (even via a
11424
+ synonym above), use `moderation` instead — `ai_agent` is
11425
+ the catch-all, not the default.
11426
+
11427
+ Tie-breaker for borderline cases: prefer the more specific
11428
+ type (`pii` > `moderation` > `ai_agent`). `pii` and
11429
+ `moderation` are local deterministic classifiers with fixed
11430
+ enums — they're cheaper, faster, and more predictable than
11431
+ `ai_agent` (which calls a real LLM per record). Default to
11432
+ the cheaper path whenever the intent fits.
11433
+ - |-
11434
+ ## Sub-configuration requirements (one per type)
11435
+
11436
+ - **ai_agent** requires the `aiAgent` sub-configuration.
11437
+ - **pii** requires the `pii` sub-configuration with at least
11438
+ one entity from `pii.entities`.
11439
+ - **moderation** requires the `moderation` sub-configuration
11440
+ with at least one category from `moderation.categories`.
11441
+ confidenceThreshold:
11442
+ type: number
11443
+ minimum: 0
11444
+ maximum: 1
11445
+ default: 0.7
11446
+ x-celigo-ui-override: Required by the guardrail form (confidenceThreshold is required:true once a type is selected, default 0.7). Encoded to mirror the form so builders produce connectable configurations.
11447
+ description: |-
11448
+ Confidence threshold (0 to 1). Detections below this threshold are
11449
+ ignored. Lower values catch more issues but increase false positives.
11450
+ x-celigo-ai-guidance:
11451
+ - Confidence threshold for guardrail detection (0 to 1).
11452
+ - |-
11453
+ Only detections with confidence at or above this threshold will be flagged.
11454
+ Lower values catch more potential issues but may increase false positives.
11455
+ examples:
11456
+ - 0.7
11457
+ - 0.5
11458
+ - 0.9
11459
+ aiAgent:
11460
+ type: object
11461
+ description: |-
11462
+ AI agent check configuration; set when `type` is `ai_agent`. On
11463
+ `pii`/`moderation` guardrails a legacy server-written stub may
11464
+ appear here — it is inert, and current servers strip it on write.
11465
+ pii:
11466
+ type: object
11467
+ required:
11468
+ - entities
11469
+ description: PII detection configuration. Required when `type` is `pii`.
11470
+ x-celigo-ai-guidance:
11471
+ - Configuration for PII (Personally Identifiable Information) detection.
11472
+ - |-
11473
+ Required when `guardrail.type` is "pii".
11474
+ At least one entity type must be specified.
10399
11475
  properties:
10400
11476
  entities:
10401
11477
  type: array
@@ -10605,7 +11681,7 @@ components:
10605
11681
  - aiAgent
10606
11682
  properties:
10607
11683
  aiAgent:
10608
- $ref: '#/components/schemas/AiAgentConfig'
11684
+ $ref: '#/components/schemas/GuardrailAiAgentConfig'
10609
11685
  OneToMany:
10610
11686
  type: boolean
10611
11687
  description: |
@@ -14119,7 +15195,9 @@ components:
14119
15195
  connection; `NetSuiteDistributedImport` and `NetSuiteHTTPImport` both need a `netsuite`
14120
15196
  connection). Server-required — POST without it fails with 422 "Expected field:
14121
15197
  _connectionId to be present" — except for the connection-less flavors (`ToolImport`,
14122
- `AiAgentImport`, `GuardrailImport`), which the server creates without one.
15198
+ `AiAgentImport`, `GuardrailImport`, `TopicImport`), which the server creates without
15199
+ one. An Event Streams publisher (`TopicImport`) must omit it: with a connection set the
15200
+ server validates the document as that connection's adaptor instead.
14123
15201
  examples:
14124
15202
  - 60a2c4e6f321d800129a1a3c
14125
15203
  _integrationId:
@@ -14180,6 +15258,7 @@ components:
14180
15258
  - GuardrailImport
14181
15259
  - FileSystemImport
14182
15260
  - ToolImport
15261
+ - TopicImport
14183
15262
  - RESTImport
14184
15263
  x-enumDescriptions:
14185
15264
  HTTPImport: Generic REST or SOAP API import via HTTP connections.
@@ -14199,6 +15278,7 @@ components:
14199
15278
  GuardrailImport: Safety and compliance check import for PII detection, moderation, or AI evaluation.
14200
15279
  FileSystemImport: Local or network file system import.
14201
15280
  ToolImport: Import that executes a reusable Celigo Tool resource.
15281
+ TopicImport: Publishes each record as a message to an Event Streams topic, configured through `topic`; needs no connection.
14202
15282
  RESTImport: Legacy REST adaptor, superseded by HTTPImport — still accepted and present on older imports.
14203
15283
  examples:
14204
15284
  - HTTPImport
@@ -14208,6 +15288,7 @@ components:
14208
15288
  - FTPImport
14209
15289
  - AiAgentImport
14210
15290
  - GuardrailImport
15291
+ - TopicImport
14211
15292
  nsDomainType:
14212
15293
  type: string
14213
15294
  enum:
@@ -14268,6 +15349,8 @@ components:
14268
15349
  $ref: '#/components/schemas/Salesforce'
14269
15350
  tool:
14270
15351
  $ref: '#/components/schemas/Tool'
15352
+ topic:
15353
+ $ref: '#/components/schemas/Topic'
14271
15354
  file:
14272
15355
  $ref: '#/components/schemas/File'
14273
15356
  filesystem:
@@ -14443,11 +15526,21 @@ components:
14443
15526
  $ref: '#/components/schemas/PathToMany'
14444
15527
  blobKeyPath:
14445
15528
  type: string
15529
+ x-celigo-excludeAdaptorTypes:
15530
+ - AiAgentImport
15531
+ - GuardrailImport
15532
+ - ToolImport
14446
15533
  description: |-
14447
15534
  Path in the input record that holds the blob key identifying the file content to import.
14448
15535
  At send time the platform follows this path, retrieves the referenced file from integrator.io
14449
- storage, and streams its bytes into the outgoing request.
15536
+ storage, and streams its bytes into the outgoing request. Not accepted on `AiAgentImport`,
15537
+ `GuardrailImport`, or `ToolImport` — those adaptors process records only and reject the
15538
+ field with 422 `not_supported`.
14450
15539
  x-celigo-ai-guidance:
15540
+ - |-
15541
+ On AiAgentImport, GuardrailImport and ToolImport the save fails with 422 `not_supported`
15542
+ ("Field "blobKeyPath" is not supported for this import type."); route file content
15543
+ through a blob-capable import (HTTP, FTP, S3) instead.
14451
15544
  - |-
14452
15545
  The value at this path must be a blobKey produced by an upstream blob
14453
15546
  export or blob lookup and carried onto the record via that step's
@@ -14470,10 +15563,34 @@ components:
14470
15563
  - attachment.blobKey
14471
15564
  blob:
14472
15565
  type: boolean
14473
- description: When true, this import transfers raw file content (blobs) to the destination rather than structured records.
15566
+ x-celigo-excludeAdaptorTypes:
15567
+ - AiAgentImport
15568
+ - GuardrailImport
15569
+ - ToolImport
15570
+ description: |-
15571
+ When true, this import transfers raw file content (blobs) to the destination rather than
15572
+ structured records, reading each file through `blobKeyPath`. Not accepted on
15573
+ `AiAgentImport`, `GuardrailImport`, or `ToolImport` — those adaptors process records only
15574
+ and reject the flag with 422 `not_supported`.
15575
+ x-celigo-ai-guidance:
15576
+ - |-
15577
+ On AiAgentImport, GuardrailImport and ToolImport the save fails with 422 `not_supported`
15578
+ ("Field "blob" is not supported for this import type."); never set it on those adaptors.
15579
+ examples:
15580
+ - true
15581
+ - false
14474
15582
  assistant:
14475
15583
  type: string
14476
- description: Identifier for the connector assistant used to configure this import.
15584
+ description: |-
15585
+ Identifier for the connector assistant used to configure this import. For the cloud
15586
+ file providers it also selects the provider-specific location rules —
15587
+ `azuredatalakestoragegen2` (container in `file.directory.name`, file path split into
15588
+ `http.relativeURI` and `file.fileName`) and `googlecloudstorage` (bucket in
15589
+ `file.directory.storageRootId`).
15590
+ examples:
15591
+ - shopify
15592
+ - azuredatalakestoragegen2
15593
+ - googlecloudstorage
14477
15594
  deleteAfterImport:
14478
15595
  type: boolean
14479
15596
  description: When true, the source file is deleted after it is successfully imported.
@@ -15241,9 +16358,9 @@ components:
15241
16358
  Fields that can be sent when creating or updating an import. Set the adaptor-specific
15242
16359
  configuration object matching `adaptorType` (e.g. `netsuite_da` for `NetSuiteDistributedImport`).
15243
16360
  `_connectionId` is required except for the connection-less flavors (`ToolImport`,
15244
- `AiAgentImport`, `GuardrailImport`): a `ToolImport` binds connections through the
15245
- referenced tool's `overrides`, and AI agent / guardrail imports only use a connection
15246
- for BYOK.
16361
+ `AiAgentImport`, `GuardrailImport`, `TopicImport`): a `ToolImport` binds connections through
16362
+ the referenced tool's `overrides`, AI agent / guardrail imports only use a connection for
16363
+ BYOK, and an Event Streams publisher (`TopicImport`) is delivered by the platform itself.
15247
16364
  required:
15248
16365
  - name
15249
16366
  allOf:
@@ -15258,12 +16375,30 @@ components:
15258
16375
  - ToolImport
15259
16376
  - AiAgentImport
15260
16377
  - GuardrailImport
16378
+ - TopicImport
15261
16379
  - required:
15262
16380
  - tool
15263
16381
  - required:
15264
16382
  - aiAgent
15265
16383
  - required:
15266
16384
  - guardrail
16385
+ - required:
16386
+ - topic
16387
+ then:
16388
+ if:
16389
+ properties:
16390
+ adaptorType:
16391
+ const: TopicImport
16392
+ required:
16393
+ - adaptorType
16394
+ then:
16395
+ x-celigo-ui-override: 'Required by the Event Streams publisher form (fieldDefinitions/resources/imports/import.js: ''topic._topicId'' is required:true). Encoded to mirror the form so builders produce publishers that are bound to a topic.'
16396
+ required:
16397
+ - topic
16398
+ properties:
16399
+ topic:
16400
+ required:
16401
+ - _topicId
15267
16402
  else:
15268
16403
  required:
15269
16404
  - _connectionId
@@ -15277,6 +16412,45 @@ components:
15277
16412
  required:
15278
16413
  - http
15279
16414
  - nsDomainType
16415
+ else:
16416
+ if:
16417
+ properties:
16418
+ assistant:
16419
+ const: azuredatalakestoragegen2
16420
+ required:
16421
+ - assistant
16422
+ then:
16423
+ x-celigo-ui-override: 'Required by the Azure Data Lake Storage Gen2 import form (fieldDefinitions/resources/imports/azuredatalakestoragegen2.js: container ''file.directory.storageRootId_adls'' is required:true and preSave persists it as file.directory.name; the full file path is required:true and preSave splits it into http.relativeURI (directory prefix) and file.fileName (basename)). Encoded to mirror the form so builders produce connectable configurations.'
16424
+ required:
16425
+ - file
16426
+ properties:
16427
+ file:
16428
+ required:
16429
+ - directory
16430
+ - fileName
16431
+ properties:
16432
+ directory:
16433
+ required:
16434
+ - name
16435
+ else:
16436
+ if:
16437
+ properties:
16438
+ assistant:
16439
+ const: googlecloudstorage
16440
+ required:
16441
+ - assistant
16442
+ then:
16443
+ x-celigo-ui-override: 'Required by the Google Cloud Storage import form (fieldDefinitions/resources/imports/googlecloudstorage.js: bucket ''file.directory.storageRootId_gcs'' is required:true). Encoded to mirror the form so builders produce connectable configurations.'
16444
+ required:
16445
+ - file
16446
+ properties:
16447
+ file:
16448
+ required:
16449
+ - directory
16450
+ properties:
16451
+ directory:
16452
+ required:
16453
+ - storageRootId
15280
16454
  Error:
15281
16455
  type: object
15282
16456
  description: Standard error response envelope returned by integrator.io APIs.
@@ -15709,6 +16883,13 @@ components:
15709
16883
  description: Display name of the dependent resource.
15710
16884
  examples:
15711
16885
  - Import Orders to NetSuite
16886
+ type:
16887
+ type: string
16888
+ description: |-
16889
+ Sub-type of the dependent resource when its collection distinguishes one, such as
16890
+ `stream` for a listener export. Only present for resource types that carry a `type`.
16891
+ examples:
16892
+ - stream
15712
16893
  paths:
15713
16894
  type: array
15714
16895
  description: |-