@celigo/api-specs 0.2.154 → 0.2.155

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.
@@ -505,9 +505,8 @@ components:
505
505
  - For regular fields: Set to the exact property name (e.g., "firstName", "price", "isActive")
506
506
  - For object fields: Set to the object property name, then add child mappings in the 'mappings' array
507
507
  - For array fields: Set to the array property name, then configure 'buildArrayHelper'
508
- - Two structural blanks: the inner array item of an array of arrays (it has no field name),
509
- and the single top-level `objectarray` item of a `rows [ ]` mapping (the array output
510
- structure — see the array's description). A child-bearing wrapper and a source-only row that
508
+ - One structural blank: the single top-level `objectarray` item of a `rows [ ]` mapping (the
509
+ array output structure — see the array's description). A child-bearing wrapper and a source-only row that
511
510
  already exist in a saved document also stay unnamed when the tree is re-sent — filling in a
512
511
  name changes the output; it does not complete the row
513
512
 
@@ -524,7 +523,9 @@ components:
524
523
  }
525
524
  ```
526
525
 
527
- When parsing existing mappings, an empty `generate` inside a parent array is an inner array; an
526
+ When parsing existing mappings, an empty `generate` on a row inside an `arrayarray` row's
527
+ `buildArrayHelper` entry is that row's inner array (`arrayarray` fails at run time; see
528
+ `dataType`); other unnamed rows are the wrappers and source-only rows described above; an
528
529
  empty `generate` on the ONLY top-level item, with `dataType: objectarray`, is the `rows [ ]` JSON
529
530
  structure — array output, bound as `rows` in templates — and is intentional, not a missing name.
530
531
  examples:
@@ -558,17 +559,25 @@ components:
558
559
  - `numberarray`: Array of numbers
559
560
  - `booleanarray`: Array of booleans
560
561
  - `objectarray`: Array of objects (most common array type)
561
- - `arrayarray`: Array of arrays (for matrix/table structures)
562
562
 
563
- Array dataTypes can be populated three ways: pass a source array
564
- through unchanged via a JSONPath `extract` alone (when the source is
565
- already an array of the right shape), construct/iterate via
566
- `buildArrayHelper`, or set a constant with `hardCodedValue`.
563
+ `arrayarray` is not a type the mapper recognizes: a save accepts it, but every record
564
+ then fails with `Destination datatype is a required field.` Build an array of arrays
565
+ in a script hook instead.
566
+
567
+ Array dataTypes are populated two ways: construct or iterate through
568
+ `buildArrayHelper` entries, or set a constant with `hardCodedValue`. The
569
+ row's own `extract` is never read on an array type: a primitive-array row
570
+ that has only an `extract` (JSONPath, Handlebars or a literal) yields
571
+ nothing, with no error, and an `objectarray` row without `buildArrayHelper`
572
+ or `hardCodedValue` is refused with 422 ("buildArrayHelper" or
573
+ "hardCodedValue" must be present for object array datatype.). To copy a
574
+ source array through unchanged, use one entry that iterates it
575
+ (`buildArrayHelper: [{"extract": "$.items[*]"}]`).
567
576
 
568
577
  IMPORTANT: The dataType controls which additional fields are relevant:
569
578
  - For date-like string fields: extractDateFormat, generateDateFormat, etc. become relevant
570
579
  - For object types: 'mappings' array becomes relevant
571
- - For array types: a JSONPath `extract` alone, `buildArrayHelper`, or `hardCodedValue` (see above)
580
+ - For array types: `buildArrayHelper` or `hardCodedValue` (see above)
572
581
 
573
582
  When analyzing existing mappings or generating new ones, always check dataType first
574
583
  to understand what additional fields should be present.
@@ -587,7 +596,6 @@ components:
587
596
  - numberarray
588
597
  - booleanarray
589
598
  - objectarray
590
- - arrayarray
591
599
  x-enumDescriptions:
592
600
  string: Text values; converts other types to their string representation.
593
601
  number: Numeric values; attempts conversion from strings.
@@ -597,7 +605,6 @@ components:
597
605
  numberarray: Array of numeric values.
598
606
  booleanarray: Array of boolean values.
599
607
  objectarray: Array of objects, the most common array type.
600
- arrayarray: Array of arrays, used for matrix or table structures.
601
608
  examples:
602
609
  - string
603
610
  - number
@@ -640,9 +647,10 @@ components:
640
647
  - Valid on scalars and on `object` rows, where the rendered output must
641
648
  parse into an object. On an array row the template goes in a
642
649
  `buildArrayHelper` entry instead: on an `objectarray` row's own
643
- `extract` it is refused with 422 ("buildArrayHelper" must be present
644
- for object array datatype), and on a primitive-array row's own
645
- `extract` it renders null without an error
650
+ `extract` it is refused with 422 ("buildArrayHelper" or "hardCodedValue"
651
+ must be present for object array datatype.), and on a primitive-array
652
+ row's own `extract` it yields nothing (the field is left out) without an
653
+ error
646
654
 
647
655
  ```json
648
656
  "extract": "{{record.price}} {{record.currency}}" // Combines two fields
@@ -784,8 +792,10 @@ components:
784
792
  Explicit JSON `null` is itself a valid fallback: the destination field is written as
785
793
  JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
786
794
  action). Omitting the key entirely means no fallback — the field is left out of the
