@celigo/api-specs 0.2.171 → 0.2.172

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/tool.yml CHANGED
@@ -3578,7 +3578,11 @@ components:
3578
3578
 
3579
3579
  **Simple Types (direct value mapping)**
3580
3580
  - `string`: Text values, converts other types to string representation
3581
- - `number`: Numeric values, attempts conversion from strings
3581
+ - `number`: Numeric values. Converts a numeric string (`"24"` → `24`,
3582
+ `"007"` → `7`) and leaves the field out for an empty string; a value
3583
+ holding letters or a thousands separator (`"1,250.00"`) fails the
3584
+ record with `non_parsable_string` (`<generate>: String contains alpha
3585
+ characters`)
3582
3586
  - `boolean`: True/false values, converts truthy/falsy values
3583
3587
 
3584
3588
  Dates are represented as strings — use `string` for date fields and
@@ -3621,8 +3625,14 @@ components:
3621
3625
  - |-
3622
3626
  Missing `dataType` is rejected at save with validation error
3623
3627
  `[mandatory_destination_datatype] Destination datatype is a
3624
- required field.` When in doubt, use `"string"` — it accepts
3625
- any source value and the runtime will coerce it.
3628
+ required field.`
3629
+ - |-
3630
+ Give each row the type the destination field expects; `"string"` is
3631
+ not a safe default. It accepts any source value, but sends a numeric
3632
+ source as text (`"24"`), which a destination that checks JSON types
3633
+ refuses. Map numeric destination fields as `number`, which fails a
3634
+ record (`non_parsable_string`) only when the value holds letters or a
3635
+ thousands separator.
3626
3636
  enum:
3627
3637
  - string
3628
3638
  - number
@@ -3634,7 +3644,7 @@ components:
3634
3644
  - objectarray
3635
3645
  x-enumDescriptions:
3636
3646
  string: Text values; converts other types to their string representation.
3637
- number: Numeric values; attempts conversion from strings.
3647
+ number: Numeric values; converts numeric strings, and fails the record (`non_parsable_string`) on letters or a thousands separator.
3638
3648
  boolean: True/false values; converts truthy/falsy values.
3639
3649
  object: Nested object built from child `mappings`, or copied whole with `extract` (not both).
3640
3650
  stringarray: Array of string values.
@@ -4662,7 +4672,11 @@ components:
4662
4672
 
4663
4673
  **Simple Types (direct value mapping)**
4664
4674
  - `string`: Text values, converts other types to string representation
4665
- - `number`: Numeric values, attempts conversion from strings
4675
+ - `number`: Numeric values. Converts a numeric string (`"24"` → `24`,
4676
+ `"007"` → `7`) and leaves the field out for an empty string; a value
4677
+ holding letters or a thousands separator (`"1,250.00"`) fails the
4678
+ record with `non_parsable_string` (`<generate>: String contains alpha
4679
+ characters`)
4666
4680
  - `boolean`: True/false values, converts truthy/falsy values
4667
4681
 
4668
4682
  Dates are represented as strings — use `string` for date fields and
@@ -4705,8 +4719,14 @@ components:
4705
4719
  - |-
4706
4720
  Missing `dataType` is rejected at save with validation error
4707
4721
  `[mandatory_destination_datatype] Destination datatype is a
4708
- required field.` When in doubt, use `"string"` — it accepts
4709
- any source value and the runtime will coerce it.
4722
+ required field.`
4723
+ - |-
4724
+ Give each row the type the destination field expects; `"string"` is
4725
+ not a safe default. It accepts any source value, but sends a numeric
4726
+ source as text (`"24"`), which a destination that checks JSON types
4727
+ refuses. Map numeric destination fields as `number`, which fails a
4728
+ record (`non_parsable_string`) only when the value holds letters or a
4729
+ thousands separator.
4710
4730
  enum:
4711
4731
  - string
4712
4732
  - number
@@ -4718,7 +4738,7 @@ components:
4718
4738
  - objectarray
4719
4739
  x-enumDescriptions:
4720
4740
  string: Text values; converts other types to their string representation.
4721
- number: Numeric values; attempts conversion from strings.
4741
+ number: Numeric values; converts numeric strings, and fails the record (`non_parsable_string`) on letters or a thousands separator.
4722
4742
  boolean: True/false values; converts truthy/falsy values.
4723
4743
  object: Nested object built from child `mappings`, or copied whole with `extract` (not both).
4724
4744
  stringarray: Array of string values.
@@ -5860,7 +5880,7 @@ components:
5860
5880
 
5861
5881
  This value is used as a fallback when:
5862
5882
  1. The source value doesn't match any key in the map
5863
- 2. allowFailures is set to true
5883
+ 2. allowFailures is true or omitted
5864
5884
 
5865
5885
  Setting an appropriate default helps prevent flow failures due to unexpected
5866
5886
  values and provides predictable behavior for edge cases.
@@ -5870,8 +5890,10 @@ components:
5870
5890
  - Original value indicators: "{Original Value}", "No mapping found"
5871
5891
  - Neutral values: "Other", "N/A", "Miscellaneous"
5872
5892
 
5873
- If allowFailures is false, a record whose value is unmapped fails and the default
5874
- is ignored.
5893
+ A save refuses a default together with an explicit `allowFailures: false`
5894
+ (422 `Lookups with default set can not have allowFailures explicitly set to
5895
+ false.`): a lookup either fails a miss (`allowFailures: false`, no default) or
5896
+ falls back to its default.
5875
5897
  examples:
5876
5898
  - Unknown
5877
5899
  - Other
@@ -5879,7 +5901,8 @@ components:
5879
5901
  - Unmapped Value
5880
5902
  - '{Original Value}'
5881
5903
  x-celigo-ai-guidance:
5882
- - 'Omit this field entirely when no fallback value is intended: a miss the lookup lets through then leaves the mapped field out, and with `allowFailures: false` a miss fails the record whatever the default. An empty string is a value, not "no default" — the save accepts `default: ""`, and an allowed miss writes `""`.'
5904
+ - 'Omit this field entirely when no fallback value is intended: a miss the lookup lets through then leaves the mapped field out, and `allowFailures: false` (which a save refuses alongside a default) fails it. An empty string is a value, not "no default" — the save accepts `default: ""`, and an allowed miss writes `""`.'
5905
+ - A default sends every unmapped value with no error, so add the missing key to the map when the destination needs the real value; keys match the extracted value exactly (case, spacing and suffixes count), and a save replaces the whole map.
5883
5906
  allowFailures:
5884
5907
  type:
5885
5908
  - boolean
@@ -13625,6 +13648,8 @@ components:
13625
13648
  Reference the existing record ID in the UPDATE URI with `{{{data.0.fieldName}}}` (triple braces with the data.0 prefix).
13626
13649
  Use separate array elements per operation rather than `{{#if}}` conditionals inside a single URI.
13627
13650
  URI templates render strictly: a path that is undefined on the record — such as `record.<field>` on a grouped record, whose root is `rows` — fails the request instead of rendering empty.
13651
+ A field the record lacks, or a `{{lookup.<name>}}` whose lookup found nothing, fails that record before anything is sent, with `handlebars_template_parse_error` (source `application`, classification `parse`): `Failed to generate request url from template: <URL>. Details: "<field>" not defined in the model.` That is missing data, not template syntax, and a retry of the same record fails the same way: send records that may lack the destination id through a composite UPDATE/CREATE import (`existingExtract`), or skip them with `ignoreMissing` and `ignoreExtract`.
13652
+ A field that holds an empty string or null is defined: it renders empty, and the request is sent without the value.
13628
13653
  x-celigo-ai-guidance:
13629
13654
  - '**CRITICAL: This MUST be an array of strings, NOT an object.**'
13630
13655
  - |-
@@ -14668,9 +14693,17 @@ components:
14668
14693
  extract:
14669
14694
  type: string
14670
14695
  description: |
14671
- JSONPath expression that selects the lookup value from the
14672
- HTTP response body. ``$.`` prefix optional. Examples:
14673
- ``$.data[0].id``, ``$.results.primaryKey``, ``id``.
14696
+ Path to the lookup value in the HTTP response body, written
14697
+ without a ``$.`` prefix: ``id``, ``results[0].id``, or ``ids``
14698
+ for an array of ids. A ``$.``-prefixed path, a ``[*]``
14699
+ wildcard, or a dot path through an array (``results.id``)
14700
+ resolves nothing, so the lookup misses: with
14701
+ ``allowFailures: false`` the record fails
14702
+ (``batch_lookup_evaluation_failed``); otherwise it goes on with
14703
+ ``default`` or without the value, and nothing errors. A
14704
+ composite import whose ``existingLookupName`` names such a
14705
+ lookup sends every record to CREATE. Mapper 2.0 mapping
14706
+ extracts are the opposite: they take the ``$.``.
14674
14707
  _lookupCacheId:
