@celigo/api-specs 0.2.171 → 0.2.173

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
@@ -6335,7 +6358,9 @@ components:
6335
6358
  Reference to a predefined script resource containing the transformation logic.
6336
6359
 
6337
6360
  The referenced script should contain the function specified in the
6338
- 'function' property.
6361
+ 'function' property. It must be a script in this account: any other id fails the save
6362
+ with 422 ("Only a script owned by the user or a script shared by the Integration App can
6363
+ be used at transform.script._scriptId.").
6339
6364
  format: objectid
6340
6365
  x-celigo-refModel: scripts
6341
6366
  examples:
@@ -13625,6 +13650,8 @@ components:
13625
13650
  Reference the existing record ID in the UPDATE URI with `{{{data.0.fieldName}}}` (triple braces with the data.0 prefix).
13626
13651
  Use separate array elements per operation rather than `{{#if}}` conditionals inside a single URI.
13627
13652
  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.
13653
+ 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`.
13654
+ A field that holds an empty string or null is defined: it renders empty, and the request is sent without the value.
13628
13655
  x-celigo-ai-guidance:
13629
13656
  - '**CRITICAL: This MUST be an array of strings, NOT an object.**'
13630
13657
  - |-
@@ -14668,9 +14695,17 @@ components:
14668
14695
  extract:
14669
14696
  type: string
14670
14697
  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``.
14698
+ Path to the lookup value in the HTTP response body, written
14699
+ without a ``$.`` prefix: ``id``, ``results[0].id``, or ``ids``
14700
+ for an array of ids. A ``$.``-prefixed path, a ``[*]``
14701
+ wildcard, or a dot path through an array (``results.id``)
14702
+ resolves nothing, so the lookup misses: with
14703
+ ``allowFailures: false`` the record fails
14704
+ (``batch_lookup_evaluation_failed``); otherwise it goes on with
14705
+ ``default`` or without the value, and nothing errors. A
14706
+ composite import whose ``existingLookupName`` names such a
14707
+ lookup sends every record to CREATE. Mapper 2.0 mapping
14708
+ extracts are the opposite: they take the ``$.``.
14674
14709
  _lookupCacheId:
14675
14710
  type: string
14676
14711
  format: objectId
@@ -14694,13 +14729,17 @@ components:
14694
14729
  - string
14695
14730
  - 'null'
14696
14731
  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
14732
+ Value written when the lookup finds no match and the miss is
14733
+ allowed (``allowFailures`` true, or omitted on a static
14734
+ ``map``). A save refuses a ``default`` together with an
14735
+ explicit ``allowFailures: false`` (422 "Lookups with default
14736
+ set can not have allowFailures explicitly set to false."), so
14737
+ a lookup either fails a miss (``allowFailures: false``, no
14738
+ default) or falls back to its default. Stored as null when no
14700
14739
  fallback is configured.
14701
14740
  x-celigo-ai-guidance:
14702
14741
  - '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).'
14742
+ - '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
14743
  allowFailures:
14705
14744
  type:
14706
14745
  - boolean
@@ -14710,20 +14749,40 @@ components:
14710
14749
  field out when there is none) and the record continues. When
14711
14750
  false, a miss fails the record: ``lookup_error`` ("Could not find
14712
14751
  value for static lookup: …") for a static ``map``,
14713
- ``lookupcache_evaluation_failed`` for a cache. Omitted or null,
14752
+ ``lookupcache_evaluation_failed`` for a cache, and
14753
+ ``batch_lookup_evaluation_failed`` (source ``internal``, "<field>:
14754
+ The batch lookup could not be evaluated. Check the value in the
14755
+ key '<value>', and try again.") for a live request that matches
14756
+ nothing or whose ``extract`` resolves nothing. Omitted or null,
14714
14757
  a miss doesn't fail the record either: a static lookup writes
14715
14758
  its ``default`` if it has one, and a lookup without one (static,
14716
14759
  cache, or a live request that matches nothing or fails) leaves
14717
14760
  the mapped field out.
14761
+
14762
+ False is also the only setting under which an ambiguous answer
14763
+ fails the record: two or more values at ``extract`` (an array of
14764
+ ids or of result objects) fail it with ``lookup_conflict``
14765
+ ("Multiple matches found for lookup."). Omitted, null or true,
14766
+ the first value is sent with no error, and an array of result
14767
+ objects is written as the text ``[object Object]``. An indexed
14768
+ ``extract`` (``ids[0]``) takes the first match whatever this
14769
+ field says, so it hides an ambiguous search rather than fixing
14770
+ it.
14718
14771
  x-celigo-ai-guidance:
14719
14772
  - 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.
14773
+ - '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
14774
  useDefaultOnMultipleMatches:
14721
14775
  type: boolean
14722
14776
  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.
14777
+ Meant to return ``default`` when the response holds more than
14778
+ one match. On an HTTP import it has not been seen to take
14779
+ effect: with ``allowFailures`` omitted or true the first match
14780
+ is sent whatever this flag says, with or without a
14781
+ ``default``, and with ``allowFailures: false`` the record
14782
+ fails with ``lookup_conflict``. Two or more matches fail the
14783
+ record only when ``allowFailures`` is false (see
14784
+ ``allowFailures``), so make the search match one record
14785
+ rather than relying on this flag.
14727
14786
  type: array
14728
14787
  Ftp:
14729
14788
  type: object
@@ -23806,15 +23865,30 @@ components:
23806
23865
  - `"lessthan"`: Value is less than specified value (is less than)
23807
23866
  - `"lessthanequals"`: Value is less than or equal to specified value (is less than or equals)
23808
23867
  - `"startswith"`: String starts with specified prefix (starts with)
23868
+ - `"notstartswith"`: String does not start with specified prefix (does not start with)
23809
23869
  - `"endswith"`: String ends with specified suffix (ends with)
23870
+ - `"notendswith"`: String does not end with specified suffix (does not end with)
23810
23871
  - `"contains"`: String contains specified substring (contains)
23811
23872
  - `"doesnotcontain"`: String does not contain specified substring (does not contain)
23812
23873
  - `"empty"`: Field is missing or empty (is empty)
23813
23874
  - `"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>".
23875
+ - `"matches"`: Matches a regular expression, ignoring case (matches)
23876
+
23877
+ Operator names are case-insensitive: `NOTEMPTY` and `endsWith` work and are stored
23878
+ as sent. `isempty`, `isnotempty`, `anyof`, `notcontains`, `doesnotstartwith`,
23879
+ `doesnotendwith`, `notmatches`, `doesnotmatch` and `notequal` are not operators:
23880
+ they are refused with 422 "Invalid operation: <name>", with the name in lowercase,
23881
+ both when the filter is saved and by `POST /v1/processors/filter`. To negate a
23882
+ condition, wrap it in `not`.
23883
+
23884
+ The string comparisons (`equals`, `contains`, `startswith`, `endswith` and their
23885
+ negations) are case-sensitive; wrap the field in `lowercase` to compare without case.
23886
+ `matches` is not: every pattern is compiled with the flags `gi`, so `^paid$` also
23887
+ matches `PAID` and `[a-z]` matches capital letters. An inline flag such as `(?i)`
23888
+ makes the pattern invalid. The filter still saves, but in a run every record fails
23889
+ with `FILTER_EVALUATION_FAILED` ("Invalid regular expression: /(?i)…/gi: Invalid
23890
+ group"), and `POST /v1/processors/filter` refuses the call with 422 (live-verified
23891
+ 2026-10-22).
23818
23892
 
23819
23893
  **Logical Operators**
23820
23894
  - `"and"`: All conditions must be true
@@ -24104,7 +24178,9 @@ components:
24104
24178
  x-celigo-refModel: scripts
24105
24179
  description: |
24106
24180
  Reference to the Script resource that contains the filtering logic. This must be a valid
24107
- ObjectId of a Script resource that exists in the system.
24181
+ ObjectId of a Script resource in this account: any other id fails the save with 422
24182
+ ("Only a script owned by the user or a script shared by the Integration App can be used
24183
+ at filter.script._scriptId.").
24108
24184
 
24109
24185
  The referenced script must contain the function specified in the `function` field
24110
24186
  and must be written to handle filtering specifically. The script receives
@@ -24163,7 +24239,11 @@ components:
24163
24239
  type: string
24164
24240
  format: objectId
24165
24241
  x-celigo-refModel: scripts
24166
- description: Script containing the hook function named in `function`. Send this or `_stackId`, not both.
24242
+ description: |-
24243
+ Script containing the hook function named in `function`. Send this or `_stackId`, not both.
24244
+ Must be a script in this account: any other id fails the save with 422, naming the hook,
24245
+ such as "Only a script owned by the user or a script shared by the Integration App can
24246
+ be used at hooks.preMap._scriptId." on an import's `preMap`.
24167
24247
  _stackId:
24168
24248
  type: string
24169
24249
  format: objectId
@@ -24235,8 +24315,10 @@ components:
24235
24315
  - A dot path from the record root (e.g. `email`, `address.city`), read from the
24236
24316
  incoming record. A path that matches no field writes nothing.
24237
24317
  - Handlebars template (contains `{{`) for concatenation /
24238
- formatting / conditional logic (e.g.
24239
- `{{record.firstName}} {{record.lastName}}`).
24318
+ formatting / conditional logic (e.g. `{{firstName}} {{lastName}}`,
24319
+ `{{#if mobile}}{{mobile}}{{else}}{{phone}}{{/if}}`). The template reads the
24320
+ record's fields by bare name: `{{record.firstName}}` and `{{data.firstName}}`
24321
+ render nothing, so the field is left out even when the record has the value.
24240
24322
 
24241
24323
  A `$.` JSONPath (the Mapper 2.0 `mappings` syntax) reads nothing here, and a bare
24242
24324
  string is read as a field path, not a constant: set constants in `hardCodedValue`.
@@ -24277,8 +24359,9 @@ components:
24277
24359
  x-celigo-ai-guidance:
24278
24360
  - |-
24279
24361
  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.
24362
+ produces an empty string, null or nothing. Without this flag an
24363
+ empty string is written as ``""`` and null as null, either of which
24364
+ may overwrite existing data; a missing source is left out either way.
24282
24365
  immutable:
24283
24366
  type: boolean
24284
24367
  description: When true, the mapped value cannot be overwritten by later mapping steps.
@@ -24295,7 +24378,15 @@ components:
24295
24378
  type:
24296
24379
  - string
24297
24380
  - 'null'
24298
- description: Fallback value used when the extract yields no value.
24381
+ description: |-
24382
+ Fallback value written when the source value is an empty string, null or
24383
+ missing. Without a default, an empty string and null are written as they are
24384
+ and a missing field is left out.
24385
+ x-celigo-ai-guidance:
24386
+ - |-
24387
+ Use ``default``, not ``hardCodedValue``, for a fallback on a field that is
24388
+ sometimes empty: ``hardCodedValue`` is written on every record and replaces
24389
+ the values that exist.
24299
24390
  extractDateFormat:
24300
24391
  type: string
24301
24392
  description: Date format of the source value, used to parse it before conversion.
@@ -24411,8 +24502,8 @@ components:
24411
24502
  id:
24412
24503
  type: string
24413
24504
  description: |
24414
- Unique identifier for this field within the form.
24415
- This value typically matches the key in the fieldMap object.
24505
+ Unique identifier for this field within the form: layout containers and conditions
24506
+ refer to the field by it. Use the same string as the field's fieldMap key and its `name`.
24416
24507
  examples:
24417
24508
  - url
24418
24509
  - mode
@@ -24423,8 +24514,9 @@ components:
24423
24514
  name:
24424
24515
  type: string
24425
24516
  description: |
24426
- Name of the field, used as the property name when generating the settings object
24427
- from the submitted form data.
24517
+ Key the field's value is saved under: one top-level key of the resource's `settings`,
24518
+ which the form also reads the value back from when it opens. Nested objects inside
24519
+ `settings` are written to it directly, not through a form field's `name`.
24428
24520
  examples:
24429
24521
  - url
24430
24522
  - mode
@@ -24499,11 +24591,19 @@ components:
24499
24591
  required:
24500
24592
  type: boolean
24501
24593
  description: |
24502
- When true, the field must have a value before the form can be submitted.
24594
+ When true, the field must have a value before the form can be submitted. Only the form
24595
+ enforces it: an API write of `settings` is stored without the value.
24503
24596
  default: false
24504
24597
  examples:
24505
24598
  - true
24506
24599
  - false
24600
+ defaultValue:
24601
+ description: |
24602
+ Value the form shows while the resource's `settings` holds no value under the field's
24603
+ `name`.
24604
+ examples:
24605
+ - us
24606
+ - true
24507
24607
  multiline:
24508
24608
  type: boolean
24509
24609
  description: |
@@ -24566,15 +24666,187 @@ components:
24566
24666
  keyName:
24567
24667
  type: string
24568
24668
  description: |
24569
- For keyvalue fields, specifies the placeholder and field name for the key input.
24669
+ For keyvalue and staticMap fields, names the first column: each saved row holds that
24670
+ column's value under this key. A keyvalue field without it uses `key`.
24570
24671
  examples:
24571
24672
  - theKey
24673
+ - source
24572
24674
  valueName:
24573
24675
  type: string
24574
24676
  description: |
24575
- For keyvalue fields, specifies the placeholder and field name for the value input.
24677
+ For keyvalue and staticMap fields, names the second column: each saved row holds that
24678
+ column's value under this key. A keyvalue field without it uses `value`.
24576
24679
  examples:
24577
24680
  - theValue
24681
+ - target
24682
+ keyLabel:
24683
+ type: string
24684
+ description: |
24685
+ For staticMap fields, heading of the first column.
24686
+ examples:
24687
+ - Source status
24688
+ valueLabel:
24689
+ type: string
24690
+ description: |
24691
+ For staticMap fields, heading of the second column.
24692
+ examples:
24693
+ - Destination status
24694
+ keyOptions:
24695
+ type: array
24696
+ description: |
24697
+ For staticMap fields, suggestions offered in the first column's cells. A cell still
24698
+ accepts a typed value.
24699
+ items:
24700
+ type: object
24701
+ properties:
24702
+ label:
24703
+ type: string
24704
+ description: |
24705
+ Display text for the suggestion.
24706
+ value:
24707
+ type: string
24708
+ description: |
24709
+ Value saved when the suggestion is chosen.
24710
+ examples:
24711
+ - - label: Pending
24712
+ value: pending
24713
+ - label: Shipped
24714
+ value: shipped
24715
+ valueOptions:
24716
+ type: array
24717
+ description: |
24718
+ For staticMap fields, suggestions offered in the second column's cells. A cell still
24719
+ accepts a typed value.
24720
+ items:
24721
+ type: object
24722
+ properties:
24723
+ label:
24724
+ type: string
24725
+ description: |
24726
+ Display text for the suggestion.
24727
+ value:
24728
+ type: string
24729
+ description: |
24730
+ Value saved when the suggestion is chosen.
24731
+ examples:
24732
+ - - label: Open
24733
+ value: open
24734
+ - label: Closed
24735
+ value: closed
24736
+ keyResource:
24737
+ type: object
24738
+ description: |
24739
+ For staticMap fields, fills the first column's suggestions from an export the form
24740
+ carries inline in `virtual`, run the way an exportSelect's `resource` is. With
24741
+ `keyResource` or `valueResource` set, the form requires both columns in every row
24742
+ unless `keyValueRequired` is false.
24743
+ properties:
24744
+ virtual:
24745
+ type: object
24746
+ description: |
24747
+ Export document to run, inline, shaped like an exportSelect's `resource.virtual`.
24748
+ additionalProperties: true
24749
+ valueResource:
24750
+ type: object
24751
+ description: |
24752
+ For staticMap fields, fills the second column's suggestions from an export the form
24753
+ carries inline in `virtual`, run the way an exportSelect's `resource` is.
24754
+ properties:
24755
+ virtual:
24756
+ type: object
24757
+ description: |
24758
+ Export document to run, inline, shaped like an exportSelect's `resource.virtual`.
24759
+ additionalProperties: true
24760
+ keyValueRequired:
24761
+ type: boolean
24762
+ description: |
24763
+ For staticMap fields with `keyResource` or `valueResource`, when false, saves rows
24764
+ that fill only one column; by default the form drops them.
24765
+ default: true
24766
+ examples:
24767
+ - false
24768
+ resource:
24769
+ type: object
24770
+ description: |
24771
+ For exportSelect fields, the export whose records become the options. When the form
24772
+ opens, the UI previews the export in `virtual` (with `test.limit` 100 unless the export
24773
+ sets its own) and lists the preview's `data`: each record needs a `label` and a `value`
24774
+ (a string or number serves as both), so shape them with the export's `transform`. A
24775
+ saved export can't be referenced, and an HTTP export that finds no records leaves the
24776
+ field showing an error instead of options.
24777
+ properties:
24778
+ virtual:
24779
+ type: object
24780
+ description: |
24781
+ Export document to run, inline: `adaptorType`, its adaptor block, and an optional
24782
+ `transform`. `_connectionId` defaults to the connection of the export or import the
24783
+ form belongs to; set it on any other resource's form.
24784
+ additionalProperties: true
24785
+ examples:
24786
+ - virtual:
24787
+ adaptorType: HTTPExport
24788
+ http:
24789
+ relativeURI: /v1/warehouses
24790
+ method: GET
24791
+ formType: http
24792
+ response:
24793
+ resourcePath: warehouses
24794
+ transform:
24795
+ type: expression
24796
+ expression:
24797
+ version: '2'
24798
+ rulesTwoDotZero:
24799
+ mode: create
24800
+ mappings:
24801
+ - generate: label
24802
+ extract: $.name
24803
+ dataType: string
24804
+ status: Active
24805
+ - generate: value
24806
+ extract: $.code
24807
+ dataType: string
24808
+ status: Active
24809
+ multiselect:
24810
+ type: boolean
24811
+ description: |
24812
+ For exportSelect fields, when true, the user can choose several options and the value
24813
+ is saved as an array.
24814
+ default: false
24815
+ examples:
24816
+ - true
24817
+ supportHandlebars:
24818
+ type: boolean
24819
+ description: |
24820
+ For exportSelect fields, when true, renders the `resource.virtual` export as a Handlebars
24821
+ template before each preview (all but its `transform`, `hooks`, and `filter`). On an
24822
+ integration, flow group, flow, export, or import form, the form's current values are
24823
+ under that form's scope name (`integration`, `flowGrouping`, `flow`, `export`, or
24824
+ `import`), beside the saved settings of the scopes above it, with no `settings.`
24825
+ prefix; on a connection or iClient form the template has no context. The options then
24826
+ load through `refreshOptionsOnChangesTo` or `typeAheadSearch`, or when the user
24827
+ refreshes the field.
24828
+ default: false
24829
+ examples:
24830
+ - true
24831
+ refreshOptionsOnChangesTo:
24832
+ type: array
24833
+ items:
24834
+ type: string
24835
+ description: |
24836
+ For exportSelect fields with `supportHandlebars`, ids of the fields whose values the
24837
+ templated export uses: the options load once one of them has a value and reload whenever
24838
+ one changes.
24839
+ examples:
24840
+ - - region
24841
+ typeAheadSearch:
24842
+ type: boolean
24843
+ description: |
24844
+ For exportSelect fields, when true, re-runs the templated export as the user types, with
24845
+ the typed text as this field's own value; an empty box clears the options, and typed
24846
+ text is accepted as the value.
24847
+ default: false
24848
+ examples:
24849
+ - true
24578
24850
  showDelete:
24579
24851
  type: boolean
24580
24852
  description: |
@@ -24675,7 +24947,9 @@ components:
24675
24947
  field:
24676
24948
  type: string
24677
24949
  description: |
24678
- The ID of another field whose value controls the visibility of this field.
24950
+ The ID of another field whose value controls the visibility of this field. The
24951
+ save doesn't check it: a rule naming an ID that isn't in the form counts as met,
24952
+ so the field stays visible.
24679
24953
  examples:
24680
24954
  - mode
24681
24955
  is:
@@ -24711,7 +24985,7 @@ components:
24711
24985
  - tabWithoutSave
24712
24986
  - verticalTabWithoutSave
24713
24987
  x-enumDescriptions:
24714
- column: Arranges form fields in a single vertical column layout.
24988
+ column: Places the containers side by side, one column each.
24715
24989
  collapse: Groups fields into collapsible/expandable sections.
24716
24990
  box: Wraps field groups in bordered boxes with headings.
24717
24991
  indent: Indents field groups to show hierarchy.
@@ -24720,6 +24994,15 @@ components:
24720
24994
  examples:
24721
24995
  - column
24722
24996
  - collapse
24997
+ fields:
24998
+ type: array
24999
+ items:
25000
+ type: string
25001
+ description: |
25002
+ Field IDs shown above the containers, without a heading.
25003
+ examples:
25004
+ - - region
25005
+ - vatNumber
24723
25006
  containers:
24724
25007
  type: array
24725
25008
  description: |
@@ -24759,7 +25042,8 @@ components:
24759
25042
  type: string
24760
25043
  description: |
24761
25044
  Array of field IDs that should be displayed in this container.
24762
- Each ID must correspond to a key in the fieldMap object.
25045
+ Each ID must correspond to a key in the fieldMap object: the save doesn't check it,
25046
+ and an ID that doesn't renders nothing. A field the layout doesn't list isn't shown.
24763
25047
  examples:
24764
25048
  - - A
24765
25049
  - url
@@ -24836,6 +25120,9 @@ components:
24836
25120
 
24837
25121
  The function must return a valid form object that the UI can render.
24838
25122
  Throwing an exception will signal an error to the user.
25123
+
25124
+ The UI runs the function each time it opens the form and renders the returned form instead of
25125
+ `form`, then fills in the values from `settings`; a thrown error's message replaces the form.
24839
25126
  properties:
24840
25127
  function:
24841
25128
  type: string
@@ -24859,8 +25146,10 @@ components:
24859
25146
  Reference to a predefined script resource containing the initialization function.
24860
25147
 
24861
25148
  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.
25149
+ 'function' property. On an integration, a flow group, a flow, an export, an import, or a
25150
+ connection, an id that isn't a script in the same account (or, on an Integration App's
25151
+ resources, one the app shares) is refused with 422 `invalid_ref`. An iClient save
25152
+ stores the id without that check.
24864
25153
  examples:
24865
25154
  - 60a2c4e6f321d800129a1a3c
24866
25155
  - 5f8d43a1b9e5a80011a35f2c
@@ -25581,6 +25870,15 @@ components:
25581
25870
  plus whatever this step's response mapping merges back. A value later steps need
25582
25871
  belongs in the source export's `preSavePage`, in this step's `postResponseMap` hook on
25583
25872
  the flow, or in the later import's own `preMap`.
25873
+
25874
+ The function returns one element per record in `options.data`, in order:
25875
+ `{ data: <record> }` sends the record and `{ errors: [{ code, message }] }` fails it.
25876
+ An element without `data` — `{}`, or the record itself returned unwrapped — skips that
25877
+ record with no error: nothing is sent and the record is reported `ignored: true` at
25878
+ stage `preMapHook`. A return with more or fewer elements fails every record on the page
25879
+ with `invalid_extension_response` ("Extension result doesn't contain the same number
25880
+ of elements as the request object. Expected 2, got 1. Extension returned statusCode
25881
+ 200"), source `pre_map_hook`.
25584
25882
  x-celigo-ai-guidance:
25585
25883
  - |-
25586
25884
  Pre-map JavaScript hook — runs once per page BEFORE the
@@ -25592,7 +25890,18 @@ components:
25592
25890
  renames — mappings handle those.
25593
25891
 
25594
25892
  Runtime contract: ``options.data[]`` (the page of upstream
25595
- records) → array of the same length.
25893
+ records) → array of the same length, each element
25894
+ ``{data: record}`` or ``{errors: [...]}``. A bare record in
25895
+ the returned array is skipped without an error, so
25896
+ ``options.data.map(r => { r.total = t; return r })`` sends
25897
+ nothing.
25898
+ - |-
25899
+ Verified live 2026-10-22 by invoking an HTTP import with a
25900
+ Mapper 2.0 number mapping: one ``{data: record}`` per record
25901
+ sent both records; the bare records sent nothing and both
25902
+ came back ``ignored: true``, ``stage: preMapHook``, with no
25903
+ error; one element for two records failed both with 422
25904
+ ``invalid_extension_response``.
25596
25905
  allOf:
25597
25906
  - $ref: '#/components/schemas/Hook'
25598
25907
  postMap:
@@ -37491,8 +37800,11 @@ components:
37491
37800
  (CSV/XML/JSON) into records. Most modes take their matching configuration object (e.g. a
37492
37801
  `webhook` object when `type` is `webhook`); an HTTP or SQL `delta` export saves without a
37493
37802
  `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.
37803
+ `delta.startDate` sets its first window. It still needs `type: delta`: on an export
37804
+ with no `type`, `{{lastExportDateTime}}` and `{{currentExportDateTime}}` render
37805
+ empty on every run, so a request that carries them goes out with blank values each time
37806
+ (live-verified 2026-10-22). Use `blob` only to transfer raw files without parsing their
37807
+ contents.
37496
37808
  x-celigo-ai-guidance:
37497
37809
  - |-
37498
37810
  ## HOW TO PICK THE TYPE VALUE
@@ -37879,7 +38191,10 @@ components:
37879
38191
  type: string
37880
38192
  format: objectId
37881
38193
  x-celigo-refModel: scripts
37882
- description: Script containing the hook function named in `function`.
38194
+ description: |-
38195
+ Script containing the hook function named in `function`. Must be a script in this
38196
+ account: any other id fails the save with 422 ("Only a script owned by the user or
38197
+ a script shared by the Integration App can be used at hooks.preSavePage._scriptId.").
37883
38198
  examples:
37884
38199
  - 60a2c4e6f321d800129a1a3c
37885
38200
  - 5f8e7d2c1b54e6003a9c7e12
@@ -37990,7 +38305,10 @@ components:
37990
38305
  type: string
37991
38306
  format: objectId
37992
38307
  x-celigo-refModel: connectors
37993
- description: Connector this export was created from, set when the export is part of an installed integration app.
38308
+ description: |-
38309
+ Connector this export was created from, set when the export is part of an installed
38310
+ integration app. The app's install sets it: a create that sends it is refused with 403
38311
+ ("Cannot create an Integration App resource").
37994
38312
  unencrypted:
37995
38313
  type: object
37996
38314
  description: Custom configuration values stored without encryption and returned in API responses.