787
- output when the extract is empty (the UI's "Do nothing" action). Failing the record
788
- instead is `conditional.when: fail_record_when_empty`, which excludes a default.
795
+ output when the extract is missing or an empty string (the UI's "Do nothing" action),
796
+ while a null source is still written as null unless `conditional.when` is
797
+ `extract_not_empty`. Failing the record instead is `conditional.when:
798
+ fail_record_when_empty`, which excludes a default.
789
799
  x-celigo-ai-guidance:
790
800
  - |-
791
801
  `"default": null` and `"default": ""` are distinct saved values, not
@@ -793,11 +803,14 @@ components:
793
803
  empty string renders it as `""` when the extract yields nothing.
794
804
  Preserve them verbatim when editing or migrating a mapping — dropping
795
805
  the key changes runtime behavior from "use null/empty string as
796
- default value" to "do nothing" (field omitted from the output).
806
+ default value" to "do nothing" (a missing or `""` source is left out
807
+ of the output, while a null source is written as null unless
808
+ `conditional.when` is `extract_not_empty`).
797
809
  - |-
798
810
  The four "Action to take if source field has no value" choices map to:
799
- do nothing → no `default` key (optionally `conditional.when:
800
- extract_not_empty`); use null → `"default": null`; use empty string or
811
+ do nothing → no `default` key (add `conditional.when:
812
+ extract_not_empty` to leave a null source out too; without it a null
813
+ source is written as null); use null → `"default": null`; use empty string or
801
814
  a custom value → `"default": "<value>"`; cause the record to fail →
802
815
  `conditional.when: fail_record_when_empty` with no `default` key.
803
816
  examples:
@@ -1012,8 +1025,7 @@ components:
1012
1025
 
1013
1026
  **When to Use**
1014
1027
  - REQUIRED when dataType ends with "array" (stringarray, objectarray, etc.), unless the
1015
- row passes a source array through with a JSONPath `extract` alone or sets
1016
- `hardCodedValue`
1028
+ row sets `hardCodedValue`: an array row's own `extract` is never read (see `dataType`)
1017
1029
  - Each entry in this array contributes elements to the output array
1018
1030
  - Multiple entries allow combining data from different input arrays
1019
1031
 
@@ -1097,28 +1109,10 @@ components:
1097
1109
  }
1098
1110
  ```
1099
1111
 
1100
- **For Arrays of Arrays (arrayarray)**
1101
- - Similar to objectarray, but inner arrays have empty 'generate' fields
1102
- - Used for matrix/table structures
1103
- ```json
1104
- {
1105
- "generate": "matrix",
1106
- "dataType": "arrayarray",
1107
- "buildArrayHelper": [
1108
- {
1109
- "extract": "$.rows[*]", // For each row in the rows array
1110
- "mappings": [
1111
- {
1112
- "dataType": "numberarray", // Note: No generate field for inner arrays
1113
- "buildArrayHelper": [
1114
- {"extract": "$.rows.columns[*]"} // Notice: "rows" is singular in the composite object
1115
- ]
1116
- }
1117
- ]
1118
- }
1119
- ]
1120
- }
1121
- ```
1112
+ **Arrays of Arrays**
1113
+ - The mapper has no working type for them: `arrayarray` saves, but every record
1114
+ fails with `Destination datatype is a required field.` Build an array of arrays
1115
+ in a script hook instead.
1122
1116
 
1123
1117
  **Important details**
1124
1118
 
@@ -1536,8 +1530,8 @@ components:
1536
1530
  nature is essential for building effective mappings:
1537
1531
 
1538
1532
  1. The schema is self-referential by design - a mapping can contain nested mappings of the same structure
1539
- 2. Complex data structures (nested objects, arrays of objects, arrays of arrays of objects) are ALL
1540
- handled through this recursive pattern
1533
+ 2. Complex data structures (nested objects and arrays of objects, to any depth) are ALL
1534
+ handled through this recursive pattern; an array of arrays is not (build one in a script hook)
1541
1535
  3. Each mapping handles one level of the data structure; deeper levels are handled by nested mappings
1542
1536
 
1543
1537
  When generating mappings programmatically:
@@ -1591,9 +1585,8 @@ components:
1591
1585
  - For regular fields: Set to the exact property name (e.g., "firstName", "price", "isActive")
1592
1586
  - For object fields: Set to the object property name, then add child mappings in the 'mappings' array
1593
1587
  - For array fields: Set to the array property name, then configure 'buildArrayHelper'
1594
- - Two structural blanks: the inner array item of an array of arrays (it has no field name),
1595
- and the single top-level `objectarray` item of a `rows [ ]` mapping (the array output
1596
- structure — see the array's description). A child-bearing wrapper and a source-only row that
1588
+ - One structural blank: the single top-level `objectarray` item of a `rows [ ]` mapping (the
1589
+ array output structure — see the array's description). A child-bearing wrapper and a source-only row that
1597
1590
  already exist in a saved document also stay unnamed when the tree is re-sent — filling in a
1598
1591
  name changes the output; it does not complete the row
1599
1592
 
@@ -1610,7 +1603,9 @@ components:
1610
1603
  }
1611
1604
  ```
1612
1605
 
1613
- When parsing existing mappings, an empty `generate` inside a parent array is an inner array; an
1606
+ When parsing existing mappings, an empty `generate` on a row inside an `arrayarray` row's
1607
+ `buildArrayHelper` entry is that row's inner array (`arrayarray` fails at run time; see
1608
+ `dataType`); other unnamed rows are the wrappers and source-only rows described above; an
1614
1609
  empty `generate` on the ONLY top-level item, with `dataType: objectarray`, is the `rows [ ]` JSON
1615
1610
  structure — array output, bound as `rows` in templates — and is intentional, not a missing name.
1616
1611
  examples:
@@ -1644,17 +1639,25 @@ components:
1644
1639
  - `numberarray`: Array of numbers
1645
1640
  - `booleanarray`: Array of booleans
1646
1641
  - `objectarray`: Array of objects (most common array type)
1647
- - `arrayarray`: Array of arrays (for matrix/table structures)
1648
1642
 