14675
14708
  type: string
14676
14709
  format: objectId
@@ -14694,13 +14727,17 @@ components:
14694
14727
  - string
14695
14728
  - 'null'
14696
14729
  description: |
14697
- Value returned when the HTTP request returns no usable
14698
- match. When omitted and ``allowFailures`` is false, an
14699
- unmatched lookup halts the record. Stored as null when no
14730
+ Value written when the lookup finds no match and the miss is
14731
+ allowed (``allowFailures`` true, or omitted on a static
14732
+ ``map``). A save refuses a ``default`` together with an
14733
+ explicit ``allowFailures: false`` (422 "Lookups with default
14734
+ set can not have allowFailures explicitly set to false."), so
14735
+ a lookup either fails a miss (``allowFailures: false``, no
14736
+ default) or falls back to its default. Stored as null when no
14700
14737
  fallback is configured.
14701
14738
  x-celigo-ai-guidance:
14702
14739
  - 'Omit this field entirely when no fallback value is intended. An empty string is a value, not "no default": the save accepts `default: ""`, and a miss the lookup lets through writes `""`.'
14703
- - 'A fallback only takes effect on an allowed miss — pair a real default with allowFailures: true (or useDefaultOnMultipleMatches: true for the ambiguous-match case).'
14740
+ - 'A default raises no error: every unmatched value goes out as the default with a 200. Set one only when a single fallback is right for every value the lookup can''t match; when a miss must stop the record, set allowFailures: false and leave the default out. An ambiguous answer (two or more matches) doesn''t use the default either: see useDefaultOnMultipleMatches.'
14704
14741
  allowFailures:
14705
14742
  type:
14706
14743
  - boolean
@@ -14710,20 +14747,40 @@ components:
14710
14747
  field out when there is none) and the record continues. When
14711
14748
  false, a miss fails the record: ``lookup_error`` ("Could not find
14712
14749
  value for static lookup: …") for a static ``map``,
14713
- ``lookupcache_evaluation_failed`` for a cache. Omitted or null,
14750
+ ``lookupcache_evaluation_failed`` for a cache, and
14751
+ ``batch_lookup_evaluation_failed`` (source ``internal``, "<field>:
14752
+ The batch lookup could not be evaluated. Check the value in the
14753
+ key '<value>', and try again.") for a live request that matches
14754
+ nothing or whose ``extract`` resolves nothing. Omitted or null,
14714
14755
  a miss doesn't fail the record either: a static lookup writes
14715
14756
  its ``default`` if it has one, and a lookup without one (static,
14716
14757
  cache, or a live request that matches nothing or fails) leaves
14717
14758
  the mapped field out.
14759
+
14760
+ False is also the only setting under which an ambiguous answer
14761
+ fails the record: two or more values at ``extract`` (an array of
14762
+ ids or of result objects) fail it with ``lookup_conflict``
14763
+ ("Multiple matches found for lookup."). Omitted, null or true,
14764
+ the first value is sent with no error, and an array of result
14765
+ objects is written as the text ``[object Object]``. An indexed
14766
+ ``extract`` (``ids[0]``) takes the first match whatever this
14767
+ field says, so it hides an ambiguous search rather than fixing
14768
+ it.
14718
14769
  x-celigo-ai-guidance:
14719
14770
  - Set false explicitly when a miss must stop the record. Leaving the field out lets the record through with the default or without the looked-up value, so a destination that needs the real value gets a request without it and nothing errors.
14771
+ - 'Fix an ambiguous lookup in its search, not here: query on a key that identifies one record (an email, an external id) and keep false, so a search that still finds two fails instead of writing against the first match.'
14720
14772
  useDefaultOnMultipleMatches:
14721
14773
  type: boolean
14722
14774
  description: |
14723
- Controls behaviour when the response contains more than one
14724
- match. When true, the ``default`` value is returned instead
14725
- of raising an ambiguous-match error. When false (default),
14726
- multiple matches are treated as a failure.
14775
+ Meant to return ``default`` when the response holds more than
14776
+ one match. On an HTTP import it has not been seen to take
14777
+ effect: with ``allowFailures`` omitted or true the first match
14778
+ is sent whatever this flag says, with or without a
14779
+ ``default``, and with ``allowFailures: false`` the record
14780
+ fails with ``lookup_conflict``. Two or more matches fail the
14781
+ record only when ``allowFailures`` is false (see
14782
+ ``allowFailures``), so make the search match one record
14783
+ rather than relying on this flag.
14727
14784
  type: array
14728
14785
  Ftp:
14729
14786
  type: object
@@ -23806,15 +23863,30 @@ components:
23806
23863
  - `"lessthan"`: Value is less than specified value (is less than)
23807
23864
  - `"lessthanequals"`: Value is less than or equal to specified value (is less than or equals)
23808
23865
  - `"startswith"`: String starts with specified prefix (starts with)
23866
+ - `"notstartswith"`: String does not start with specified prefix (does not start with)
23809
23867
  - `"endswith"`: String ends with specified suffix (ends with)
23868
+ - `"notendswith"`: String does not end with specified suffix (does not end with)
23810
23869
  - `"contains"`: String contains specified substring (contains)
23811
23870
  - `"doesnotcontain"`: String does not contain specified substring (does not contain)
23812
23871
  - `"empty"`: Field is missing or empty (is empty)
23813
23872
  - `"notempty"`: Field contains a value (is not empty)
23814
- - `"matches"`: Matches a regular expression (matches)
23815
-
23816
- `isempty`, `isnotempty` and `anyof` are not operators: they are refused with 422
23817
- "Invalid operation: <name>".
23873
+ - `"matches"`: Matches a regular expression, ignoring case (matches)
23874
+
23875
+ Operator names are case-insensitive: `NOTEMPTY` and `endsWith` work and are stored
23876
+ as sent. `isempty`, `isnotempty`, `anyof`, `notcontains`, `doesnotstartwith`,
23877
+ `doesnotendwith`, `notmatches`, `doesnotmatch` and `notequal` are not operators:
23878
+ they are refused with 422 "Invalid operation: <name>", with the name in lowercase,
23879
+ both when the filter is saved and by `POST /v1/processors/filter`. To negate a
23880
+ condition, wrap it in `not`.
23881
+
23882
+ The string comparisons (`equals`, `contains`, `startswith`, `endswith` and their
23883
+ negations) are case-sensitive; wrap the field in `lowercase` to compare without case.
23884
+ `matches` is not: every pattern is compiled with the flags `gi`, so `^paid$` also
23885
+ matches `PAID` and `[a-z]` matches capital letters. An inline flag such as `(?i)`
23886
+ makes the pattern invalid. The filter still saves, but in a run every record fails
23887
+ with `FILTER_EVALUATION_FAILED` ("Invalid regular expression: /(?i)…/gi: Invalid
23888
+ group"), and `POST /v1/processors/filter` refuses the call with 422 (live-verified
23889
+ 2026-10-22).
23818
23890
 
23819
23891
  **Logical Operators**
23820
23892
  - `"and"`: All conditions must be true
@@ -24235,8 +24307,10 @@ components:
24235
24307
  - A dot path from the record root (e.g. `email`, `address.city`), read from the
24236
24308
  incoming record. A path that matches no field writes nothing.
24237
24309
  - Handlebars template (contains `{{`) for concatenation /
24238
- formatting / conditional logic (e.g.
24239
- `{{record.firstName}} {{record.lastName}}`).
24310
+ formatting / conditional logic (e.g. `{{firstName}} {{lastName}}`,
24311
+ `{{#if mobile}}{{mobile}}{{else}}{{phone}}{{/if}}`). The template reads the
24312
+ record's fields by bare name: `{{record.firstName}}` and `{{data.firstName}}`
24313
+ render nothing, so the field is left out even when the record has the value.
24240
24314
 
24241
24315
  A `$.` JSONPath (the Mapper 2.0 `mappings` syntax) reads nothing here, and a bare
24242
24316
  string is read as a field path, not a constant: set constants in `hardCodedValue`.
@@ -24277,8 +24351,9 @@ components:
24277
24351
  x-celigo-ai-guidance:
24278
24352
  - |-
24279
24353
  When true, skip this field entirely when ``extract`` / lookup
24280
- produces empty / null. Without this flag the destination field
24281
- receives null and may overwrite existing data.
24354
+ produces an empty string, null or nothing. Without this flag an
24355
+ empty string is written as ``""`` and null as null, either of which
24356
+ may overwrite existing data; a missing source is left out either way.
24282
24357
  immutable:
24283
24358
  type: boolean
24284
24359
  description: When true, the mapped value cannot be overwritten by later mapping steps.
@@ -24295,7 +24370,15 @@ components:
24295
24370
  type:
24296
24371
  - string
24297
24372
  - 'null'
24298
- description: Fallback value used when the extract yields no value.
24373
+ description: |-
24374
+ Fallback value written when the source value is an empty string, null or
24375
+ missing. Without a default, an empty string and null are written as they are
24376
+ and a missing field is left out.
24377
+ x-celigo-ai-guidance:
24378
+ - |-
24379
+ Use ``default``, not ``hardCodedValue``, for a fallback on a field that is
24380
+ sometimes empty: ``hardCodedValue`` is written on every record and replaces
24381
+ the values that exist.
24299
24382
  extractDateFormat:
24300
24383
  type: string
24301
24384
  description: Date format of the source value, used to parse it before conversion.
@@ -24411,8 +24494,8 @@ components:
24411
24494
  id:
24412
24495
  type: string
24413
24496
  description: |
24414
- Unique identifier for this field within the form.
24415
- This value typically matches the key in the fieldMap object.
24497
+ Unique identifier for this field within the form: layout containers and conditions
24498
+ refer to the field by it. Use the same string as the field's fieldMap key and its `name`.
24416
24499
  examples:
24417
24500
  - url
24418
24501
  - mode
@@ -24423,8 +24506,9 @@ components:
24423
24506
  name:
24424
24507
  type: string
24425
24508
  description: |
24426
- Name of the field, used as the property name when generating the settings object
24427
- from the submitted form data.
24509
+ Key the field's value is saved under: one top-level key of the resource's `settings`,
24510
+ which the form also reads the value back from when it opens. Nested objects inside
24511
+ `settings` are written to it directly, not through a form field's `name`.
24428
24512
  examples:
24429
24513
  - url
24430
24514
  - mode
@@ -24499,11 +24583,19 @@ components:
24499
24583
  required:
24500
24584
  type: boolean
24501
24585
  description: |
24502
- When true, the field must have a value before the form can be submitted.
24586
+ When true, the field must have a value before the form can be submitted. Only the form
24587
+ enforces it: an API write of `settings` is stored without the value.
24503
24588
  default: false
24504
24589
  examples:
24505
24590
  - true
24506
24591
  - false
24592
+ defaultValue:
24593
+ description: |
24594
+ Value the form shows while the resource's `settings` holds no value under the field's
24595
+ `name`.
24596
+ examples:
24597
+ - us
24598
+ - true
24507
24599
  multiline:
24508
24600
  type: boolean
24509
24601
  description: |
@@ -24566,15 +24658,187 @@ components:
24566
24658
  keyName:
24567
24659
  type: string
24568
24660
  description: |
24569
- For keyvalue fields, specifies the placeholder and field name for the key input.
24661
+ For keyvalue and staticMap fields, names the first column: each saved row holds that
24662
+ column's value under this key. A keyvalue field without it uses `key`.
24570
24663
  examples:
24571
24664
  - theKey
24665
+ - source
24572
24666
  valueName:
24573
24667
  type: string
24574
24668
  description: |
24575
- For keyvalue fields, specifies the placeholder and field name for the value input.
24669
+ For keyvalue and staticMap fields, names the second column: each saved row holds that
24670
+ column's value under this key. A keyvalue field without it uses `value`.
24576
24671
  examples:
24577
24672
  - theValue
24673
+ - target
24674
+ keyLabel:
24675
+ type: string
24676
+ description: |
24677
+ For staticMap fields, heading of the first column.
24678
+ examples:
24679
+ - Source status
24680
+ valueLabel:
24681
+ type: string
24682
+ description: |
24683
+ For staticMap fields, heading of the second column.
24684
+ examples:
24685
+ - Destination status
24686
+ keyOptions:
24687
+ type: array
24688
+ description: |
24689
+ For staticMap fields, suggestions offered in the first column's cells. A cell still
24690
+ accepts a typed value.
24691
+ items:
24692
+ type: object
24693
+ properties:
24694
+ label:
24695
+ type: string
24696
+ description: |
24697
+ Display text for the suggestion.
24698
+ value:
24699
+ type: string
24700
+ description: |
24701
+ Value saved when the suggestion is chosen.
24702
+ examples:
24703
+ - - label: Pending
24704
+ value: pending
24705
+ - label: Shipped
24706
+ value: shipped
24707
+ valueOptions:
24708
+ type: array
24709
+ description: |
24710
+ For staticMap fields, suggestions offered in the second column's cells. A cell still
24711
+ accepts a typed value.
24712
+ items:
24713
+ type: object
24714
+ properties:
24715
+ label:
24716
+ type: string
24717
+ description: |
24718
+ Display text for the suggestion.
24719
+ value:
24720
+ type: string
24721
+ description: |
24722
+ Value saved when the suggestion is chosen.
24723
+ examples:
24724
+ - - label: Open
24725
+ value: open
24726
+ - label: Closed
24727
+ value: closed
24728
+ keyResource:
24729
+ type: object
24730
+ description: |
24731
+ For staticMap fields, fills the first column's suggestions from an export the form
24732
+ carries inline in `virtual`, run the way an exportSelect's `resource` is. With
24733
+ `keyResource` or `valueResource` set, the form requires both columns in every row
24734
+ unless `keyValueRequired` is false.
24735
+ properties:
24736
+ virtual:
24737
+ type: object
24738
+ description: |
24739
+ Export document to run, inline, shaped like an exportSelect's `resource.virtual`.
24740
+ additionalProperties: true
24741
+ valueResource:
24742
+ type: object
24743
+ description: |
24744
+ For staticMap fields, fills the second column's suggestions from an export the form
24745
+ carries inline in `virtual`, run the way an exportSelect's `resource` is.
24746
+ properties:
24747
+ virtual:
24748
+ type: object
24749
+ description: |
24750
+ Export document to run, inline, shaped like an exportSelect's `resource.virtual`.
24751
+ additionalProperties: true
24752
+ keyValueRequired:
24753
+ type: boolean
24754
+ description: |
24755
+ For staticMap fields with `keyResource` or `valueResource`, when false, saves rows
24756
+ that fill only one column; by default the form drops them.
24757
+ default: true
24758
+ examples:
24759
+ - false
24760
+ resource:
24761
+ type: object
24762
+ description: |
24763
+ For exportSelect fields, the export whose records become the options. When the form
24764
+ opens, the UI previews the export in `virtual` (with `test.limit` 100 unless the export
24765
+ sets its own) and lists the preview's `data`: each record needs a `label` and a `value`
24766
+ (a string or number serves as both), so shape them with the export's `transform`. A
24767
+ saved export can't be referenced, and an HTTP export that finds no records leaves the
24768
+ field showing an error instead of options.
24769
+ properties:
24770
+ virtual:
24771
+ type: object
24772
+ description: |
24773
+ Export document to run, inline: `adaptorType`, its adaptor block, and an optional
24774
+ `transform`. `_connectionId` defaults to the connection of the export or import the
24775
+ form belongs to; set it on any other resource's form.
24776
+ additionalProperties: true
24777
+ examples:
24778
+ - virtual:
24779
+ adaptorType: HTTPExport
24780
+ http:
24781
+ relativeURI: /v1/warehouses
24782
+ method: GET
24783
+ formType: http
24784
+ response:
24785
+ resourcePath: warehouses
24786
+ transform:
24787
+ type: expression
24788
+ expression:
24789
+ version: '2'
24790
+ rulesTwoDotZero:
24791
+ mode: create
24792
+ mappings:
24793
+ - generate: label
24794
+ extract: $.name
24795
+ dataType: string
24796
+ status: Active
24797
+ - generate: value
24798
+ extract: $.code
24799
+ dataType: string
24800
+ status: Active
24801
+ multiselect:
24802
+ type: boolean
24803
+ description: |
24804
+ For exportSelect fields, when true, the user can choose several options and the value
24805
+ is saved as an array.
24806
+ default: false
24807
+ examples:
24808
+ - true
24809
+ supportHandlebars:
24810
+ type: boolean
24811
+ description: |
24812
+ For exportSelect fields, when true, renders the `resource.virtual` export as a Handlebars
24813
+ template before each preview (all but its `transform`, `hooks`, and `filter`). On an
24814
+ integration, flow group, flow, export, or import form, the form's current values are
24815
+ under that form's scope name (`integration`, `flowGrouping`, `flow`, `export`, or
24816
+ `import`), beside the saved settings of the scopes above it, with no `settings.`
24817
+ prefix; on a connection or iClient form the template has no context. The options then
24818
+ load through `refreshOptionsOnChangesTo` or `typeAheadSearch`, or when the user
24819
+ refreshes the field.
24820
+ default: false
24821
+ examples:
24822
+ - true
24823
+ refreshOptionsOnChangesTo:
24824
+ type: array
24825
+ items:
24826
+ type: string
24827
+ description: |
24828
+ For exportSelect fields with `supportHandlebars`, ids of the fields whose values the
24829
+ templated export uses: the options load once one of them has a value and reload whenever
24830
+ one changes.
24831
+ examples:
24832
+ - - region
24833
+ typeAheadSearch:
24834
+ type: boolean
24835
+ description: |
24836
+ For exportSelect fields, when true, re-runs the templated export as the user types, with
24837
+ the typed text as this field's own value; an empty box clears the options, and typed
24838
+ text is accepted as the value.
24839
+ default: false
24840
+ examples:
24841
+ - true
24578
24842
  showDelete:
24579
24843
  type: boolean
24580
24844
  description: |
@@ -24675,7 +24939,9 @@ components:
24675
24939
  field:
24676
24940
  type: string
24677
24941
  description: |
24678
- The ID of another field whose value controls the visibility of this field.
24942
+ The ID of another field whose value controls the visibility of this field. The
24943
+ save doesn't check it: a rule naming an ID that isn't in the form counts as met,
24944
+ so the field stays visible.
24679
24945
  examples:
24680
24946
  - mode
24681
24947
  is:
@@ -24711,7 +24977,7 @@ components:
24711
24977
  - tabWithoutSave
24712
24978
  - verticalTabWithoutSave
24713
24979
  x-enumDescriptions:
24714
- column: Arranges form fields in a single vertical column layout.
24980
+ column: Places the containers side by side, one column each.
24715
24981
  collapse: Groups fields into collapsible/expandable sections.
24716
24982
  box: Wraps field groups in bordered boxes with headings.
24717
24983
  indent: Indents field groups to show hierarchy.
@@ -24720,6 +24986,15 @@ components:
24720
24986
  examples:
24721
24987
  - column
24722
24988
  - collapse
24989
+ fields:
24990
+ type: array
24991
+ items:
24992
+ type: string
24993
+ description: |
24994
+ Field IDs shown above the containers, without a heading.
24995
+ examples:
24996
+ - - region
24997
+ - vatNumber
24723
24998
  containers:
24724
24999
  type: array
24725
25000
  description: |
@@ -24759,7 +25034,8 @@ components:
24759
25034
  type: string
24760
25035
  description: |
24761
25036
  Array of field IDs that should be displayed in this container.
24762
- Each ID must correspond to a key in the fieldMap object.
25037
+ Each ID must correspond to a key in the fieldMap object: the save doesn't check it,
25038
+ and an ID that doesn't renders nothing. A field the layout doesn't list isn't shown.
24763
25039
  examples:
24764
25040
  - - A
24765
25041
  - url
@@ -24836,6 +25112,9 @@ components:
24836
25112
 
24837
25113
  The function must return a valid form object that the UI can render.
24838
25114
  Throwing an exception will signal an error to the user.
25115
+
25116
+ The UI runs the function each time it opens the form and renders the returned form instead of
25117
+ `form`, then fills in the values from `settings`; a thrown error's message replaces the form.
24839
25118
  properties:
24840
25119
  function:
24841
25120
  type: string
@@ -24859,8 +25138,10 @@ components:
24859
25138
  Reference to a predefined script resource containing the initialization function.
24860
25139
 
24861
25140
  The referenced script should contain the function specified in the
24862
- 'function' property. This script must be accessible within the user's account
24863
- and have appropriate permissions.
25141
+ 'function' property. On an integration, a flow group, a flow, an export, an import, or a
25142
+ connection, an id that isn't a script in the same account (or, on an Integration App's
25143
+ resources, one the app shares) is refused with 422 `invalid_ref`. An iClient save
25144
+ stores the id without that check.
24864
25145
  examples:
24865
25146
  - 60a2c4e6f321d800129a1a3c
24866
25147
  - 5f8d43a1b9e5a80011a35f2c
@@ -37491,8 +37772,11 @@ components:
37491
37772
  (CSV/XML/JSON) into records. Most modes take their matching configuration object (e.g. a
37492
37773
  `webhook` object when `type` is `webhook`); an HTTP or SQL `delta` export saves without a
37493
37774
  `delta` object because its request carries `{{lastExportDateTime}}`, though
37494
- `delta.startDate` sets its first window. Use `blob` only to transfer raw files without
37495
- parsing their contents.
37775
+ `delta.startDate` sets its first window. It still needs `type: delta`: on an export
37776
+ with no `type`, `{{lastExportDateTime}}` and `{{currentExportDateTime}}` render
37777
+ empty on every run, so a request that carries them goes out with blank values each time
37778
+ (live-verified 2026-10-22). Use `blob` only to transfer raw files without parsing their
37779
+ contents.
37496
37780
  x-celigo-ai-guidance:
37497
37781
  - |-
37498
37782
  ## HOW TO PICK THE TYPE VALUE
@@ -615,15 +615,30 @@ components:
615
615
  - `"lessthan"`: Value is less than specified value (is less than)
616
616
  - `"lessthanequals"`: Value is less than or equal to specified value (is less than or equals)
617
617
  - `"startswith"`: String starts with specified prefix (starts with)
618
+ - `"notstartswith"`: String does not start with specified prefix (does not start with)
618
619
  - `"endswith"`: String ends with specified suffix (ends with)
620
+ - `"notendswith"`: String does not end with specified suffix (does not end with)
619
621
  - `"contains"`: String contains specified substring (contains)
620
622
  - `"doesnotcontain"`: String does not contain specified substring (does not contain)
621
623
  - `"empty"`: Field is missing or empty (is empty)
622
624
  - `"notempty"`: Field contains a value (is not empty)
623
- - `"matches"`: Matches a regular expression (matches)
624
-
625
- `isempty`, `isnotempty` and `anyof` are not operators: they are refused with 422
626
- "Invalid operation: <name>".
625
+ - `"matches"`: Matches a regular expression, ignoring case (matches)
626
+
627
+ Operator names are case-insensitive: `NOTEMPTY` and `endsWith` work and are stored
628
+ as sent. `isempty`, `isnotempty`, `anyof`, `notcontains`, `doesnotstartwith`,
629
+ `doesnotendwith`, `notmatches`, `doesnotmatch` and `notequal` are not operators:
630
+ they are refused with 422 "Invalid operation: <name>", with the name in lowercase,
631
+ both when the filter is saved and by `POST /v1/processors/filter`. To negate a
632
+ condition, wrap it in `not`.
633
+
634
+ The string comparisons (`equals`, `contains`, `startswith`, `endswith` and their
635
+ negations) are case-sensitive; wrap the field in `lowercase` to compare without case.
636
+ `matches` is not: every pattern is compiled with the flags `gi`, so `^paid$` also
637
+ matches `PAID` and `[a-z]` matches capital letters. An inline flag such as `(?i)`
638
+ makes the pattern invalid. The filter still saves, but in a run every record fails
639
+ with `FILTER_EVALUATION_FAILED` ("Invalid regular expression: /(?i)…/gi: Invalid
640
+ group"), and `POST /v1/processors/filter` refuses the call with 422 (live-verified
641
+ 2026-10-22).
627
642
 
628
643
  **Logical Operators**
629
644
  - `"and"`: All conditions must be true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.171",
3
+ "version": "0.2.172",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [