@celigo/api-specs 0.2.154 → 0.2.156

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/export.yml CHANGED
@@ -12404,9 +12404,8 @@ components:
12404
12404
  - For regular fields: Set to the exact property name (e.g., "firstName", "price", "isActive")
12405
12405
  - For object fields: Set to the object property name, then add child mappings in the 'mappings' array
12406
12406
  - For array fields: Set to the array property name, then configure 'buildArrayHelper'
12407
- - Two structural blanks: the inner array item of an array of arrays (it has no field name),
12408
- and the single top-level `objectarray` item of a `rows [ ]` mapping (the array output
12409
- structure — see the array's description). A child-bearing wrapper and a source-only row that
12407
+ - One structural blank: the single top-level `objectarray` item of a `rows [ ]` mapping (the
12408
+ array output structure — see the array's description). A child-bearing wrapper and a source-only row that
12410
12409
  already exist in a saved document also stay unnamed when the tree is re-sent — filling in a
12411
12410
  name changes the output; it does not complete the row
12412
12411
 
@@ -12423,7 +12422,9 @@ components:
12423
12422
  }
12424
12423
  ```
12425
12424
 
12426
- When parsing existing mappings, an empty `generate` inside a parent array is an inner array; an
12425
+ When parsing existing mappings, an empty `generate` on a row inside an `arrayarray` row's
12426
+ `buildArrayHelper` entry is that row's inner array (`arrayarray` fails at run time; see
12427
+ `dataType`); other unnamed rows are the wrappers and source-only rows described above; an
12427
12428
  empty `generate` on the ONLY top-level item, with `dataType: objectarray`, is the `rows [ ]` JSON
12428
12429
  structure — array output, bound as `rows` in templates — and is intentional, not a missing name.
12429
12430
  examples:
@@ -12457,17 +12458,25 @@ components:
12457
12458
  - `numberarray`: Array of numbers
12458
12459
  - `booleanarray`: Array of booleans
12459
12460
  - `objectarray`: Array of objects (most common array type)
12460
- - `arrayarray`: Array of arrays (for matrix/table structures)
12461
12461
 
12462
- Array dataTypes can be populated three ways: pass a source array
12463
- through unchanged via a JSONPath `extract` alone (when the source is
12464
- already an array of the right shape), construct/iterate via
12465
- `buildArrayHelper`, or set a constant with `hardCodedValue`.
12462
+ `arrayarray` is not a type the mapper recognizes: a save accepts it, but every record
12463
+ then fails with `Destination datatype is a required field.` Build an array of arrays
12464
+ in a script hook instead.
12465
+
12466
+ Array dataTypes are populated two ways: construct or iterate through
12467
+ `buildArrayHelper` entries, or set a constant with `hardCodedValue`. The
12468
+ row's own `extract` is never read on an array type: a primitive-array row
12469
+ that has only an `extract` (JSONPath, Handlebars or a literal) yields
12470
+ nothing, with no error, and an `objectarray` row without `buildArrayHelper`
12471
+ or `hardCodedValue` is refused with 422 ("buildArrayHelper" or
12472
+ "hardCodedValue" must be present for object array datatype.). To copy a
12473
+ source array through unchanged, use one entry that iterates it
12474
+ (`buildArrayHelper: [{"extract": "$.items[*]"}]`).
12466
12475
 
12467
12476
  IMPORTANT: The dataType controls which additional fields are relevant:
12468
12477
  - For date-like string fields: extractDateFormat, generateDateFormat, etc. become relevant
12469
12478
  - For object types: 'mappings' array becomes relevant
12470
- - For array types: a JSONPath `extract` alone, `buildArrayHelper`, or `hardCodedValue` (see above)
12479
+ - For array types: `buildArrayHelper` or `hardCodedValue` (see above)
12471
12480
 
12472
12481
  When analyzing existing mappings or generating new ones, always check dataType first
12473
12482
  to understand what additional fields should be present.
@@ -12486,7 +12495,6 @@ components:
12486
12495
  - numberarray
12487
12496
  - booleanarray
12488
12497
  - objectarray
12489
- - arrayarray
12490
12498
  x-enumDescriptions:
12491
12499
  string: Text values; converts other types to their string representation.
12492
12500
  number: Numeric values; attempts conversion from strings.
@@ -12496,7 +12504,6 @@ components:
12496
12504
  numberarray: Array of numeric values.
12497
12505
  booleanarray: Array of boolean values.
12498
12506
  objectarray: Array of objects, the most common array type.
12499
- arrayarray: Array of arrays, used for matrix or table structures.
12500
12507
  examples:
12501
12508
  - string
12502
12509
  - number
@@ -12539,9 +12546,10 @@ components:
12539
12546
  - Valid on scalars and on `object` rows, where the rendered output must
12540
12547
  parse into an object. On an array row the template goes in a
12541
12548
  `buildArrayHelper` entry instead: on an `objectarray` row's own
12542
- `extract` it is refused with 422 ("buildArrayHelper" must be present
12543
- for object array datatype), and on a primitive-array row's own
12544
- `extract` it renders null without an error
12549
+ `extract` it is refused with 422 ("buildArrayHelper" or "hardCodedValue"
12550
+ must be present for object array datatype.), and on a primitive-array
12551
+ row's own `extract` it yields nothing (the field is left out) without an
12552
+ error
12545
12553
 
12546
12554
  ```json
12547
12555
  "extract": "{{record.price}} {{record.currency}}" // Combines two fields
@@ -12683,8 +12691,10 @@ components:
12683
12691
  Explicit JSON `null` is itself a valid fallback: the destination field is written as
12684
12692
  JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
12685
12693
  action). Omitting the key entirely means no fallback — the field is left out of the
12686
- output when the extract is empty (the UI's "Do nothing" action). Failing the record
12687
- instead is `conditional.when: fail_record_when_empty`, which excludes a default.
12694
+ output when the extract is missing or an empty string (the UI's "Do nothing" action),
12695
+ while a null source is still written as null unless `conditional.when` is
12696
+ `extract_not_empty`. Failing the record instead is `conditional.when:
12697
+ fail_record_when_empty`, which excludes a default.
12688
12698
  x-celigo-ai-guidance:
12689
12699
  - |-
12690
12700
  `"default": null` and `"default": ""` are distinct saved values, not
@@ -12692,11 +12702,14 @@ components:
12692
12702
  empty string renders it as `""` when the extract yields nothing.
12693
12703
  Preserve them verbatim when editing or migrating a mapping — dropping
12694
12704
  the key changes runtime behavior from "use null/empty string as
12695
- default value" to "do nothing" (field omitted from the output).
12705
+ default value" to "do nothing" (a missing or `""` source is left out
12706
+ of the output, while a null source is written as null unless
12707
+ `conditional.when` is `extract_not_empty`).
12696
12708
  - |-
12697
12709
  The four "Action to take if source field has no value" choices map to:
12698
- do nothing → no `default` key (optionally `conditional.when:
12699
- extract_not_empty`); use null → `"default": null`; use empty string or
12710
+ do nothing → no `default` key (add `conditional.when:
12711
+ extract_not_empty` to leave a null source out too; without it a null
12712
+ source is written as null); use null → `"default": null`; use empty string or
12700
12713
  a custom value → `"default": "<value>"`; cause the record to fail →
12701
12714
  `conditional.when: fail_record_when_empty` with no `default` key.
12702
12715
  examples:
@@ -12911,8 +12924,7 @@ components:
12911
12924
 
12912
12925
  **When to Use**
12913
12926
  - REQUIRED when dataType ends with "array" (stringarray, objectarray, etc.), unless the
12914
- row passes a source array through with a JSONPath `extract` alone or sets
12915
- `hardCodedValue`
12927
+ row sets `hardCodedValue`: an array row's own `extract` is never read (see `dataType`)
12916
12928
  - Each entry in this array contributes elements to the output array
12917
12929
  - Multiple entries allow combining data from different input arrays
12918
12930
 
@@ -12996,28 +13008,10 @@ components:
12996
13008
  }
12997
13009
  ```
12998
13010
 
12999
- **For Arrays of Arrays (arrayarray)**
13000
- - Similar to objectarray, but inner arrays have empty 'generate' fields
13001
- - Used for matrix/table structures
13002
- ```json
13003
- {
13004
- "generate": "matrix",
13005
- "dataType": "arrayarray",
13006
- "buildArrayHelper": [
13007
- {
13008
- "extract": "$.rows[*]", // For each row in the rows array
13009
- "mappings": [
13010
- {
13011
- "dataType": "numberarray", // Note: No generate field for inner arrays
13012
- "buildArrayHelper": [
13013
- {"extract": "$.rows.columns[*]"} // Notice: "rows" is singular in the composite object
13014
- ]
13015
- }
13016
- ]
13017
- }
13018
- ]
13019
- }
13020
- ```
13011
+ **Arrays of Arrays**
13012
+ - The mapper has no working type for them: `arrayarray` saves, but every record
13013
+ fails with `Destination datatype is a required field.` Build an array of arrays
13014
+ in a script hook instead.
13021
13015
 
13022
13016
  **Important details**
13023
13017
 
@@ -13435,8 +13429,8 @@ components:
13435
13429
  nature is essential for building effective mappings:
13436
13430
 
13437
13431
  1. The schema is self-referential by design - a mapping can contain nested mappings of the same structure
13438
- 2. Complex data structures (nested objects, arrays of objects, arrays of arrays of objects) are ALL
13439
- handled through this recursive pattern
13432
+ 2. Complex data structures (nested objects and arrays of objects, to any depth) are ALL
13433
+ handled through this recursive pattern; an array of arrays is not (build one in a script hook)
13440
13434
  3. Each mapping handles one level of the data structure; deeper levels are handled by nested mappings
13441
13435
 
13442
13436
  When generating mappings programmatically:
@@ -13490,9 +13484,8 @@ components:
13490
13484
  - For regular fields: Set to the exact property name (e.g., "firstName", "price", "isActive")
13491
13485
  - For object fields: Set to the object property name, then add child mappings in the 'mappings' array
13492
13486
  - For array fields: Set to the array property name, then configure 'buildArrayHelper'
13493
- - Two structural blanks: the inner array item of an array of arrays (it has no field name),
13494
- and the single top-level `objectarray` item of a `rows [ ]` mapping (the array output
13495
- structure — see the array's description). A child-bearing wrapper and a source-only row that
13487
+ - One structural blank: the single top-level `objectarray` item of a `rows [ ]` mapping (the
13488
+ array output structure — see the array's description). A child-bearing wrapper and a source-only row that
13496
13489
  already exist in a saved document also stay unnamed when the tree is re-sent — filling in a
13497
13490
  name changes the output; it does not complete the row
13498
13491
 
@@ -13509,7 +13502,9 @@ components:
13509
13502
  }
13510
13503
  ```
13511
13504
 
13512
- When parsing existing mappings, an empty `generate` inside a parent array is an inner array; an
13505
+ When parsing existing mappings, an empty `generate` on a row inside an `arrayarray` row's
13506
+ `buildArrayHelper` entry is that row's inner array (`arrayarray` fails at run time; see
13507
+ `dataType`); other unnamed rows are the wrappers and source-only rows described above; an
13513
13508
  empty `generate` on the ONLY top-level item, with `dataType: objectarray`, is the `rows [ ]` JSON
13514
13509
  structure — array output, bound as `rows` in templates — and is intentional, not a missing name.
13515
13510
  examples:
@@ -13543,17 +13538,25 @@ components:
13543
13538
  - `numberarray`: Array of numbers
13544
13539
  - `booleanarray`: Array of booleans
13545
13540
  - `objectarray`: Array of objects (most common array type)
13546
- - `arrayarray`: Array of arrays (for matrix/table structures)
13547
13541
 
13548
- Array dataTypes can be populated three ways: pass a source array
13549
- through unchanged via a JSONPath `extract` alone (when the source is
13550
- already an array of the right shape), construct/iterate via
13551
- `buildArrayHelper`, or set a constant with `hardCodedValue`.
13542
+ `arrayarray` is not a type the mapper recognizes: a save accepts it, but every record
13543
+ then fails with `Destination datatype is a required field.` Build an array of arrays
13544
+ in a script hook instead.
13545
+
13546
+ Array dataTypes are populated two ways: construct or iterate through
13547
+ `buildArrayHelper` entries, or set a constant with `hardCodedValue`. The
13548
+ row's own `extract` is never read on an array type: a primitive-array row
13549
+ that has only an `extract` (JSONPath, Handlebars or a literal) yields
13550
+ nothing, with no error, and an `objectarray` row without `buildArrayHelper`
13551
+ or `hardCodedValue` is refused with 422 ("buildArrayHelper" or
13552
+ "hardCodedValue" must be present for object array datatype.). To copy a
13553
+ source array through unchanged, use one entry that iterates it
13554
+ (`buildArrayHelper: [{"extract": "$.items[*]"}]`).
13552
13555
 
13553
13556
  IMPORTANT: The dataType controls which additional fields are relevant:
13554
13557
  - For date-like string fields: extractDateFormat, generateDateFormat, etc. become relevant
13555
13558
  - For object types: 'mappings' array becomes relevant
13556
- - For array types: a JSONPath `extract` alone, `buildArrayHelper`, or `hardCodedValue` (see above)
13559
+ - For array types: `buildArrayHelper` or `hardCodedValue` (see above)
13557
13560
 
13558
13561
  When analyzing existing mappings or generating new ones, always check dataType first
13559
13562
  to understand what additional fields should be present.
@@ -13572,7 +13575,6 @@ components:
13572
13575
  - numberarray
13573
13576
  - booleanarray
13574
13577
  - objectarray
13575
- - arrayarray
13576
13578
  x-enumDescriptions:
13577
13579
  string: Text values; converts other types to their string representation.
13578
13580
  number: Numeric values; attempts conversion from strings.
@@ -13582,7 +13584,6 @@ components:
13582
13584
  numberarray: Array of numeric values.
13583
13585
  booleanarray: Array of boolean values.
13584
13586
  objectarray: Array of objects, the most common array type.
13585
- arrayarray: Array of arrays, used for matrix or table structures.
13586
13587
  examples:
13587
13588
  - string
13588
13589
  - number
@@ -13625,9 +13626,10 @@ components:
13625
13626
  - Valid on scalars and on `object` rows, where the rendered output must
13626
13627
  parse into an object. On an array row the template goes in a
13627
13628
  `buildArrayHelper` entry instead: on an `objectarray` row's own
13628
- `extract` it is refused with 422 ("buildArrayHelper" must be present
13629
- for object array datatype), and on a primitive-array row's own
13630
- `extract` it renders null without an error
13629
+ `extract` it is refused with 422 ("buildArrayHelper" or "hardCodedValue"
13630
+ must be present for object array datatype.), and on a primitive-array
13631
+ row's own `extract` it yields nothing (the field is left out) without an
13632
+ error
13631
13633
 
13632
13634
  ```json
13633
13635
  "extract": "{{record.price}} {{record.currency}}" // Combines two fields
@@ -13769,8 +13771,10 @@ components:
13769
13771
  Explicit JSON `null` is itself a valid fallback: the destination field is written as
13770
13772
  JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
13771
13773
  action). Omitting the key entirely means no fallback — the field is left out of the
13772
- output when the extract is empty (the UI's "Do nothing" action). Failing the record
13773
- instead is `conditional.when: fail_record_when_empty`, which excludes a default.
13774
+ output when the extract is missing or an empty string (the UI's "Do nothing" action),
13775
+ while a null source is still written as null unless `conditional.when` is
13776
+ `extract_not_empty`. Failing the record instead is `conditional.when:
13777
+ fail_record_when_empty`, which excludes a default.
13774
13778
  x-celigo-ai-guidance:
13775
13779
  - |-
13776
13780
  `"default": null` and `"default": ""` are distinct saved values, not
@@ -13778,11 +13782,14 @@ components:
13778
13782
  empty string renders it as `""` when the extract yields nothing.
13779
13783
  Preserve them verbatim when editing or migrating a mapping — dropping
13780
13784
  the key changes runtime behavior from "use null/empty string as
13781
- default value" to "do nothing" (field omitted from the output).
13785
+ default value" to "do nothing" (a missing or `""` source is left out
13786
+ of the output, while a null source is written as null unless
13787
+ `conditional.when` is `extract_not_empty`).
13782
13788
  - |-
13783
13789
  The four "Action to take if source field has no value" choices map to:
13784
- do nothing → no `default` key (optionally `conditional.when:
13785
- extract_not_empty`); use null → `"default": null`; use empty string or
13790
+ do nothing → no `default` key (add `conditional.when:
13791
+ extract_not_empty` to leave a null source out too; without it a null
13792
+ source is written as null); use null → `"default": null`; use empty string or
13786
13793
  a custom value → `"default": "<value>"`; cause the record to fail →
13787
13794
  `conditional.when: fail_record_when_empty` with no `default` key.
13788
13795
  examples:
@@ -13997,8 +14004,7 @@ components:
13997
14004
 
13998
14005
  **When to Use**
13999
14006
  - REQUIRED when dataType ends with "array" (stringarray, objectarray, etc.), unless the
14000
- row passes a source array through with a JSONPath `extract` alone or sets
14001
- `hardCodedValue`
14007
+ row sets `hardCodedValue`: an array row's own `extract` is never read (see `dataType`)
14002
14008
  - Each entry in this array contributes elements to the output array
14003
14009
  - Multiple entries allow combining data from different input arrays
14004
14010
 
@@ -14082,28 +14088,10 @@ components:
14082
14088
  }
14083
14089
  ```
14084
14090
 
14085
- **For Arrays of Arrays (arrayarray)**
14086
- - Similar to objectarray, but inner arrays have empty 'generate' fields
14087
- - Used for matrix/table structures
14088
- ```json
14089
- {
14090
- "generate": "matrix",
14091
- "dataType": "arrayarray",
14092
- "buildArrayHelper": [
14093
- {
14094
- "extract": "$.rows[*]", // For each row in the rows array
14095
- "mappings": [
14096
- {
14097
- "dataType": "numberarray", // Note: No generate field for inner arrays
14098
- "buildArrayHelper": [
14099
- {"extract": "$.rows.columns[*]"} // Notice: "rows" is singular in the composite object
14100
- ]
14101
- }
14102
- ]
14103
- }
14104
- ]
14105
- }
14106
- ```
14091
+ **Arrays of Arrays**
14092
+ - The mapper has no working type for them: `arrayarray` saves, but every record
14093
+ fails with `Destination datatype is a required field.` Build an array of arrays
14094
+ in a script hook instead.
14107
14095
 
14108
14096
  **Important details**
14109
14097
 
@@ -14747,7 +14735,7 @@ components:
14747
14735
  - Unmapped Value
14748
14736
  - '{Original Value}'
14749
14737
  x-celigo-ai-guidance:
14750
- - '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.'
14738
+ - '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 `""`.'
14751
14739
  allowFailures:
14752
14740
  type:
14753
14741
  - boolean
@@ -14906,6 +14894,11 @@ components:
14906
14894
  dropped fields. Either map every field downstream logic
14907
14895
  needs forward, or author Transform 2.0 with
14908
14896
  ``mode: "modify"`` instead.
14897
+ - |-
14898
+ An import's ``responseTransform`` is the exception: it accepts
14899
+ version ``"1"`` only (``"2"`` is refused with 422, verified live
14900
+ 2026-10-21), so there, map every response field that response
14901
+ mapping needs.
14909
14902
  items:
14910
14903
  type: array
14911
14904
  items:
@@ -497,6 +497,10 @@ components:
497
497
  record); for the row-type marker, equals `value` (in a
498
498
  container's child rule, a marker whose `name` differs from
499
499
  its `value` parses to an empty record without an error).
500
+ Names must be unique within a rule's `elements`: a save or a
501
+ parse with two of the same name is refused (`Sibling element
502
+ names need to be unique. Duplicate "<name>" found in
503
+ elements: [<i>, <j>]`).
500
504
  examples:
501
505
  - Order ID
502
506
  - Authorization Information Qualifier
@@ -569,13 +573,30 @@ components:
569
573
  Inclusive minimum string length. Used heavily on EDI
570
574
  elements where the X12 / EDIFACT standard fixes the length
571
575
  of envelope qualifiers (e.g. `ISA05` is exactly 2 chars,
572
- `ISA13` is exactly 9 chars).
576
+ `ISA13` is exactly 9 chars). A parse refuses a shorter value
577
+ (`Min. length not met for the field "ISA06"`). Generation
578
+ doesn't pad to it; see `maxLength`.
573
579
  maxLength:
574
580
  type: integer
575
581
  minimum: 0
576
582
  description: |
577
583
  Inclusive maximum string length. See `minLength` for
578
584
  usage notes.
585
+
586
+ Generation pads a shorter non-empty value with spaces up to
587
+ `maxLength` (`minLength` doesn't pad). An empty value stays
588
+ empty, except on ISA02/ISA04 elements that keep their
589
+ standard names (`Authorization Information`, `Security
590
+ Information`), which are written as `maxLength` spaces. So a
591
+ generate definition keeps the fixed-width X12 ISA at full
592
+ width (ISA02/ISA04 10 characters, ISA06/ISA08 15, 106
593
+ characters with the terminator) only with `maxLength` on
594
+ those elements. Without it, a blank `isa02` comes out empty
595
+ and an unpadded interchange id short, and Celigo's own parser
596
+ refuses that ISA (`Mandatory element "ISA02" is not present`,
597
+ `Min. length not met for the field "ISA06"`). A value longer
598
+ than `maxLength` fails the generation (`Max. length not met
599
+ for the field "<name>"`).
579
600
  referenceValue:
580
601
  type: string
581
602
  description: |
@@ -660,6 +681,14 @@ components:
660
681
  assigned numbers, HL hierarchical ids).
661
682
  examples:
662
683
  - true
684
+ ignore:
685
+ type: boolean
686
+ description: |
687
+ When true, the parser reads the element (on a fixed-width row
688
+ it still takes its `length`) but leaves it out of the parsed
689
+ record.
690
+ examples:
691
+ - true
663
692
  startPosition:
664
693
  type: integer
665
694
  minimum: 1
@@ -793,7 +822,7 @@ components:
793
822
  per segment-element (`ISA01`, `ISA02`, ...). Delimited
794
823
  rules use one element per column. Omit the key on a rule
795
824
  with no elements of its own, such as a container wrapper: an
796
- empty `elements` array fails the parse.
825
+ empty `elements` array saves, but fails the parse.
797
826
  items:
798
827
  $ref: '#/components/schemas/Element'
799
828
  children:
@@ -821,6 +850,11 @@ components:
821
850
  round-trips file definitions should preserve whichever shape
822
851
  the source document uses.
823
852
 
853
+ Put it on the rule that opens the envelope (ISA, GS, ST, UNB,
854
+ UNH), never on a `container` wrapper. A container's close rule
855
+ saves and parses without an error, but it consumes the row it
856
+ names, so the rule meant to read that row comes back empty.
857
+
824
858
  For non-EDI / non-loop rules `closeRule` is omitted.
825
859
  oneOf:
826
860
  - title: rule
@@ -841,10 +875,15 @@ components:
841
875
  under the wrapper's `name`; `container: true` on a rule with
842
876
  its own `elements` isn't honored as a loop.
843
877
 
844
- The parser rejects `container: true` paired with
845
- `maxOccurrence <= 1` with
846
- `Invalid rules: maxOccurences should be greater than '1',
847
- when the container is 'true'`.
878
+ A container repeats up to its `maxOccurrence`, which defaults
879
+ to `1`. A container with `1`, or without the key, saves and
880
+ parses but matches a single row: in fixed-width and delimited
881
+ files the rows after it are dropped without an error, and an
882
+ X12 parse fails at the next row it can't place, naming a
883
+ mandatory segment as missing (for example `Mandatory segment
884
+ "SE" is missing on line: 6`). A rule outside any container
885
+ matches one row the same way. Give the wrapper the most rows
886
+ the file can hold, such as `1000`.
848
887
  default: false
849
888
  examples:
850
889
  - true
@@ -859,8 +898,12 @@ components:
859
898
  an `ST` transaction set or a line-item loop; EDI envelopes use
860
899
  `1` (one ISA per file, one GS per group).
861
900
 
862
- Required to be greater than `1` when `container` is
863
- `true`.
901
+ Defaults to `1`, so a container needs a larger value to repeat
902
+ (see `container`). A value above `1` on any other rule saves,
903
+ but the parse refuses it with `Max no. of occurrences for
904
+ segment "<name>" is applicable only if it is a
905
+ container/loop.` `0` is refused on save and on parse (`if
906
+ present, maxOccurrence must be greater than or equal to 1`).
864
907
  examples:
865
908
  - 1
866
909
  - 1000
@@ -928,6 +971,16 @@ components:
928
971
  - P,04,05
929
972
  - - L,03,04,05,13
930
973
  - R,02,03
974
+ ignoreIdentifier:
975
+ type: boolean
976
+ description: |
977
+ Fixed-width: the rule matches rows without looking for a
978
+ row-type marker. Set it on the row rule of a file whose rows
979
+ carry no marker, inside a `container` so every row is read.
980
+ Without it such rows parse to one empty record (`{}`) with no
981
+ error, wrapped or not.
982
+ examples:
983
+ - true
931
984
  FileDefinitionBase:
932
985
  type: object
933
986
  description: Writable file definition fields shared by the request and response schemas.
@@ -1131,8 +1184,10 @@ components:
1131
1184
  - |-
1132
1185
  Rows repeat only under an elements-less `container: true` rule (a group `name`,
1133
1186
  `maxOccurrence` above 1, no `elements`) whose child rule carries the row's elements. A
1134
- row-marker rule with no such container above it matches only the first row, and the parser
1135
- drops the rest without an error.
1187
+ row-marker rule with no such container above it, or under a container whose
1188
+ `maxOccurrence` is 1 or unset, matches only the first row: in fixed-width and delimited
1189
+ files the parser drops the rest without an error, and an X12 parse fails at the next row,
1190
+ naming a mandatory segment as missing.
1136
1191
  ResourceResponse:
1137
1192
  type: object
1138
1193
  description: Response
package/dist/flow.yml CHANGED
@@ -4349,9 +4349,12 @@ components:
4349
4349
  destination-assigned id and `_json.<path>` (or the flattened
4350
4350
  `<path>`) for fields inside the destination's response body. The full
4351
4351
  envelope (including `id`) is present on real runs and in flow-builder
4352
- previews; flow TEST runs never execute imports, and their mock-built
4353
- envelope carries no `id` — an `extract: "id"` merges nothing in a test
4354
- run even though it works on real runs.
4352
+ previews; flow TEST runs never execute imports, and their envelope is
4353
+ built from the import's saved `mockResponse`, or from the placeholder
4354
+ `{"id": "1234567890", "mockResponse": "replace me"}` (numbered
4355
+ `1234567890-1`, `1234567890-2`, … when a page holds several records)
4356
+ — an `extract: "id"` in a test run merges that mock id, never a
4357
+ destination record id.
4355
4358
 
4356
4359
  An `extract` may also be a Handlebars expression. It evaluates against
4357
4360
  the same envelope as a plain path, so every path inside `{{ }}` starts
@@ -836,7 +836,22 @@ components:
836
836
  description: |-
837
837
  How the connector framework turns this endpoint into an export or an
838
838
  import: which one it becomes, the fields it pre-configures, and the
839
- fields the user must still fill in.
839
+ fields the user must still fill in. Each entry's `path` names a setting
840
+ in the connector's form, which is not always a literal path on the
841
+ generated export or import.
842
+ x-celigo-ai-guidance:
843
+ - |-
844
+ Read against the published Shopify connector on 2026-10-21: the list-customers export
845
+ endpoint presets `response` to `{resourcePath: "customers"}` and also presets `delta`,
846
+ and asks for `type` (`delta` or `test`); the create-customer import endpoint asks for
847
+ `ignoreExisting` and for `mapping.fields.generate.customer.email`, `…first_name` and
848
+ `…last_name`.
849
+ - |-
850
+ Copy a path that is already a field of the step (`type`, `ignoreExisting`,
851
+ `http.response.resourcePath`). Set a form group such as `response` through the step
852
+ fields its value names (`{resourcePath: "customers"}` is `http.response.resourcePath`).
853
+ Treat `mapping.fields.generate.<field>` as a destination field the import's mapping must
854
+ produce, not a property to set.
840
855
  required:
841
856
  - type
842
857
  properties:
@@ -1080,9 +1080,14 @@ components:
1080
1080
  properties:
1081
1081
  path:
1082
1082
  type: string
1083
- description: Dot-notation path of the field on the generated export or import.
1083
+ description: |-
1084
+ Dot-notation name of the setting in the connector's form. It is not always a literal
1085
+ path on the generated export or import: a form group such as `response` takes an
1086
+ object value (`{resourcePath: "customers"}`) that sets the step's
1087
+ `http.response.resourcePath`.
1084
1088
  examples:
1085
1089
  - http.successMediaType
1090
+ - response
1086
1091
  values:
1087
1092
  type: array
1088
1093
  description: Value(s) to assign. Typically a single-element array; entries may be any JSON type.
@@ -1104,9 +1109,14 @@ components:
1104
1109
  properties:
1105
1110
  path:
1106
1111
  type: string
1107
- description: Dot-notation path of the field on the generated export or import.
1112
+ description: |-
1113
+ Dot-notation name of the setting the connector's form asks for: a step field such as
1114
+ `ignoreExisting` or `type`, or `mapping.fields.generate.<field>`, a destination field
1115
+ the import's mapping must produce.
1108
1116
  examples:
1109
1117
  - name
1118
+ - ignoreExisting
1119
+ - mapping.fields.generate.customer.email
1110
1120
  values:
1111
1121
  type: array
1112
1122
  description: Optional suggested or constrained values. Entries may be any JSON type.