@celigo/api-specs 0.2.153 → 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.
@@ -2364,14 +2364,15 @@ components:
2364
2364
  - username: John Doe
2365
2365
  disabled:
2366
2366
  type: boolean
2367
- default: true
2367
+ default: false
2368
2368
  description: |-
2369
2369
  When true, the prompt is hidden from MCP clients — omitted from
2370
- `prompts/list` and not fetchable via `prompts/get`. New prompts
2371
- default to disabled; set to false to expose the prompt. An enabled
2372
- prompt also satisfies the server-level enablement rule on its own.
2373
- Prompts saved before this field existed are reported as
2374
- `disabled: false`.
2370
+ `prompts/list` and not fetchable via `prompts/get`. A prompt sent
2371
+ without `disabled` is saved enabled, unlike tool, API and resource
2372
+ entries, which default to disabled; send `true` to keep a new prompt
2373
+ hidden. An enabled prompt also satisfies the server-level enablement
2374
+ rule on its own. Prompts saved before this field existed are reported
2375
+ as `disabled: false`.
2375
2376
  examples:
2376
2377
  - false
2377
2378
  - true
@@ -4031,7 +4032,7 @@ components:
4031
4032
  connection's traffic counts against the referenced connection's limit instead of its own,
4032
4033
  and its own concurrency and auto-recovery settings have no effect. One level only: the
4033
4034
  referenced connection may not itself borrow, and a connection that others borrow from
4034
- cannot start borrowing.
4035
+ cannot start borrowing. A connection cannot reference itself (422).
4035
4036
  examples:
4036
4037
  - 615dfa0742763671275b70ab
4037
4038
  x-celigo-ai-guidance:
@@ -4068,16 +4069,21 @@ components:
4068
4069
  type: boolean
4069
4070
  description: |-
4070
4071
  When true, the connection has been taken offline and is skipped during flow execution.
4071
- The platform tests the connection after a create or `PUT` and updates this shortly
4072
- afterwards (the audit log records a `system` change; `lastModified` doesn't move), so
4073
- read it again a few seconds after the write.
4072
+ It is set by the connection test a create or `PUT` runs: the result arrives in the
4073
+ write's response or, when the target is slow to answer, shortly afterwards (the audit
4074
+ log records a `system` change; `lastModified` doesn't move), so read it again a few
4075
+ seconds after the write. On an `http` connection the write runs the test only when
4076
+ `http.ping` is configured, and an `http` connection that was never tested has no
4077
+ `offline` key.
4074
4078
  readOnly: true
4075
4079
  needsAuthorization:
4076
4080
  type: boolean
4077
4081
  readOnly: true
4078
4082
  description: |-
4079
4083
  OAuth handshake state. Celigo's OAuth callback sets it to `false` once the user consents
4080
- and the tokens are stored (see `GET /v1/connection/{_id}/oauth2`).
4084
+ and the tokens are stored (see `GET /v1/connection/{_id}/oauth2`). A connection that
4085
+ was never authorized usually has no `needsAuthorization` key, so its absence does not
4086
+ mean the connection is authorized.
4081
4087
  _sourceId:
4082
4088
  type: string
4083
4089
  format: objectId
@@ -5052,15 +5058,18 @@ components:
5052
5058
  clientId:
5053
5059
  type: string
5054
5060
  description: |
5055
- OAuth client ID (application ID) registered with the API provider.
5056
- Required for all OAuth 2.0 grant types.
5061
+ OAuth client ID (application ID) registered with the API provider. An `http`
5062
+ connection takes the app from a `custom_oauth2` iClient referenced by `http._iClientId`
5063
+ (an `mcp` connection from `mcp.http._iClientId`) and doesn't store this field: a create
5064
+ that sends `clientId` and `clientSecret` here answers 201 without either (and stores
5065
+ `useIClientFields: true` unless `false` is sent).
5057
5066
  examples:
5058
5067
  - 0oa1b2c3d4EXAMPLE5
5059
5068
  clientSecret:
5060
5069
  type: string
5061
5070
  description: |
5062
- OAuth client secret (encrypted at rest).
5063
- Required for "authorizecode" and "clientcredentials" grant types.
5071
+ OAuth client secret (encrypted at rest). Not stored on an `http` connection: the secret
5072
+ belongs on the iClient (see `clientId`).
5064
5073
  writeOnly: true
5065
5074
  examples:
5066
5075
  - cs_abc123EXAMPLE456secret
@@ -5276,9 +5285,11 @@ components:
5276
5285
  - "authorizecode" — Authorization Code flow (browser-based user consent).
5277
5286
  Requires authURI, tokenURI, and user authorization via browser.
5278
5287
  - "clientcredentials" — Client Credentials flow (server-to-server, no user).
5279
- Requires tokenURI, clientId, clientSecret.
5288
+ Requires tokenURI.
5280
5289
  - "password" — Resource Owner Password flow (username/password exchange).
5281
- Requires tokenURI, username, password, clientId, clientSecret.
5290
+ Requires tokenURI, username, password.
5291
+ - On an `http` connection the client ID and secret are never stored here: a
5292
+ `custom_oauth2` iClient referenced by `http._iClientId` supplies them.
5282
5293
  JWT:
5283
5294
  type: object
5284
5295
  description: |-
package/dist/tool.yml CHANGED
@@ -3524,9 +3524,8 @@ components:
3524
3524
  - For regular fields: Set to the exact property name (e.g., "firstName", "price", "isActive")
3525
3525
  - For object fields: Set to the object property name, then add child mappings in the 'mappings' array
3526
3526
  - For array fields: Set to the array property name, then configure 'buildArrayHelper'
3527
- - Two structural blanks: the inner array item of an array of arrays (it has no field name),
3528
- and the single top-level `objectarray` item of a `rows [ ]` mapping (the array output
3529
- structure — see the array's description). A child-bearing wrapper and a source-only row that
3527
+ - One structural blank: the single top-level `objectarray` item of a `rows [ ]` mapping (the
3528
+ array output structure — see the array's description). A child-bearing wrapper and a source-only row that
3530
3529
  already exist in a saved document also stay unnamed when the tree is re-sent — filling in a
3531
3530
  name changes the output; it does not complete the row
3532
3531
 
@@ -3543,7 +3542,9 @@ components:
3543
3542
  }
3544
3543
  ```
3545
3544
 
3546
- When parsing existing mappings, an empty `generate` inside a parent array is an inner array; an
3545
+ When parsing existing mappings, an empty `generate` on a row inside an `arrayarray` row's
3546
+ `buildArrayHelper` entry is that row's inner array (`arrayarray` fails at run time; see
3547
+ `dataType`); other unnamed rows are the wrappers and source-only rows described above; an
3547
3548
  empty `generate` on the ONLY top-level item, with `dataType: objectarray`, is the `rows [ ]` JSON
3548
3549
  structure — array output, bound as `rows` in templates — and is intentional, not a missing name.
3549
3550
  examples:
@@ -3577,17 +3578,25 @@ components:
3577
3578
  - `numberarray`: Array of numbers
3578
3579
  - `booleanarray`: Array of booleans
3579
3580
  - `objectarray`: Array of objects (most common array type)
3580
- - `arrayarray`: Array of arrays (for matrix/table structures)
3581
3581
 
3582
- Array dataTypes can be populated three ways: pass a source array
3583
- through unchanged via a JSONPath `extract` alone (when the source is
3584
- already an array of the right shape), construct/iterate via
3585
- `buildArrayHelper`, or set a constant with `hardCodedValue`.
3582
+ `arrayarray` is not a type the mapper recognizes: a save accepts it, but every record
3583
+ then fails with `Destination datatype is a required field.` Build an array of arrays
3584
+ in a script hook instead.
3585
+
3586
+ Array dataTypes are populated two ways: construct or iterate through
3587
+ `buildArrayHelper` entries, or set a constant with `hardCodedValue`. The
3588
+ row's own `extract` is never read on an array type: a primitive-array row
3589
+ that has only an `extract` (JSONPath, Handlebars or a literal) yields
3590
+ nothing, with no error, and an `objectarray` row without `buildArrayHelper`
3591
+ or `hardCodedValue` is refused with 422 ("buildArrayHelper" or
3592
+ "hardCodedValue" must be present for object array datatype.). To copy a
3593
+ source array through unchanged, use one entry that iterates it
3594
+ (`buildArrayHelper: [{"extract": "$.items[*]"}]`).
3586
3595
 
3587
3596
  IMPORTANT: The dataType controls which additional fields are relevant:
3588
3597
  - For date-like string fields: extractDateFormat, generateDateFormat, etc. become relevant
3589
3598
  - For object types: 'mappings' array becomes relevant
3590
- - For array types: a JSONPath `extract` alone, `buildArrayHelper`, or `hardCodedValue` (see above)
3599
+ - For array types: `buildArrayHelper` or `hardCodedValue` (see above)
3591
3600
 
3592
3601
  When analyzing existing mappings or generating new ones, always check dataType first
3593
3602
  to understand what additional fields should be present.
@@ -3606,7 +3615,6 @@ components:
3606
3615
  - numberarray
3607
3616
  - booleanarray
3608
3617
  - objectarray
3609
- - arrayarray
3610
3618
  x-enumDescriptions:
3611
3619
  string: Text values; converts other types to their string representation.
3612
3620
  number: Numeric values; attempts conversion from strings.
@@ -3616,7 +3624,6 @@ components:
3616
3624
  numberarray: Array of numeric values.
3617
3625
  booleanarray: Array of boolean values.
3618
3626
  objectarray: Array of objects, the most common array type.
3619
- arrayarray: Array of arrays, used for matrix or table structures.
3620
3627
  examples:
3621
3628
  - string
3622
3629
  - number
@@ -3659,9 +3666,10 @@ components:
3659
3666
  - Valid on scalars and on `object` rows, where the rendered output must
3660
3667
  parse into an object. On an array row the template goes in a
3661
3668
  `buildArrayHelper` entry instead: on an `objectarray` row's own
3662
- `extract` it is refused with 422 ("buildArrayHelper" must be present
3663
- for object array datatype), and on a primitive-array row's own
3664
- `extract` it renders null without an error
3669
+ `extract` it is refused with 422 ("buildArrayHelper" or "hardCodedValue"
3670
+ must be present for object array datatype.), and on a primitive-array
3671
+ row's own `extract` it yields nothing (the field is left out) without an
3672
+ error
3665
3673
 
3666
3674
  ```json
3667
3675
  "extract": "{{record.price}} {{record.currency}}" // Combines two fields
@@ -3803,8 +3811,10 @@ components:
3803
3811
  Explicit JSON `null` is itself a valid fallback: the destination field is written as
3804
3812
  JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
3805
3813
  action). Omitting the key entirely means no fallback — the field is left out of the
3806
- output when the extract is empty (the UI's "Do nothing" action). Failing the record
3807
- instead is `conditional.when: fail_record_when_empty`, which excludes a default.
3814
+ output when the extract is missing or an empty string (the UI's "Do nothing" action),
3815
+ while a null source is still written as null unless `conditional.when` is
3816
+ `extract_not_empty`. Failing the record instead is `conditional.when:
3817
+ fail_record_when_empty`, which excludes a default.
3808
3818
  x-celigo-ai-guidance:
3809
3819
  - |-
3810
3820
  `"default": null` and `"default": ""` are distinct saved values, not
@@ -3812,11 +3822,14 @@ components:
3812
3822
  empty string renders it as `""` when the extract yields nothing.
3813
3823
  Preserve them verbatim when editing or migrating a mapping — dropping
3814
3824
  the key changes runtime behavior from "use null/empty string as
3815
- default value" to "do nothing" (field omitted from the output).
3825
+ default value" to "do nothing" (a missing or `""` source is left out
3826
+ of the output, while a null source is written as null unless
3827
+ `conditional.when` is `extract_not_empty`).
3816
3828
  - |-
3817
3829
  The four "Action to take if source field has no value" choices map to:
3818
- do nothing → no `default` key (optionally `conditional.when:
3819
- extract_not_empty`); use null → `"default": null`; use empty string or
3830
+ do nothing → no `default` key (add `conditional.when:
3831
+ extract_not_empty` to leave a null source out too; without it a null
3832
+ source is written as null); use null → `"default": null`; use empty string or
3820
3833
  a custom value → `"default": "<value>"`; cause the record to fail →
3821
3834
  `conditional.when: fail_record_when_empty` with no `default` key.
3822
3835
  examples:
@@ -4031,8 +4044,7 @@ components:
4031
4044
 
4032
4045
  **When to Use**
4033
4046
  - REQUIRED when dataType ends with "array" (stringarray, objectarray, etc.), unless the
4034
- row passes a source array through with a JSONPath `extract` alone or sets
4035
- `hardCodedValue`
4047
+ row sets `hardCodedValue`: an array row's own `extract` is never read (see `dataType`)
4036
4048
  - Each entry in this array contributes elements to the output array
4037
4049
  - Multiple entries allow combining data from different input arrays
4038
4050
 
@@ -4116,28 +4128,10 @@ components:
4116
4128
  }
4117
4129
  ```
4118
4130
 
4119
- **For Arrays of Arrays (arrayarray)**
4120
- - Similar to objectarray, but inner arrays have empty 'generate' fields
4121
- - Used for matrix/table structures
4122
- ```json
4123
- {
4124
- "generate": "matrix",
4125
- "dataType": "arrayarray",
4126
- "buildArrayHelper": [
4127
- {
4128
- "extract": "$.rows[*]", // For each row in the rows array
4129
- "mappings": [
4130
- {
4131
- "dataType": "numberarray", // Note: No generate field for inner arrays
4132
- "buildArrayHelper": [
4133
- {"extract": "$.rows.columns[*]"} // Notice: "rows" is singular in the composite object
4134
- ]
4135
- }
4136
- ]
4137
- }
4138
- ]
4139
- }
4140
- ```
4131
+ **Arrays of Arrays**
4132
+ - The mapper has no working type for them: `arrayarray` saves, but every record
4133
+ fails with `Destination datatype is a required field.` Build an array of arrays
4134
+ in a script hook instead.
4141
4135
 
4142
4136
  **Important details**
4143
4137
 
@@ -4555,8 +4549,8 @@ components:
4555
4549
  nature is essential for building effective mappings:
4556
4550
 
4557
4551
  1. The schema is self-referential by design - a mapping can contain nested mappings of the same structure
4558
- 2. Complex data structures (nested objects, arrays of objects, arrays of arrays of objects) are ALL
4559
- handled through this recursive pattern
4552
+ 2. Complex data structures (nested objects and arrays of objects, to any depth) are ALL
4553
+ handled through this recursive pattern; an array of arrays is not (build one in a script hook)
4560
4554
  3. Each mapping handles one level of the data structure; deeper levels are handled by nested mappings
4561
4555
 
4562
4556
  When generating mappings programmatically:
@@ -4610,9 +4604,8 @@ components:
4610
4604
  - For regular fields: Set to the exact property name (e.g., "firstName", "price", "isActive")
4611
4605
  - For object fields: Set to the object property name, then add child mappings in the 'mappings' array
4612
4606
  - For array fields: Set to the array property name, then configure 'buildArrayHelper'
4613
- - Two structural blanks: the inner array item of an array of arrays (it has no field name),
4614
- and the single top-level `objectarray` item of a `rows [ ]` mapping (the array output
4615
- structure — see the array's description). A child-bearing wrapper and a source-only row that
4607
+ - One structural blank: the single top-level `objectarray` item of a `rows [ ]` mapping (the
4608
+ array output structure — see the array's description). A child-bearing wrapper and a source-only row that
4616
4609
  already exist in a saved document also stay unnamed when the tree is re-sent — filling in a
4617
4610
  name changes the output; it does not complete the row
4618
4611
 
@@ -4629,7 +4622,9 @@ components:
4629
4622
  }
4630
4623
  ```
4631
4624
 
4632
- When parsing existing mappings, an empty `generate` inside a parent array is an inner array; an
4625
+ When parsing existing mappings, an empty `generate` on a row inside an `arrayarray` row's
4626
+ `buildArrayHelper` entry is that row's inner array (`arrayarray` fails at run time; see
4627
+ `dataType`); other unnamed rows are the wrappers and source-only rows described above; an
4633
4628
  empty `generate` on the ONLY top-level item, with `dataType: objectarray`, is the `rows [ ]` JSON
4634
4629
  structure — array output, bound as `rows` in templates — and is intentional, not a missing name.
4635
4630
  examples:
@@ -4663,17 +4658,25 @@ components:
4663
4658
  - `numberarray`: Array of numbers
4664
4659
  - `booleanarray`: Array of booleans
4665
4660
  - `objectarray`: Array of objects (most common array type)
4666
- - `arrayarray`: Array of arrays (for matrix/table structures)
4667
4661
 
4668
- Array dataTypes can be populated three ways: pass a source array
4669
- through unchanged via a JSONPath `extract` alone (when the source is
4670
- already an array of the right shape), construct/iterate via
4671
- `buildArrayHelper`, or set a constant with `hardCodedValue`.
4662
+ `arrayarray` is not a type the mapper recognizes: a save accepts it, but every record
4663
+ then fails with `Destination datatype is a required field.` Build an array of arrays
4664
+ in a script hook instead.
4665
+
4666
+ Array dataTypes are populated two ways: construct or iterate through
4667
+ `buildArrayHelper` entries, or set a constant with `hardCodedValue`. The
4668
+ row's own `extract` is never read on an array type: a primitive-array row
4669
+ that has only an `extract` (JSONPath, Handlebars or a literal) yields
4670
+ nothing, with no error, and an `objectarray` row without `buildArrayHelper`
4671
+ or `hardCodedValue` is refused with 422 ("buildArrayHelper" or
4672
+ "hardCodedValue" must be present for object array datatype.). To copy a
4673
+ source array through unchanged, use one entry that iterates it
4674
+ (`buildArrayHelper: [{"extract": "$.items[*]"}]`).
4672
4675
 
4673
4676
  IMPORTANT: The dataType controls which additional fields are relevant:
4674
4677
  - For date-like string fields: extractDateFormat, generateDateFormat, etc. become relevant
4675
4678
  - For object types: 'mappings' array becomes relevant
4676
- - For array types: a JSONPath `extract` alone, `buildArrayHelper`, or `hardCodedValue` (see above)
4679
+ - For array types: `buildArrayHelper` or `hardCodedValue` (see above)
4677
4680
 
4678
4681
  When analyzing existing mappings or generating new ones, always check dataType first
4679
4682
  to understand what additional fields should be present.
@@ -4692,7 +4695,6 @@ components:
4692
4695
  - numberarray
4693
4696
  - booleanarray
4694
4697
  - objectarray
4695
- - arrayarray
4696
4698
  x-enumDescriptions:
4697
4699
  string: Text values; converts other types to their string representation.
4698
4700
  number: Numeric values; attempts conversion from strings.
@@ -4702,7 +4704,6 @@ components:
4702
4704
  numberarray: Array of numeric values.
4703
4705
  booleanarray: Array of boolean values.
4704
4706
  objectarray: Array of objects, the most common array type.
4705
- arrayarray: Array of arrays, used for matrix or table structures.
4706
4707
  examples:
4707
4708
  - string
4708
4709
  - number
@@ -4745,9 +4746,10 @@ components:
4745
4746
  - Valid on scalars and on `object` rows, where the rendered output must
4746
4747
  parse into an object. On an array row the template goes in a
4747
4748
  `buildArrayHelper` entry instead: on an `objectarray` row's own
4748
- `extract` it is refused with 422 ("buildArrayHelper" must be present
4749
- for object array datatype), and on a primitive-array row's own
4750
- `extract` it renders null without an error
4749
+ `extract` it is refused with 422 ("buildArrayHelper" or "hardCodedValue"
4750
+ must be present for object array datatype.), and on a primitive-array
4751
+ row's own `extract` it yields nothing (the field is left out) without an
4752
+ error
4751
4753
 
4752
4754
  ```json
4753
4755
  "extract": "{{record.price}} {{record.currency}}" // Combines two fields
@@ -4889,8 +4891,10 @@ components:
4889
4891
  Explicit JSON `null` is itself a valid fallback: the destination field is written as
4890
4892
  JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
4891
4893
  action). Omitting the key entirely means no fallback — the field is left out of the
4892
- output when the extract is empty (the UI's "Do nothing" action). Failing the record
4893
- instead is `conditional.when: fail_record_when_empty`, which excludes a default.
4894
+ output when the extract is missing or an empty string (the UI's "Do nothing" action),
4895
+ while a null source is still written as null unless `conditional.when` is
4896
+ `extract_not_empty`. Failing the record instead is `conditional.when:
4897
+ fail_record_when_empty`, which excludes a default.
4894
4898
  x-celigo-ai-guidance:
4895
4899
  - |-
4896
4900
  `"default": null` and `"default": ""` are distinct saved values, not
@@ -4898,11 +4902,14 @@ components:
4898
4902
  empty string renders it as `""` when the extract yields nothing.
4899
4903
  Preserve them verbatim when editing or migrating a mapping — dropping
4900
4904
  the key changes runtime behavior from "use null/empty string as
4901
- default value" to "do nothing" (field omitted from the output).
4905
+ default value" to "do nothing" (a missing or `""` source is left out
4906
+ of the output, while a null source is written as null unless
4907
+ `conditional.when` is `extract_not_empty`).
4902
4908
  - |-
4903
4909
  The four "Action to take if source field has no value" choices map to:
4904
- do nothing → no `default` key (optionally `conditional.when:
4905
- extract_not_empty`); use null → `"default": null`; use empty string or
4910
+ do nothing → no `default` key (add `conditional.when:
4911
+ extract_not_empty` to leave a null source out too; without it a null
4912
+ source is written as null); use null → `"default": null`; use empty string or
4906
4913
  a custom value → `"default": "<value>"`; cause the record to fail →
4907
4914
  `conditional.when: fail_record_when_empty` with no `default` key.
4908
4915
  examples:
@@ -5117,8 +5124,7 @@ components:
5117
5124
 
5118
5125
  **When to Use**
5119
5126
  - REQUIRED when dataType ends with "array" (stringarray, objectarray, etc.), unless the
5120
- row passes a source array through with a JSONPath `extract` alone or sets
5121
- `hardCodedValue`
5127
+ row sets `hardCodedValue`: an array row's own `extract` is never read (see `dataType`)
5122
5128
  - Each entry in this array contributes elements to the output array
5123
5129
  - Multiple entries allow combining data from different input arrays
5124
5130
 
@@ -5202,28 +5208,10 @@ components:
5202
5208
  }
5203
5209
  ```
5204
5210
 
5205
- **For Arrays of Arrays (arrayarray)**
5206
- - Similar to objectarray, but inner arrays have empty 'generate' fields
5207
- - Used for matrix/table structures
5208
- ```json
5209
- {
5210
- "generate": "matrix",
5211
- "dataType": "arrayarray",
5212
- "buildArrayHelper": [
5213
- {
5214
- "extract": "$.rows[*]", // For each row in the rows array
5215
- "mappings": [
5216
- {
5217
- "dataType": "numberarray", // Note: No generate field for inner arrays
5218
- "buildArrayHelper": [
5219
- {"extract": "$.rows.columns[*]"} // Notice: "rows" is singular in the composite object
5220
- ]
5221
- }
5222
- ]
5223
- }
5224
- ]
5225
- }
5226
- ```
5211
+ **Arrays of Arrays**
5212
+ - The mapper has no working type for them: `arrayarray` saves, but every record
5213
+ fails with `Destination datatype is a required field.` Build an array of arrays
5214
+ in a script hook instead.
5227
5215
 
5228
5216
  **Important details**
5229
5217
 
@@ -5867,7 +5855,7 @@ components:
5867
5855
  - Unmapped Value
5868
5856
  - '{Original Value}'
5869
5857
  x-celigo-ai-guidance:
5870
- - '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.'
5858
+ - '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 `""`.'
5871
5859
  allowFailures:
5872
5860
  type:
5873
5861
  - boolean
@@ -6026,6 +6014,11 @@ components:
6026
6014
  dropped fields. Either map every field downstream logic
6027
6015
  needs forward, or author Transform 2.0 with
6028
6016
  ``mode: "modify"`` instead.
6017
+ - |-
6018
+ An import's ``responseTransform`` is the exception: it accepts
6019
+ version ``"1"`` only (``"2"`` is refused with 422, verified live
6020
+ 2026-10-21), so there, map every response field that response
6021
+ mapping needs.
6029
6022
  items:
6030
6023
  type: array
6031
6024
  items:
@@ -7482,7 +7475,7 @@ components:
7482
7475
  connection's traffic counts against the referenced connection's limit instead of its own,
7483
7476
  and its own concurrency and auto-recovery settings have no effect. One level only: the
7484
7477
  referenced connection may not itself borrow, and a connection that others borrow from
7485
- cannot start borrowing.
7478
+ cannot start borrowing. A connection cannot reference itself (422).
7486
7479
  examples:
7487
7480
  - 615dfa0742763671275b70ab
7488
7481
  x-celigo-ai-guidance:
@@ -7519,16 +7512,21 @@ components:
7519
7512
  type: boolean
7520
7513
  description: |-
7521
7514
  When true, the connection has been taken offline and is skipped during flow execution.
7522
- The platform tests the connection after a create or `PUT` and updates this shortly
7523
- afterwards (the audit log records a `system` change; `lastModified` doesn't move), so
7524
- read it again a few seconds after the write.
7515
+ It is set by the connection test a create or `PUT` runs: the result arrives in the
7516
+ write's response or, when the target is slow to answer, shortly afterwards (the audit
7517
+ log records a `system` change; `lastModified` doesn't move), so read it again a few
7518
+ seconds after the write. On an `http` connection the write runs the test only when
7519
+ `http.ping` is configured, and an `http` connection that was never tested has no
7520
+ `offline` key.
7525
7521
  readOnly: true
7526
7522
  needsAuthorization:
7527
7523
  type: boolean
7528
7524
  readOnly: true
7529
7525
  description: |-
7530
7526
  OAuth handshake state. Celigo's OAuth callback sets it to `false` once the user consents
7531
- and the tokens are stored (see `GET /v1/connection/{_id}/oauth2`).
7527
+ and the tokens are stored (see `GET /v1/connection/{_id}/oauth2`). A connection that
7528
+ was never authorized usually has no `needsAuthorization` key, so its absence does not
7529
+ mean the connection is authorized.
7532
7530
  _sourceId:
7533
7531
  type: string
7534
7532
  format: objectId
@@ -8503,15 +8501,18 @@ components:
8503
8501
  clientId:
8504
8502
  type: string
8505
8503
  description: |
8506
- OAuth client ID (application ID) registered with the API provider.
8507
- Required for all OAuth 2.0 grant types.
8504
+ OAuth client ID (application ID) registered with the API provider. An `http`
8505
+ connection takes the app from a `custom_oauth2` iClient referenced by `http._iClientId`
8506
+ (an `mcp` connection from `mcp.http._iClientId`) and doesn't store this field: a create
8507
+ that sends `clientId` and `clientSecret` here answers 201 without either (and stores
8508
+ `useIClientFields: true` unless `false` is sent).
8508
8509
  examples:
8509
8510
  - 0oa1b2c3d4EXAMPLE5
8510
8511
  clientSecret:
8511
8512
  type: string
8512
8513
  description: |
8513
- OAuth client secret (encrypted at rest).
8514
- Required for "authorizecode" and "clientcredentials" grant types.
8514
+ OAuth client secret (encrypted at rest). Not stored on an `http` connection: the secret
8515
+ belongs on the iClient (see `clientId`).
8515
8516
  writeOnly: true
8516
8517
  examples:
8517
8518
  - cs_abc123EXAMPLE456secret
@@ -8727,9 +8728,11 @@ components:
8727
8728
  - "authorizecode" — Authorization Code flow (browser-based user consent).
8728
8729
  Requires authURI, tokenURI, and user authorization via browser.
8729
8730
  - "clientcredentials" — Client Credentials flow (server-to-server, no user).
8730
- Requires tokenURI, clientId, clientSecret.
8731
+ Requires tokenURI.
8731
8732
  - "password" — Resource Owner Password flow (username/password exchange).
8732
- Requires tokenURI, username, password, clientId, clientSecret.
8733
+ Requires tokenURI, username, password.
8734
+ - On an `http` connection the client ID and secret are never stored here: a
8735
+ `custom_oauth2` iClient referenced by `http._iClientId` supplies them.
8733
8736
  JWT:
8734
8737
  type: object
8735
8738
  description: |-
@@ -14585,7 +14588,7 @@ components:
14585
14588
  unmatched lookup halts the record. Stored as null when no
14586
14589
  fallback is configured.
14587
14590
  x-celigo-ai-guidance:
14588
- - '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.'
14591
+ - '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 `""`.'
14589
14592
  - 'A fallback only takes effect on an allowed miss — pair a real default with allowFailures: true (or useDefaultOnMultipleMatches: true for the ambiguous-match case).'
14590
14593
  allowFailures:
14591
14594
  type:
@@ -25469,10 +25472,11 @@ components:
25469
25472
 
25470
25473
  Runtime contract: ``options.responseData[]`` (one per
25471
25474
  submitted record; ``{statusCode, errors, _json, ...}`` —
25472
- ``id`` is present on real runs but absent from the
25473
- mock-built envelopes flow test runs substitute) → array of
25474
- the same length, typically mutated to annotate or augment
25475
- per-record errors.
25475
+ ``id`` is the destination record's on real runs; flow test
25476
+ runs substitute the saved ``mockResponse`` or the placeholder
25477
+ response, whose envelope carries the mock's id, such as
25478
+ ``1234567890``) → array of the same length, typically mutated
25479
+ to annotate or augment per-record errors.
25476
25480
  allOf:
25477
25481
  - $ref: '#/components/schemas/Hook'
25478
25482
  postAggregate:
@@ -25511,21 +25515,55 @@ components:
25511
25515
  - transform
25512
25516
  description: |-
25513
25517
  Transformation that reshapes the destination system's response after records are
25514
- imported, before the response is processed by response mappings and downstream
25515
- steps. Commonly used to extract relevant fields from verbose API responses.
25518
+ imported: it runs after the postSubmit hook, on each record's response body (`_json`),
25519
+ and its output replaces that body, so response mapping can't read a field the
25520
+ transform drops. Expression rules use version `"1"` (`rules`); version `"2"` is refused
25521
+ on save. Commonly used to extract relevant fields from verbose API responses.
25516
25522
  allOf:
25517
25523
  - $ref: '#/components/schemas/Transform'
25524
+ - type: object
25525
+ properties:
25526
+ expression:
25527
+ type: object
25528
+ properties:
25529
+ version:
25530
+ type: string
25531
+ enum:
25532
+ - '1'
25533
+ x-enumDescriptions:
25534
+ '1': Transformation 1.0 rules in `rules`, the only version an import's response transform accepts.
25535
+ description: Must be `"1"` on an import's response transform; `"2"` is refused with 422.
25518
25536
  x-celigo-ai-guidance:
25537
+ - |-
25538
+ Verified live 2026-10-21 on an HTTP import in a flow run: the postSubmit hook's changes
25539
+ to `responseData[i]._json` were in the transform's input, the transform's output replaced
25540
+ `_json` (only the mapped fields were kept), and response mapping then found nothing at a
25541
+ dropped field's path. The execution-log stage is `responseTransformation`, and
25542
+ `POST /v1/imports/{_id}/invoke` returns the transformed body.
25543
+ - |-
25544
+ A save with `expression.version: "2"` (`rulesTwoDotZero`) fails with 422 "`2` is not a
25545
+ valid enum value for path `responseTransform.expression.version`." Write `version: "1"`
25546
+ rules (`[[{extract, generate}, ...]]`).
25519
25547
  - |-
25520
25548
  ## IMPORT-SPECIFIC BEHAVIOR
25521
25549
 
25522
- **Response Transformation**: Transforms the response data returned by the destination system after records have been imported. This allows you to reshape, filter, or enrich the response before it is processed by downstream flow steps or returned to the client.
25550
+ **Response Transformation**: Transforms the response data returned by the destination system after records have been imported. This allows you to reshape, filter, or enrich the response before response mapping reads it; the record passed downstream is the incoming record plus what response mapping copies out.
25523
25551
 
25524
25552
  **Common Use Cases**:
25525
25553
  - Extracting relevant fields from verbose API responses
25526
25554
  - Normalizing response formats across different destination systems
25527
25555
  - Adding computed fields based on response data
25528
25556
  - Filtering out sensitive information before logging or further processing
25557
+ - |-
25558
+ ## Transformation 1.0 rules only, and what response mapping reads
25559
+
25560
+ Expression rules here are Transformation 1.0 only (`expression.version: "1"`, the
25561
+ `rules` array) or a script: a version "2" expression is refused with 422
25562
+ (`` `2` is not a valid enum value for path `responseTransform.expression.version`. ``).
25563
+ The rules read the parsed response body, and their output replaces `_json`. v1 rules
25564
+ keep only the fields they generate, so the step's response mapping reads those
25565
+ names (at the envelope root or under `_json`) and nothing the rules dropped; `id`
25566
+ still resolves.
25529
25567
  modelMetadata:
25530
25568
  type: object
25531
25569
  description: Metadata about the destination data model captured for this import. Rarely set.
@@ -25555,6 +25593,11 @@ components:
25555
25593
  default to Mapper 2.0 at the top-level ``mappings`` (plural) field.
25556
25594
  Do not set this field unsolicited; the v2 default produces better
25557
25595
  output for modern connectors.
25596
+
25597
+ An import that carries both this field and ``mappings`` runs only
25598
+ ``mappings``: the Mapper 1.0 rows are ignored, with no error. A
25599
+ conversion to Mapper 2.0 therefore translates every row and removes
25600
+ this field in the same save.
25558
25601
  - |-
25559
25602
  Allowed (but not the default) on other import adaptors such as
25560
25603
  ``HTTPImport``, ``RDBMSImport``, ``FTPImport``, and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.153",
3
+ "version": "0.2.155",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [