@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.
- package/dist/ai-agent.yml +90 -94
- package/dist/api.yml +21 -11
- package/dist/asynchelper.yml +84 -91
- package/dist/connection.yml +78 -22
- package/dist/enduser.yml +21 -11
- package/dist/export.yml +84 -91
- package/dist/flow.yml +6 -3
- package/dist/httpconnectorendpoint.yml +16 -1
- package/dist/httpconnectorresource.yml +12 -2
- package/dist/iclient.yml +10 -124
- package/dist/import.yml +132 -99
- package/dist/mcp-server.yml +28 -17
- package/dist/tool.yml +153 -110
- package/package.json +1 -1
- package/schemas.json +329 -329
package/dist/iclient.yml
CHANGED
|
@@ -491,6 +491,8 @@ paths:
|
|
|
491
491
|
Permanently deletes an iClient. Blocked while any connection references
|
|
492
492
|
it, including a deleted connection still in the recycle bin: purge that
|
|
493
493
|
connection with `DELETE /v1/recycleBinTTL/connections/{_id}` first.
|
|
494
|
+
`GET /v1/iclients/{_id}/dependencies` doesn't list a binned connection,
|
|
495
|
+
so an empty dependency list doesn't mean the delete will succeed.
|
|
494
496
|
operationId: deleteIClient
|
|
495
497
|
tags:
|
|
496
498
|
- iClients
|
|
@@ -1623,68 +1625,12 @@ components:
|
|
|
1623
1625
|
endpoint response body.
|
|
1624
1626
|
x-celigo-ai-guidance:
|
|
1625
1627
|
- |-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
- Used during the token exchange phase after obtaining an authorization code or other grant types.
|
|
1630
|
-
- Typically combined with the authorization server's base URL to form the complete token endpoint URL.
|
|
1631
|
-
- |-
|
|
1632
|
-
Specifies the relative URL path on the OAuth2 authorization server where the
|
|
1633
|
-
access token request should be sent.
|
|
1634
|
-
This path is appended to the base URL of the authorization server to form the
|
|
1635
|
-
full endpoint for obtaining an access token during the OAuth2 authentication
|
|
1636
|
-
flow.
|
|
1637
|
-
It is essential for enabling clients to exchange authorization grants for access
|
|
1638
|
-
tokens securely.
|
|
1639
|
-
- |-
|
|
1640
|
-
## IMPORTANT NOTES:
|
|
1641
|
-
- This path is critical for the OAuth2 token exchange process; incorrect configuration will prevent successful authentication.
|
|
1642
|
-
- It should not include the full URL, only the path component.
|
|
1643
|
-
- Must align with the OAuth2 server's documentation to ensure interoperability.
|
|
1644
|
-
- Often used in conjunction with other OAuth2 properties like client ID, client secret, and authorization path.
|
|
1645
|
-
- |-
|
|
1646
|
-
## DEPENDENCY CHAIN:
|
|
1647
|
-
- Depends on the base URL of the OAuth2 authorization server.
|
|
1648
|
-
- Used alongside authorizationPath and other OAuth2 configuration properties.
|
|
1649
|
-
- Integral to the OAuth2 token grant process.
|
|
1650
|
-
- |-
|
|
1651
|
-
## EXAMPLES:
|
|
1652
|
-
- /oauth2/token
|
|
1653
|
-
- /api/v1/access_token
|
|
1654
|
-
- /auth/token
|
|
1655
|
-
- |-
|
|
1656
|
-
## IMPLEMENTATION GUIDANCE:
|
|
1657
|
-
- Ensure the path corresponds exactly to the OAuth2 server's token endpoint specification.
|
|
1658
|
-
- Validate that the path is correctly formatted and accessible.
|
|
1659
|
-
- Avoid including query parameters or fragments in this path; it should be a clean URL path.
|
|
1660
|
-
- Confirm compatibility with the OAuth2 server's expected token endpoint URL structure.
|
|
1661
|
-
- |-
|
|
1662
|
-
## TECHNICAL DETAILS:
|
|
1663
|
-
- Expected to be a URI path string.
|
|
1664
|
-
- Should begin with a forward slash (/).
|
|
1665
|
-
- Combined with the OAuth2 server's base URL to form the full token endpoint URI.
|
|
1666
|
-
- Utilized in HTTP POST requests to obtain access tokens.
|
|
1667
|
-
- |-
|
|
1668
|
-
Specifies the relative URL path on the OAuth2 authorization server where the
|
|
1669
|
-
access token request should be sent.
|
|
1670
|
-
This path is appended to the base URL of the authorization server to form the
|
|
1671
|
-
full endpoint for obtaining an access token during the OAuth2 authentication
|
|
1672
|
-
flow.
|
|
1673
|
-
It is essential for enabling clients to exchange authorization grants for access
|
|
1674
|
-
tokens securely.
|
|
1675
|
-
- |-
|
|
1676
|
-
Specifies the relative URL path on the OAuth2 authorization server where the
|
|
1677
|
-
access token request should be sent.
|
|
1678
|
-
This path is appended to the base URL of the authorization server to form the
|
|
1679
|
-
full endpoint for obtaining an access token during the OAuth2 authentication
|
|
1680
|
-
flow.
|
|
1681
|
-
It is essential for enabling clients to exchange authorization grants for access
|
|
1682
|
-
tokens securely.
|
|
1628
|
+
A path into the token endpoint's JSON response — `access_token`, or
|
|
1629
|
+
`data.access_token` when the provider nests it — never a URL or an endpoint path.
|
|
1630
|
+
The token endpoint itself is `token.uri`.
|
|
1683
1631
|
examples:
|
|
1684
1632
|
- access_token
|
|
1685
|
-
-
|
|
1686
|
-
- /api/v1/access_token
|
|
1687
|
-
- /auth/token
|
|
1633
|
+
- data.access_token
|
|
1688
1634
|
refreshTokenPath:
|
|
1689
1635
|
type: string
|
|
1690
1636
|
description: |-
|
|
@@ -1692,72 +1638,12 @@ components:
|
|
|
1692
1638
|
endpoint response body.
|
|
1693
1639
|
x-celigo-ai-guidance:
|
|
1694
1640
|
- |-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
- Not all OAuth 2.0 providers support refresh tokens; verify compatibility.
|
|
1699
|
-
- The endpoint must support secure communication protocols (e.g., HTTPS).
|
|
1700
|
-
- |-
|
|
1701
|
-
## EXAMPLES:
|
|
1702
|
-
- "/oauth2/token/refresh"
|
|
1703
|
-
- "https://auth.example.com/oauth2/token"
|
|
1704
|
-
- "/api/v1/auth/refresh-token"
|
|
1705
|
-
- |-
|
|
1706
|
-
## DEPENDENCY CHAIN:
|
|
1707
|
-
- Depends on the existence of a valid refresh token issued during initial authentication.
|
|
1708
|
-
- Works in conjunction with the access token and client credentials.
|
|
1709
|
-
- Related to the OAuth 2.0 token endpoint configuration.
|
|
1710
|
-
- |-
|
|
1711
|
-
The relative or absolute URL path used to request a refresh token from the OAuth
|
|
1712
|
-
2.0 authorization server.
|
|
1713
|
-
This endpoint is typically called when the current access token has expired or
|
|
1714
|
-
is about to expire,
|
|
1715
|
-
allowing the client to obtain a new access token without requiring the user to re-authenticate.
|
|
1716
|
-
The path should conform to the OAuth 2.0 specification for token refresh
|
|
1717
|
-
requests and support the necessary HTTP methods,
|
|
1718
|
-
usually POST.
|
|
1719
|
-
- |-
|
|
1720
|
-
## TECHNICAL DETAILS:
|
|
1721
|
-
- Typically uses the HTTP POST method with form-encoded parameters.
|
|
1722
|
-
- Requires parameters such as grant_type=refresh_token and the refresh_token itself.
|
|
1723
|
-
- Responses include a new access token and optionally a new refresh token.
|
|
1724
|
-
- Must handle scopes and token expiration as per OAuth 2.0 standards.
|
|
1725
|
-
- |-
|
|
1726
|
-
## IMPLEMENTATION GUIDANCE:
|
|
1727
|
-
- Ensure the path is correctly formatted as a relative or absolute URL.
|
|
1728
|
-
- Confirm that the authorization server supports refresh token requests at this endpoint.
|
|
1729
|
-
- Secure the endpoint with appropriate authentication and authorization measures.
|
|
1730
|
-
- Validate that the client credentials and refresh token are correctly handled during the request.
|
|
1731
|
-
- Handle error responses gracefully, such as invalid or expired refresh tokens.
|
|
1732
|
-
- |-
|
|
1733
|
-
## FIELD BEHAVIOR:
|
|
1734
|
-
- Specifies the endpoint for refreshing OAuth 2.0 access tokens.
|
|
1735
|
-
- Used by the client application to maintain authenticated sessions seamlessly.
|
|
1736
|
-
- Invoked automatically by the client when the access token expires or is near expiration.
|
|
1737
|
-
- Must be accessible and correctly configured on the authorization server.
|
|
1738
|
-
- |-
|
|
1739
|
-
The relative or absolute URL path used to request a refresh token from the OAuth
|
|
1740
|
-
2.0 authorization server.
|
|
1741
|
-
This endpoint is typically called when the current access token has expired or
|
|
1742
|
-
is about to expire,
|
|
1743
|
-
allowing the client to obtain a new access token without requiring the user to re-authenticate.
|
|
1744
|
-
The path should conform to the OAuth 2.0 specification for token refresh
|
|
1745
|
-
requests and support the necessary HTTP methods,
|
|
1746
|
-
usually POST.
|
|
1747
|
-
- |-
|
|
1748
|
-
The relative or absolute URL path used to request a refresh token from the OAuth
|
|
1749
|
-
2.0 authorization server.
|
|
1750
|
-
This endpoint is typically called when the current access token has expired or
|
|
1751
|
-
is about to expire,
|
|
1752
|
-
allowing the client to obtain a new access token without requiring the user to re-authenticate.
|
|
1753
|
-
The path should conform to the OAuth 2.0 specification for token refresh
|
|
1754
|
-
requests and support the necessary HTTP methods,
|
|
1755
|
-
usually POST.
|
|
1641
|
+
A path into the token endpoint's JSON response — `refresh_token`, or
|
|
1642
|
+
`data.refresh_token` when the provider nests it — never a URL or an endpoint path.
|
|
1643
|
+
The refresh endpoint itself is `refresh.uri`.
|
|
1756
1644
|
examples:
|
|
1757
1645
|
- refresh_token
|
|
1758
|
-
-
|
|
1759
|
-
- https://auth.example.com/oauth2/token
|
|
1760
|
-
- /api/v1/auth/refresh-token
|
|
1646
|
+
- data.refresh_token
|
|
1761
1647
|
scheme:
|
|
1762
1648
|
type: string
|
|
1763
1649
|
description: Authorization scheme prefix (e.g. `Bearer`, `Basic`).
|
package/dist/import.yml
CHANGED
|
@@ -2844,7 +2844,7 @@ components:
|
|
|
2844
2844
|
unmatched lookup halts the record. Stored as null when no
|
|
2845
2845
|
fallback is configured.
|
|
2846
2846
|
x-celigo-ai-guidance:
|
|
2847
|
-
- 'Omit this field entirely when no fallback value is intended.
|
|
2847
|
+
- '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 `""`.'
|
|
2848
2848
|
- 'A fallback only takes effect on an allowed miss — pair a real default with allowFailures: true (or useDefaultOnMultipleMatches: true for the ambiguous-match case).'
|
|
2849
2849
|
allowFailures:
|
|
2850
2850
|
type:
|
|
@@ -5100,7 +5100,7 @@ components:
|
|
|
5100
5100
|
- Unmapped Value
|
|
5101
5101
|
- '{Original Value}'
|
|
5102
5102
|
x-celigo-ai-guidance:
|
|
5103
|
-
- 'Omit this field entirely when no fallback value is intended
|
|
5103
|
+
- '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 `""`.'
|
|
5104
5104
|
allowFailures:
|
|
5105
5105
|
type:
|
|
5106
5106
|
- boolean
|
|
@@ -12568,9 +12568,8 @@ components:
|
|
|
12568
12568
|
- For regular fields: Set to the exact property name (e.g., "firstName", "price", "isActive")
|
|
12569
12569
|
- For object fields: Set to the object property name, then add child mappings in the 'mappings' array
|
|
12570
12570
|
- For array fields: Set to the array property name, then configure 'buildArrayHelper'
|
|
12571
|
-
-
|
|
12572
|
-
|
|
12573
|
-
structure — see the array's description). A child-bearing wrapper and a source-only row that
|
|
12571
|
+
- One structural blank: the single top-level `objectarray` item of a `rows [ ]` mapping (the
|
|
12572
|
+
array output structure — see the array's description). A child-bearing wrapper and a source-only row that
|
|
12574
12573
|
already exist in a saved document also stay unnamed when the tree is re-sent — filling in a
|
|
12575
12574
|
name changes the output; it does not complete the row
|
|
12576
12575
|
|
|
@@ -12587,7 +12586,9 @@ components:
|
|
|
12587
12586
|
}
|
|
12588
12587
|
```
|
|
12589
12588
|
|
|
12590
|
-
When parsing existing mappings, an empty `generate`
|
|
12589
|
+
When parsing existing mappings, an empty `generate` on a row inside an `arrayarray` row's
|
|
12590
|
+
`buildArrayHelper` entry is that row's inner array (`arrayarray` fails at run time; see
|
|
12591
|
+
`dataType`); other unnamed rows are the wrappers and source-only rows described above; an
|
|
12591
12592
|
empty `generate` on the ONLY top-level item, with `dataType: objectarray`, is the `rows [ ]` JSON
|
|
12592
12593
|
structure — array output, bound as `rows` in templates — and is intentional, not a missing name.
|
|
12593
12594
|
examples:
|
|
@@ -12621,17 +12622,25 @@ components:
|
|
|
12621
12622
|
- `numberarray`: Array of numbers
|
|
12622
12623
|
- `booleanarray`: Array of booleans
|
|
12623
12624
|
- `objectarray`: Array of objects (most common array type)
|
|
12624
|
-
- `arrayarray`: Array of arrays (for matrix/table structures)
|
|
12625
12625
|
|
|
12626
|
-
|
|
12627
|
-
|
|
12628
|
-
|
|
12629
|
-
|
|
12626
|
+
`arrayarray` is not a type the mapper recognizes: a save accepts it, but every record
|
|
12627
|
+
then fails with `Destination datatype is a required field.` Build an array of arrays
|
|
12628
|
+
in a script hook instead.
|
|
12629
|
+
|
|
12630
|
+
Array dataTypes are populated two ways: construct or iterate through
|
|
12631
|
+
`buildArrayHelper` entries, or set a constant with `hardCodedValue`. The
|
|
12632
|
+
row's own `extract` is never read on an array type: a primitive-array row
|
|
12633
|
+
that has only an `extract` (JSONPath, Handlebars or a literal) yields
|
|
12634
|
+
nothing, with no error, and an `objectarray` row without `buildArrayHelper`
|
|
12635
|
+
or `hardCodedValue` is refused with 422 ("buildArrayHelper" or
|
|
12636
|
+
"hardCodedValue" must be present for object array datatype.). To copy a
|
|
12637
|
+
source array through unchanged, use one entry that iterates it
|
|
12638
|
+
(`buildArrayHelper: [{"extract": "$.items[*]"}]`).
|
|
12630
12639
|
|
|
12631
12640
|
IMPORTANT: The dataType controls which additional fields are relevant:
|
|
12632
12641
|
- For date-like string fields: extractDateFormat, generateDateFormat, etc. become relevant
|
|
12633
12642
|
- For object types: 'mappings' array becomes relevant
|
|
12634
|
-
- For array types:
|
|
12643
|
+
- For array types: `buildArrayHelper` or `hardCodedValue` (see above)
|
|
12635
12644
|
|
|
12636
12645
|
When analyzing existing mappings or generating new ones, always check dataType first
|
|
12637
12646
|
to understand what additional fields should be present.
|
|
@@ -12650,7 +12659,6 @@ components:
|
|
|
12650
12659
|
- numberarray
|
|
12651
12660
|
- booleanarray
|
|
12652
12661
|
- objectarray
|
|
12653
|
-
- arrayarray
|
|
12654
12662
|
x-enumDescriptions:
|
|
12655
12663
|
string: Text values; converts other types to their string representation.
|
|
12656
12664
|
number: Numeric values; attempts conversion from strings.
|
|
@@ -12660,7 +12668,6 @@ components:
|
|
|
12660
12668
|
numberarray: Array of numeric values.
|
|
12661
12669
|
booleanarray: Array of boolean values.
|
|
12662
12670
|
objectarray: Array of objects, the most common array type.
|
|
12663
|
-
arrayarray: Array of arrays, used for matrix or table structures.
|
|
12664
12671
|
examples:
|
|
12665
12672
|
- string
|
|
12666
12673
|
- number
|
|
@@ -12703,9 +12710,10 @@ components:
|
|
|
12703
12710
|
- Valid on scalars and on `object` rows, where the rendered output must
|
|
12704
12711
|
parse into an object. On an array row the template goes in a
|
|
12705
12712
|
`buildArrayHelper` entry instead: on an `objectarray` row's own
|
|
12706
|
-
`extract` it is refused with 422 ("buildArrayHelper"
|
|
12707
|
-
for object array datatype), and on a primitive-array
|
|
12708
|
-
`extract` it
|
|
12713
|
+
`extract` it is refused with 422 ("buildArrayHelper" or "hardCodedValue"
|
|
12714
|
+
must be present for object array datatype.), and on a primitive-array
|
|
12715
|
+
row's own `extract` it yields nothing (the field is left out) without an
|
|
12716
|
+
error
|
|
12709
12717
|
|
|
12710
12718
|
```json
|
|
12711
12719
|
"extract": "{{record.price}} {{record.currency}}" // Combines two fields
|
|
@@ -12847,8 +12855,10 @@ components:
|
|
|
12847
12855
|
Explicit JSON `null` is itself a valid fallback: the destination field is written as
|
|
12848
12856
|
JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
|
|
12849
12857
|
action). Omitting the key entirely means no fallback — the field is left out of the
|
|
12850
|
-
output when the extract is empty (the UI's "Do nothing" action)
|
|
12851
|
-
|
|
12858
|
+
output when the extract is missing or an empty string (the UI's "Do nothing" action),
|
|
12859
|
+
while a null source is still written as null unless `conditional.when` is
|
|
12860
|
+
`extract_not_empty`. Failing the record instead is `conditional.when:
|
|
12861
|
+
fail_record_when_empty`, which excludes a default.
|
|
12852
12862
|
x-celigo-ai-guidance:
|
|
12853
12863
|
- |-
|
|
12854
12864
|
`"default": null` and `"default": ""` are distinct saved values, not
|
|
@@ -12856,11 +12866,14 @@ components:
|
|
|
12856
12866
|
empty string renders it as `""` when the extract yields nothing.
|
|
12857
12867
|
Preserve them verbatim when editing or migrating a mapping — dropping
|
|
12858
12868
|
the key changes runtime behavior from "use null/empty string as
|
|
12859
|
-
default value" to "do nothing" (
|
|
12869
|
+
default value" to "do nothing" (a missing or `""` source is left out
|
|
12870
|
+
of the output, while a null source is written as null unless
|
|
12871
|
+
`conditional.when` is `extract_not_empty`).
|
|
12860
12872
|
- |-
|
|
12861
12873
|
The four "Action to take if source field has no value" choices map to:
|
|
12862
|
-
do nothing → no `default` key (
|
|
12863
|
-
extract_not_empty`
|
|
12874
|
+
do nothing → no `default` key (add `conditional.when:
|
|
12875
|
+
extract_not_empty` to leave a null source out too; without it a null
|
|
12876
|
+
source is written as null); use null → `"default": null`; use empty string or
|
|
12864
12877
|
a custom value → `"default": "<value>"`; cause the record to fail →
|
|
12865
12878
|
`conditional.when: fail_record_when_empty` with no `default` key.
|
|
12866
12879
|
examples:
|
|
@@ -13075,8 +13088,7 @@ components:
|
|
|
13075
13088
|
|
|
13076
13089
|
**When to Use**
|
|
13077
13090
|
- REQUIRED when dataType ends with "array" (stringarray, objectarray, etc.), unless the
|
|
13078
|
-
row
|
|
13079
|
-
`hardCodedValue`
|
|
13091
|
+
row sets `hardCodedValue`: an array row's own `extract` is never read (see `dataType`)
|
|
13080
13092
|
- Each entry in this array contributes elements to the output array
|
|
13081
13093
|
- Multiple entries allow combining data from different input arrays
|
|
13082
13094
|
|
|
@@ -13160,28 +13172,10 @@ components:
|
|
|
13160
13172
|
}
|
|
13161
13173
|
```
|
|
13162
13174
|
|
|
13163
|
-
**
|
|
13164
|
-
-
|
|
13165
|
-
|
|
13166
|
-
|
|
13167
|
-
{
|
|
13168
|
-
"generate": "matrix",
|
|
13169
|
-
"dataType": "arrayarray",
|
|
13170
|
-
"buildArrayHelper": [
|
|
13171
|
-
{
|
|
13172
|
-
"extract": "$.rows[*]", // For each row in the rows array
|
|
13173
|
-
"mappings": [
|
|
13174
|
-
{
|
|
13175
|
-
"dataType": "numberarray", // Note: No generate field for inner arrays
|
|
13176
|
-
"buildArrayHelper": [
|
|
13177
|
-
{"extract": "$.rows.columns[*]"} // Notice: "rows" is singular in the composite object
|
|
13178
|
-
]
|
|
13179
|
-
}
|
|
13180
|
-
]
|
|
13181
|
-
}
|
|
13182
|
-
]
|
|
13183
|
-
}
|
|
13184
|
-
```
|
|
13175
|
+
**Arrays of Arrays**
|
|
13176
|
+
- The mapper has no working type for them: `arrayarray` saves, but every record
|
|
13177
|
+
fails with `Destination datatype is a required field.` Build an array of arrays
|
|
13178
|
+
in a script hook instead.
|
|
13185
13179
|
|
|
13186
13180
|
**Important details**
|
|
13187
13181
|
|
|
@@ -13599,8 +13593,8 @@ components:
|
|
|
13599
13593
|
nature is essential for building effective mappings:
|
|
13600
13594
|
|
|
13601
13595
|
1. The schema is self-referential by design - a mapping can contain nested mappings of the same structure
|
|
13602
|
-
2. Complex data structures (nested objects
|
|
13603
|
-
handled through this recursive pattern
|
|
13596
|
+
2. Complex data structures (nested objects and arrays of objects, to any depth) are ALL
|
|
13597
|
+
handled through this recursive pattern; an array of arrays is not (build one in a script hook)
|
|
13604
13598
|
3. Each mapping handles one level of the data structure; deeper levels are handled by nested mappings
|
|
13605
13599
|
|
|
13606
13600
|
When generating mappings programmatically:
|
|
@@ -13654,9 +13648,8 @@ components:
|
|
|
13654
13648
|
- For regular fields: Set to the exact property name (e.g., "firstName", "price", "isActive")
|
|
13655
13649
|
- For object fields: Set to the object property name, then add child mappings in the 'mappings' array
|
|
13656
13650
|
- For array fields: Set to the array property name, then configure 'buildArrayHelper'
|
|
13657
|
-
-
|
|
13658
|
-
|
|
13659
|
-
structure — see the array's description). A child-bearing wrapper and a source-only row that
|
|
13651
|
+
- One structural blank: the single top-level `objectarray` item of a `rows [ ]` mapping (the
|
|
13652
|
+
array output structure — see the array's description). A child-bearing wrapper and a source-only row that
|
|
13660
13653
|
already exist in a saved document also stay unnamed when the tree is re-sent — filling in a
|
|
13661
13654
|
name changes the output; it does not complete the row
|
|
13662
13655
|
|
|
@@ -13673,7 +13666,9 @@ components:
|
|
|
13673
13666
|
}
|
|
13674
13667
|
```
|
|
13675
13668
|
|
|
13676
|
-
When parsing existing mappings, an empty `generate`
|
|
13669
|
+
When parsing existing mappings, an empty `generate` on a row inside an `arrayarray` row's
|
|
13670
|
+
`buildArrayHelper` entry is that row's inner array (`arrayarray` fails at run time; see
|
|
13671
|
+
`dataType`); other unnamed rows are the wrappers and source-only rows described above; an
|
|
13677
13672
|
empty `generate` on the ONLY top-level item, with `dataType: objectarray`, is the `rows [ ]` JSON
|
|
13678
13673
|
structure — array output, bound as `rows` in templates — and is intentional, not a missing name.
|
|
13679
13674
|
examples:
|
|
@@ -13707,17 +13702,25 @@ components:
|
|
|
13707
13702
|
- `numberarray`: Array of numbers
|
|
13708
13703
|
- `booleanarray`: Array of booleans
|
|
13709
13704
|
- `objectarray`: Array of objects (most common array type)
|
|
13710
|
-
- `arrayarray`: Array of arrays (for matrix/table structures)
|
|
13711
13705
|
|
|
13712
|
-
|
|
13713
|
-
|
|
13714
|
-
|
|
13715
|
-
|
|
13706
|
+
`arrayarray` is not a type the mapper recognizes: a save accepts it, but every record
|
|
13707
|
+
then fails with `Destination datatype is a required field.` Build an array of arrays
|
|
13708
|
+
in a script hook instead.
|
|
13709
|
+
|
|
13710
|
+
Array dataTypes are populated two ways: construct or iterate through
|
|
13711
|
+
`buildArrayHelper` entries, or set a constant with `hardCodedValue`. The
|
|
13712
|
+
row's own `extract` is never read on an array type: a primitive-array row
|
|
13713
|
+
that has only an `extract` (JSONPath, Handlebars or a literal) yields
|
|
13714
|
+
nothing, with no error, and an `objectarray` row without `buildArrayHelper`
|
|
13715
|
+
or `hardCodedValue` is refused with 422 ("buildArrayHelper" or
|
|
13716
|
+
"hardCodedValue" must be present for object array datatype.). To copy a
|
|
13717
|
+
source array through unchanged, use one entry that iterates it
|
|
13718
|
+
(`buildArrayHelper: [{"extract": "$.items[*]"}]`).
|
|
13716
13719
|
|
|
13717
13720
|
IMPORTANT: The dataType controls which additional fields are relevant:
|
|
13718
13721
|
- For date-like string fields: extractDateFormat, generateDateFormat, etc. become relevant
|
|
13719
13722
|
- For object types: 'mappings' array becomes relevant
|
|
13720
|
-
- For array types:
|
|
13723
|
+
- For array types: `buildArrayHelper` or `hardCodedValue` (see above)
|
|
13721
13724
|
|
|
13722
13725
|
When analyzing existing mappings or generating new ones, always check dataType first
|
|
13723
13726
|
to understand what additional fields should be present.
|
|
@@ -13736,7 +13739,6 @@ components:
|
|
|
13736
13739
|
- numberarray
|
|
13737
13740
|
- booleanarray
|
|
13738
13741
|
- objectarray
|
|
13739
|
-
- arrayarray
|
|
13740
13742
|
x-enumDescriptions:
|
|
13741
13743
|
string: Text values; converts other types to their string representation.
|
|
13742
13744
|
number: Numeric values; attempts conversion from strings.
|
|
@@ -13746,7 +13748,6 @@ components:
|
|
|
13746
13748
|
numberarray: Array of numeric values.
|
|
13747
13749
|
booleanarray: Array of boolean values.
|
|
13748
13750
|
objectarray: Array of objects, the most common array type.
|
|
13749
|
-
arrayarray: Array of arrays, used for matrix or table structures.
|
|
13750
13751
|
examples:
|
|
13751
13752
|
- string
|
|
13752
13753
|
- number
|
|
@@ -13789,9 +13790,10 @@ components:
|
|
|
13789
13790
|
- Valid on scalars and on `object` rows, where the rendered output must
|
|
13790
13791
|
parse into an object. On an array row the template goes in a
|
|
13791
13792
|
`buildArrayHelper` entry instead: on an `objectarray` row's own
|
|
13792
|
-
`extract` it is refused with 422 ("buildArrayHelper"
|
|
13793
|
-
for object array datatype), and on a primitive-array
|
|
13794
|
-
`extract` it
|
|
13793
|
+
`extract` it is refused with 422 ("buildArrayHelper" or "hardCodedValue"
|
|
13794
|
+
must be present for object array datatype.), and on a primitive-array
|
|
13795
|
+
row's own `extract` it yields nothing (the field is left out) without an
|
|
13796
|
+
error
|
|
13795
13797
|
|
|
13796
13798
|
```json
|
|
13797
13799
|
"extract": "{{record.price}} {{record.currency}}" // Combines two fields
|
|
@@ -13933,8 +13935,10 @@ components:
|
|
|
13933
13935
|
Explicit JSON `null` is itself a valid fallback: the destination field is written as
|
|
13934
13936
|
JSON null when the extract yields nothing (the Mapper UI's "Use null as default value"
|
|
13935
13937
|
action). Omitting the key entirely means no fallback — the field is left out of the
|
|
13936
|
-
output when the extract is empty (the UI's "Do nothing" action)
|
|
13937
|
-
|
|
13938
|
+
output when the extract is missing or an empty string (the UI's "Do nothing" action),
|
|
13939
|
+
while a null source is still written as null unless `conditional.when` is
|
|
13940
|
+
`extract_not_empty`. Failing the record instead is `conditional.when:
|
|
13941
|
+
fail_record_when_empty`, which excludes a default.
|
|
13938
13942
|
x-celigo-ai-guidance:
|
|
13939
13943
|
- |-
|
|
13940
13944
|
`"default": null` and `"default": ""` are distinct saved values, not
|
|
@@ -13942,11 +13946,14 @@ components:
|
|
|
13942
13946
|
empty string renders it as `""` when the extract yields nothing.
|
|
13943
13947
|
Preserve them verbatim when editing or migrating a mapping — dropping
|
|
13944
13948
|
the key changes runtime behavior from "use null/empty string as
|
|
13945
|
-
default value" to "do nothing" (
|
|
13949
|
+
default value" to "do nothing" (a missing or `""` source is left out
|
|
13950
|
+
of the output, while a null source is written as null unless
|
|
13951
|
+
`conditional.when` is `extract_not_empty`).
|
|
13946
13952
|
- |-
|
|
13947
13953
|
The four "Action to take if source field has no value" choices map to:
|
|
13948
|
-
do nothing → no `default` key (
|
|
13949
|
-
extract_not_empty`
|
|
13954
|
+
do nothing → no `default` key (add `conditional.when:
|
|
13955
|
+
extract_not_empty` to leave a null source out too; without it a null
|
|
13956
|
+
source is written as null); use null → `"default": null`; use empty string or
|
|
13950
13957
|
a custom value → `"default": "<value>"`; cause the record to fail →
|
|
13951
13958
|
`conditional.when: fail_record_when_empty` with no `default` key.
|
|
13952
13959
|
examples:
|
|
@@ -14161,8 +14168,7 @@ components:
|
|
|
14161
14168
|
|
|
14162
14169
|
**When to Use**
|
|
14163
14170
|
- REQUIRED when dataType ends with "array" (stringarray, objectarray, etc.), unless the
|
|
14164
|
-
row
|
|
14165
|
-
`hardCodedValue`
|
|
14171
|
+
row sets `hardCodedValue`: an array row's own `extract` is never read (see `dataType`)
|
|
14166
14172
|
- Each entry in this array contributes elements to the output array
|
|
14167
14173
|
- Multiple entries allow combining data from different input arrays
|
|
14168
14174
|
|
|
@@ -14246,28 +14252,10 @@ components:
|
|
|
14246
14252
|
}
|
|
14247
14253
|
```
|
|
14248
14254
|
|
|
14249
|
-
**
|
|
14250
|
-
-
|
|
14251
|
-
|
|
14252
|
-
|
|
14253
|
-
{
|
|
14254
|
-
"generate": "matrix",
|
|
14255
|
-
"dataType": "arrayarray",
|
|
14256
|
-
"buildArrayHelper": [
|
|
14257
|
-
{
|
|
14258
|
-
"extract": "$.rows[*]", // For each row in the rows array
|
|
14259
|
-
"mappings": [
|
|
14260
|
-
{
|
|
14261
|
-
"dataType": "numberarray", // Note: No generate field for inner arrays
|
|
14262
|
-
"buildArrayHelper": [
|
|
14263
|
-
{"extract": "$.rows.columns[*]"} // Notice: "rows" is singular in the composite object
|
|
14264
|
-
]
|
|
14265
|
-
}
|
|
14266
|
-
]
|
|
14267
|
-
}
|
|
14268
|
-
]
|
|
14269
|
-
}
|
|
14270
|
-
```
|
|
14255
|
+
**Arrays of Arrays**
|
|
14256
|
+
- The mapper has no working type for them: `arrayarray` saves, but every record
|
|
14257
|
+
fails with `Destination datatype is a required field.` Build an array of arrays
|
|
14258
|
+
in a script hook instead.
|
|
14271
14259
|
|
|
14272
14260
|
**Important details**
|
|
14273
14261
|
|
|
@@ -14794,6 +14782,11 @@ components:
|
|
|
14794
14782
|
dropped fields. Either map every field downstream logic
|
|
14795
14783
|
needs forward, or author Transform 2.0 with
|
|
14796
14784
|
``mode: "modify"`` instead.
|
|
14785
|
+
- |-
|
|
14786
|
+
An import's ``responseTransform`` is the exception: it accepts
|
|
14787
|
+
version ``"1"`` only (``"2"`` is refused with 422, verified live
|
|
14788
|
+
2026-10-21), so there, map every response field that response
|
|
14789
|
+
mapping needs.
|
|
14797
14790
|
items:
|
|
14798
14791
|
type: array
|
|
14799
14792
|
items:
|
|
@@ -16551,10 +16544,11 @@ components:
|
|
|
16551
16544
|
|
|
16552
16545
|
Runtime contract: ``options.responseData[]`` (one per
|
|
16553
16546
|
submitted record; ``{statusCode, errors, _json, ...}`` —
|
|
16554
|
-
``id`` is
|
|
16555
|
-
|
|
16556
|
-
|
|
16557
|
-
|
|
16547
|
+
``id`` is the destination record's on real runs; flow test
|
|
16548
|
+
runs substitute the saved ``mockResponse`` or the placeholder
|
|
16549
|
+
response, whose envelope carries the mock's id, such as
|
|
16550
|
+
``1234567890``) → array of the same length, typically mutated
|
|
16551
|
+
to annotate or augment per-record errors.
|
|
16558
16552
|
allOf:
|
|
16559
16553
|
- $ref: '#/components/schemas/Hook'
|
|
16560
16554
|
postAggregate:
|
|
@@ -16593,21 +16587,55 @@ components:
|
|
|
16593
16587
|
- transform
|
|
16594
16588
|
description: |-
|
|
16595
16589
|
Transformation that reshapes the destination system's response after records are
|
|
16596
|
-
imported
|
|
16597
|
-
|
|
16590
|
+
imported: it runs after the postSubmit hook, on each record's response body (`_json`),
|
|
16591
|
+
and its output replaces that body, so response mapping can't read a field the
|
|
16592
|
+
transform drops. Expression rules use version `"1"` (`rules`); version `"2"` is refused
|
|
16593
|
+
on save. Commonly used to extract relevant fields from verbose API responses.
|
|
16598
16594
|
allOf:
|
|
16599
16595
|
- $ref: '#/components/schemas/Transform'
|
|
16596
|
+
- type: object
|
|
16597
|
+
properties:
|
|
16598
|
+
expression:
|
|
16599
|
+
type: object
|
|
16600
|
+
properties:
|
|
16601
|
+
version:
|
|
16602
|
+
type: string
|
|
16603
|
+
enum:
|
|
16604
|
+
- '1'
|
|
16605
|
+
x-enumDescriptions:
|
|
16606
|
+
'1': Transformation 1.0 rules in `rules`, the only version an import's response transform accepts.
|
|
16607
|
+
description: Must be `"1"` on an import's response transform; `"2"` is refused with 422.
|
|
16600
16608
|
x-celigo-ai-guidance:
|
|
16609
|
+
- |-
|
|
16610
|
+
Verified live 2026-10-21 on an HTTP import in a flow run: the postSubmit hook's changes
|
|
16611
|
+
to `responseData[i]._json` were in the transform's input, the transform's output replaced
|
|
16612
|
+
`_json` (only the mapped fields were kept), and response mapping then found nothing at a
|
|
16613
|
+
dropped field's path. The execution-log stage is `responseTransformation`, and
|
|
16614
|
+
`POST /v1/imports/{_id}/invoke` returns the transformed body.
|
|
16615
|
+
- |-
|
|
16616
|
+
A save with `expression.version: "2"` (`rulesTwoDotZero`) fails with 422 "`2` is not a
|
|
16617
|
+
valid enum value for path `responseTransform.expression.version`." Write `version: "1"`
|
|
16618
|
+
rules (`[[{extract, generate}, ...]]`).
|
|
16601
16619
|
- |-
|
|
16602
16620
|
## IMPORT-SPECIFIC BEHAVIOR
|
|
16603
16621
|
|
|
16604
|
-
**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
|
|
16622
|
+
**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.
|
|
16605
16623
|
|
|
16606
16624
|
**Common Use Cases**:
|
|
16607
16625
|
- Extracting relevant fields from verbose API responses
|
|
16608
16626
|
- Normalizing response formats across different destination systems
|
|
16609
16627
|
- Adding computed fields based on response data
|
|
16610
16628
|
- Filtering out sensitive information before logging or further processing
|
|
16629
|
+
- |-
|
|
16630
|
+
## Transformation 1.0 rules only, and what response mapping reads
|
|
16631
|
+
|
|
16632
|
+
Expression rules here are Transformation 1.0 only (`expression.version: "1"`, the
|
|
16633
|
+
`rules` array) or a script: a version "2" expression is refused with 422
|
|
16634
|
+
(`` `2` is not a valid enum value for path `responseTransform.expression.version`. ``).
|
|
16635
|
+
The rules read the parsed response body, and their output replaces `_json`. v1 rules
|
|
16636
|
+
keep only the fields they generate, so the step's response mapping reads those
|
|
16637
|
+
names (at the envelope root or under `_json`) and nothing the rules dropped; `id`
|
|
16638
|
+
still resolves.
|
|
16611
16639
|
modelMetadata:
|
|
16612
16640
|
type: object
|
|
16613
16641
|
description: Metadata about the destination data model captured for this import. Rarely set.
|
|
@@ -16637,6 +16665,11 @@ components:
|
|
|
16637
16665
|
default to Mapper 2.0 at the top-level ``mappings`` (plural) field.
|
|
16638
16666
|
Do not set this field unsolicited; the v2 default produces better
|
|
16639
16667
|
output for modern connectors.
|
|
16668
|
+
|
|
16669
|
+
An import that carries both this field and ``mappings`` runs only
|
|
16670
|
+
``mappings``: the Mapper 1.0 rows are ignored, with no error. A
|
|
16671
|
+
conversion to Mapper 2.0 therefore translates every row and removes
|
|
16672
|
+
this field in the same save.
|
|
16640
16673
|
- |-
|
|
16641
16674
|
Allowed (but not the default) on other import adaptors such as
|
|
16642
16675
|
``HTTPImport``, ``RDBMSImport``, ``FTPImport``, and
|