1649
- Array dataTypes can be populated three ways: pass a source array
1650
- through unchanged via a JSONPath `extract` alone (when the source is
1651
- already an array of the right shape), construct/iterate via
1652
- `buildArrayHelper`, or set a constant with `hardCodedValue`.
1643
+ `arrayarray` is not a type the mapper recognizes: a save accepts it, but every record
1644
+ then fails with `Destination datatype is a required field.` Build an array of arrays
1645
+ in a script hook instead.
1646
+
1647
+ Array dataTypes are populated two ways: construct or iterate through
1648
+ `buildArrayHelper` entries, or set a constant with `hardCodedValue`. The
1649
+ row's own `extract` is never read on an array type: a primitive-array row
1650
+ that has only an `extract` (JSONPath, Handlebars or a literal) yields
1651
+ nothing, with no error, and an `objectarray` row without `buildArrayHelper`
1652
+ or `hardCodedValue` is refused with 422 ("buildArrayHelper" or
1653
+ "hardCodedValue" must be present for object array datatype.). To copy a
1654
+ source array through unchanged, use one entry that iterates it
1655
+ (`buildArrayHelper: [{"extract": "$.items[*]"}]`).
1653
1656
 
1654
1657
  IMPORTANT: The dataType controls which additional fields are relevant:
1655
1658
  - For date-like string fields: extractDateFormat, generateDateFormat, etc. become relevant
1656
1659
  - For object types: 'mappings' array becomes relevant
1657
- - For array types: a JSONPath `extract` alone, `buildArrayHelper`, or `hardCodedValue` (see above)
1660
+ - For array types: `buildArrayHelper` or `hardCodedValue` (see above)
1658
1661
 
1659
1662
  When analyzing existing mappings or generating new ones, always check dataType first
1660
1663
  to understand what additional fields should be present.
@@ -1673,7 +1676,6 @@ components:
1673
1676
  - numberarray
1674
1677
  - booleanarray
1675
1678
  - objectarray
1676
- - arrayarray
1677
1679
  x-enumDescriptions:
1678
1680
  string: Text values; converts other types to their string representation.
1679
1681
  number: Numeric values; attempts conversion from strings.
@@ -1683,7 +1685,6 @@ components:
1683
1685
  numberarray: Array of numeric values.
1684
1686
  booleanarray: Array of boolean values.
1685
1687
  objectarray: Array of objects, the most common array type.
1686
- arrayarray: Array of arrays, used for matrix or table structures.
1687
1688
  examples:
1688
1689
  - string
1689
1690
  - number
@@ -1726,9 +1727,10 @@ components:
1726
1727
  - Valid on scalars and on `object` rows, where the rendered output must
1727
1728
  parse into an object. On an array row the template goes in a
1728
1729
  `buildArrayHelper` entry instead: on an `objectarray` row's own
1729
- `extract` it is refused with 422 ("buildArrayHelper" must be present
1730
- for object array datatype), and on a primitive-array row's own
1731
- `extract` it renders null without an error
1730
+ `extract` it is refused with 422 ("buildArrayHelper" or "hardCodedValue"
1731
+ must be present for object array datatype.), and on a primitive-array
1732
+ row's own `extract` it yields nothing (the field is left out) without an
1733
+ error
1732
1734
 
1733
1735
  ```json
1734
1736
  "extract": "{{record.price}} {{record.currency}}" // Combines two fields
@@ -1870,8 +1872,10 @@ components:
1870
1872
  Explicit JSON `null` is itself a valid fallback: the destination field is written as
1871
1873
  JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
1872
1874
  action). Omitting the key entirely means no fallback — the field is left out of the
1873
- output when the extract is empty (the UI's "Do nothing" action). Failing the record
1874
- instead is `conditional.when: fail_record_when_empty`, which excludes a default.
1875
+ output when the extract is missing or an empty string (the UI's "Do nothing" action),
1876
+ while a null source is still written as null unless `conditional.when` is
1877
+ `extract_not_empty`. Failing the record instead is `conditional.when:
1878
+ fail_record_when_empty`, which excludes a default.
1875
1879
  x-celigo-ai-guidance:
1876
1880
  - |-
1877
1881
  `"default": null` and `"default": ""` are distinct saved values, not
@@ -1879,11 +1883,14 @@ components:
1879
1883
  empty string renders it as `""` when the extract yields nothing.
1880
1884
  Preserve them verbatim when editing or migrating a mapping — dropping
1881
1885
  the key changes runtime behavior from "use null/empty string as
1882
- default value" to "do nothing" (field omitted from the output).
1886
+ default value" to "do nothing" (a missing or `""` source is left out
1887
+ of the output, while a null source is written as null unless
1888
+ `conditional.when` is `extract_not_empty`).
1883
1889
  - |-
1884
1890
  The four "Action to take if source field has no value" choices map to:
1885
- do nothing → no `default` key (optionally `conditional.when:
1886
- extract_not_empty`); use null → `"default": null`; use empty string or
1891
+ do nothing → no `default` key (add `conditional.when:
1892
+ extract_not_empty` to leave a null source out too; without it a null
1893
+ source is written as null); use null → `"default": null`; use empty string or
1887
1894
  a custom value → `"default": "<value>"`; cause the record to fail →
1888
1895
  `conditional.when: fail_record_when_empty` with no `default` key.
1889
1896
  examples:
@@ -2098,8 +2105,7 @@ components:
2098
2105
 
2099
2106
  **When to Use**
2100
2107
  - REQUIRED when dataType ends with "array" (stringarray, objectarray, etc.), unless the
2101
- row passes a source array through with a JSONPath `extract` alone or sets
2102
- `hardCodedValue`
2108
+ row sets `hardCodedValue`: an array row's own `extract` is never read (see `dataType`)
2103
2109
  - Each entry in this array contributes elements to the output array
2104
2110
  - Multiple entries allow combining data from different input arrays
2105
2111
 
@@ -2183,28 +2189,10 @@ components:
2183
2189
  }
2184
2190
  ```
2185
2191
 
2186
- **For Arrays of Arrays (arrayarray)**
2187
- - Similar to objectarray, but inner arrays have empty 'generate' fields
2188
- - Used for matrix/table structures
2189
- ```json
2190
- {
2191
- "generate": "matrix",
2192
- "dataType": "arrayarray",
2193
- "buildArrayHelper": [
2194
- {
2195
- "extract": "$.rows[*]", // For each row in the rows array
2196
- "mappings": [
2197
- {
2198
- "dataType": "numberarray", // Note: No generate field for inner arrays
2199
- "buildArrayHelper": [
2200
- {"extract": "$.rows.columns[*]"} // Notice: "rows" is singular in the composite object
2201
- ]
2202
- }
2203
- ]
2204
- }
2205
- ]
2206
- }
2207
- ```
2192
+ **Arrays of Arrays**
2193
+ - The mapper has no working type for them: `arrayarray` saves, but every record
2194
+ fails with `Destination datatype is a required field.` Build an array of arrays
2195
+ in a script hook instead.
2208
2196
 
2209
2197
  **Important details**
2210
2198
 
@@ -2848,7 +2836,7 @@ components:
2848
2836
  - Unmapped Value
2849
2837
  - '{Original Value}'
2850
2838
  x-celigo-ai-guidance:
2851
- - 'Omit this field entirely when no fallback value is intended. The API rejects an empty string with [invalid_field] Invalid value '''' for field ''default'' — emitting default: "" to mean "no default" fails validation; leaving the key out is the valid spelling of that intent.'
2839
+ - '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 `""`.'
2852
2840
  allowFailures:
2853
2841
  type:
2854
2842
  - boolean
@@ -3007,6 +2995,11 @@ components:
3007
2995
  dropped fields. Either map every field downstream logic
3008
2996
  needs forward, or author Transform 2.0 with
3009
2997
  ``mode: "modify"`` instead.
2998
+ - |-
2999
+ An import's ``responseTransform`` is the exception: it accepts
3000
+ version ``"1"`` only (``"2"`` is refused with 422, verified live
3001
+ 2026-10-21), so there, map every response field that response
3002
+ mapping needs.
3010
3003
  items:
3011
3004
  type: array
3012
3005
  items: