@celigo/api-specs 0.2.207 → 0.2.209
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/api.yml +15 -3
- package/dist/connection.yml +15 -3
- package/dist/enduser.yml +15 -3
- package/dist/export.yml +22 -11
- package/dist/flow.yml +19 -10
- package/dist/import.yml +87 -0
- package/dist/mcp-server.yml +15 -3
- package/dist/tool.yml +105 -4
- package/package.json +1 -1
- package/schemas.json +160 -151
package/dist/api.yml
CHANGED
|
@@ -11328,9 +11328,21 @@ components:
|
|
|
11328
11328
|
- COMPUTE_WH
|
|
11329
11329
|
schema:
|
|
11330
11330
|
type: string
|
|
11331
|
-
description:
|
|
11332
|
-
Default
|
|
11333
|
-
|
|
11331
|
+
description: |-
|
|
11332
|
+
Default schema for the session: unqualified table names in queries resolve here, and
|
|
11333
|
+
optimized bulk load imports create their temporary staging table here even when the
|
|
11334
|
+
destination table is schema-qualified — so the connection's role must be able to
|
|
11335
|
+
create that table in it. When blank, optimized bulk load uses PUBLIC.
|
|
11336
|
+
x-celigo-ai-guidance:
|
|
11337
|
+
- |-
|
|
11338
|
+
When this names a schema the session cannot resolve — Snowflake reports it as not
|
|
11339
|
+
existing or not authorized for the role, and the session is left without a current
|
|
11340
|
+
schema — every optimized bulk load fails at the staging step with code `query_fail`
|
|
11341
|
+
and the message "Failed to run the bulk load query. Err: [TempTableQuery] The
|
|
11342
|
+
provided schema is invalid: <this value>" (the connector's rewrite of Snowflake's
|
|
11343
|
+
"This session does not have a current schema"). Fix: set this to a schema the role
|
|
11344
|
+
can create the staging table in — normally the destination table's own schema — or
|
|
11345
|
+
point the import at a second Snowflake connection with that default schema.
|
|
11334
11346
|
examples:
|
|
11335
11347
|
- PUBLIC
|
|
11336
11348
|
role:
|
package/dist/connection.yml
CHANGED
|
@@ -7161,9 +7161,21 @@ components:
|
|
|
7161
7161
|
- COMPUTE_WH
|
|
7162
7162
|
schema:
|
|
7163
7163
|
type: string
|
|
7164
|
-
description:
|
|
7165
|
-
Default
|
|
7166
|
-
|
|
7164
|
+
description: |-
|
|
7165
|
+
Default schema for the session: unqualified table names in queries resolve here, and
|
|
7166
|
+
optimized bulk load imports create their temporary staging table here even when the
|
|
7167
|
+
destination table is schema-qualified — so the connection's role must be able to
|
|
7168
|
+
create that table in it. When blank, optimized bulk load uses PUBLIC.
|
|
7169
|
+
x-celigo-ai-guidance:
|
|
7170
|
+
- |-
|
|
7171
|
+
When this names a schema the session cannot resolve — Snowflake reports it as not
|
|
7172
|
+
existing or not authorized for the role, and the session is left without a current
|
|
7173
|
+
schema — every optimized bulk load fails at the staging step with code `query_fail`
|
|
7174
|
+
and the message "Failed to run the bulk load query. Err: [TempTableQuery] The
|
|
7175
|
+
provided schema is invalid: <this value>" (the connector's rewrite of Snowflake's
|
|
7176
|
+
"This session does not have a current schema"). Fix: set this to a schema the role
|
|
7177
|
+
can create the staging table in — normally the destination table's own schema — or
|
|
7178
|
+
point the import at a second Snowflake connection with that default schema.
|
|
7167
7179
|
examples:
|
|
7168
7180
|
- PUBLIC
|
|
7169
7181
|
role:
|
package/dist/enduser.yml
CHANGED
|
@@ -5186,9 +5186,21 @@ components:
|
|
|
5186
5186
|
- COMPUTE_WH
|
|
5187
5187
|
schema:
|
|
5188
5188
|
type: string
|
|
5189
|
-
description:
|
|
5190
|
-
Default
|
|
5191
|
-
|
|
5189
|
+
description: |-
|
|
5190
|
+
Default schema for the session: unqualified table names in queries resolve here, and
|
|
5191
|
+
optimized bulk load imports create their temporary staging table here even when the
|
|
5192
|
+
destination table is schema-qualified — so the connection's role must be able to
|
|
5193
|
+
create that table in it. When blank, optimized bulk load uses PUBLIC.
|
|
5194
|
+
x-celigo-ai-guidance:
|
|
5195
|
+
- |-
|
|
5196
|
+
When this names a schema the session cannot resolve — Snowflake reports it as not
|
|
5197
|
+
existing or not authorized for the role, and the session is left without a current
|
|
5198
|
+
schema — every optimized bulk load fails at the staging step with code `query_fail`
|
|
5199
|
+
and the message "Failed to run the bulk load query. Err: [TempTableQuery] The
|
|
5200
|
+
provided schema is invalid: <this value>" (the connector's rewrite of Snowflake's
|
|
5201
|
+
"This session does not have a current schema"). Fix: set this to a schema the role
|
|
5202
|
+
can create the staging table in — normally the destination table's own schema — or
|
|
5203
|
+
point the import at a second Snowflake connection with that default schema.
|
|
5192
5204
|
examples:
|
|
5193
5205
|
- PUBLIC
|
|
5194
5206
|
role:
|
package/dist/export.yml
CHANGED
|
@@ -16424,7 +16424,9 @@ components:
|
|
|
16424
16424
|
`POST /v1/exports/preview` reads the `mockOutput` in its request body, not the saved one. For
|
|
16425
16425
|
an export the preview supports (an HTTP export, for example), a body that carries it (as an
|
|
16426
16426
|
export read back with GET does) returns that snapshot as a lone `parse` stage without calling
|
|
16427
|
-
the source; remove `mockOutput` from the body to preview live records.
|
|
16427
|
+
the source; remove `mockOutput` from the body to preview live records. A body mock with an
|
|
16428
|
+
empty or missing `page_of_records` still skips the source and returns 200 with empty `data`
|
|
16429
|
+
and an empty `parse` stage.
|
|
16428
16430
|
|
|
16429
16431
|
**Limitations**
|
|
16430
16432
|
|
|
@@ -17989,17 +17991,27 @@ components:
|
|
|
17989
17991
|
dataURIs:
|
|
17990
17992
|
type: array
|
|
17991
17993
|
description: |-
|
|
17992
|
-
|
|
17993
|
-
|
|
17994
|
+
Links to the records in the source system. On an export preview, one
|
|
17995
|
+
entry per record in `data`: a link to the record when one is available
|
|
17996
|
+
(for example the export's `dataURITemplate` rendered for that record),
|
|
17997
|
+
otherwise `null`, as on an HTTP export without a template; absent when
|
|
17998
|
+
the preview returned no records and when a `mockOutput` in the request
|
|
17999
|
+
body answered.
|
|
17994
18000
|
items:
|
|
17995
|
-
type:
|
|
18001
|
+
type:
|
|
18002
|
+
- string
|
|
18003
|
+
- 'null'
|
|
17996
18004
|
dataRecordTraceKeys:
|
|
17997
18005
|
type: array
|
|
17998
18006
|
description: |-
|
|
17999
18007
|
Trace keys for the records in this preview — one per record,
|
|
18000
|
-
correlating stage outputs to their source record
|
|
18008
|
+
correlating stage outputs to their source record; `null` for a record
|
|
18009
|
+
that has no key. Absent when the preview returned no records and
|
|
18010
|
+
captured no keys, and when a `mockOutput` in the request body answered.
|
|
18001
18011
|
items:
|
|
18002
|
-
type:
|
|
18012
|
+
type:
|
|
18013
|
+
- string
|
|
18014
|
+
- 'null'
|
|
18003
18015
|
stages:
|
|
18004
18016
|
type: array
|
|
18005
18017
|
description: |-
|
|
@@ -18062,12 +18074,11 @@ components:
|
|
|
18062
18074
|
type: object
|
|
18063
18075
|
additionalProperties: true
|
|
18064
18076
|
traceKeysDuplicate:
|
|
18065
|
-
type:
|
|
18077
|
+
type: boolean
|
|
18066
18078
|
description: |-
|
|
18067
|
-
|
|
18068
|
-
|
|
18069
|
-
|
|
18070
|
-
type: string
|
|
18079
|
+
When true, two or more records in this preview share a trace key, so
|
|
18080
|
+
the export's `traceKeyTemplate` does not identify records uniquely.
|
|
18081
|
+
Absent whenever `dataRecordTraceKeys` is absent.
|
|
18071
18082
|
PreviewRequest:
|
|
18072
18083
|
type: object
|
|
18073
18084
|
description: Request body for previewing export data
|
package/dist/flow.yml
CHANGED
|
@@ -8824,17 +8824,27 @@ components:
|
|
|
8824
8824
|
dataURIs:
|
|
8825
8825
|
type: array
|
|
8826
8826
|
description: |-
|
|
8827
|
-
|
|
8828
|
-
|
|
8827
|
+
Links to the records in the source system. On an export preview, one
|
|
8828
|
+
entry per record in `data`: a link to the record when one is available
|
|
8829
|
+
(for example the export's `dataURITemplate` rendered for that record),
|
|
8830
|
+
otherwise `null`, as on an HTTP export without a template; absent when
|
|
8831
|
+
the preview returned no records and when a `mockOutput` in the request
|
|
8832
|
+
body answered.
|
|
8829
8833
|
items:
|
|
8830
|
-
type:
|
|
8834
|
+
type:
|
|
8835
|
+
- string
|
|
8836
|
+
- 'null'
|
|
8831
8837
|
dataRecordTraceKeys:
|
|
8832
8838
|
type: array
|
|
8833
8839
|
description: |-
|
|
8834
8840
|
Trace keys for the records in this preview — one per record,
|
|
8835
|
-
correlating stage outputs to their source record
|
|
8841
|
+
correlating stage outputs to their source record; `null` for a record
|
|
8842
|
+
that has no key. Absent when the preview returned no records and
|
|
8843
|
+
captured no keys, and when a `mockOutput` in the request body answered.
|
|
8836
8844
|
items:
|
|
8837
|
-
type:
|
|
8845
|
+
type:
|
|
8846
|
+
- string
|
|
8847
|
+
- 'null'
|
|
8838
8848
|
stages:
|
|
8839
8849
|
type: array
|
|
8840
8850
|
description: |-
|
|
@@ -8897,12 +8907,11 @@ components:
|
|
|
8897
8907
|
type: object
|
|
8898
8908
|
additionalProperties: true
|
|
8899
8909
|
traceKeysDuplicate:
|
|
8900
|
-
type:
|
|
8910
|
+
type: boolean
|
|
8901
8911
|
description: |-
|
|
8902
|
-
|
|
8903
|
-
|
|
8904
|
-
|
|
8905
|
-
type: string
|
|
8912
|
+
When true, two or more records in this preview share a trace key, so
|
|
8913
|
+
the export's `traceKeyTemplate` does not identify records uniquely.
|
|
8914
|
+
Absent whenever `dataRecordTraceKeys` is absent.
|
|
8906
8915
|
DependencyEntry:
|
|
8907
8916
|
type: object
|
|
8908
8917
|
description: A single resource that depends on the queried resource.
|
package/dist/import.yml
CHANGED
|
@@ -5681,6 +5681,7 @@ components:
|
|
|
5681
5681
|
description: |-
|
|
5682
5682
|
Target table for the bulk load.
|
|
5683
5683
|
Must reference an existing table accessible with the connection's credentials; schema-qualified names are supported.
|
|
5684
|
+
On Snowflake, the temporary staging table that precedes the load is created in the connection's default schema (`rdbms.snowflake.schema` on the connection), not in this table's schema.
|
|
5684
5685
|
x-celigo-ai-guidance:
|
|
5685
5686
|
- |-
|
|
5686
5687
|
The name of the target table within the relational database management system
|
|
@@ -8899,6 +8900,11 @@ components:
|
|
|
8899
8900
|
- Use `"csv"` for flat tabular data, spreadsheet-like records
|
|
8900
8901
|
- Use `"xml"` for XML-based integrations, SOAP services
|
|
8901
8902
|
- Use `"xlsx"` for Excel-compatible outputs
|
|
8903
|
+
- |-
|
|
8904
|
+
What writes the file's content differs by type: `csv` and `xlsx` are mapping-driven
|
|
8905
|
+
(the mapped record's fields become the columns); `json` is mapping-driven too unless
|
|
8906
|
+
`json.body` is set; `xml` always needs the `xml.body` template; `filedefinition` takes
|
|
8907
|
+
the file definition's rules. Pick the type first, then author only that type's block.
|
|
8902
8908
|
encoding:
|
|
8903
8909
|
type: string
|
|
8904
8910
|
enum:
|
|
@@ -9040,6 +9046,41 @@ components:
|
|
|
9040
9046
|
type: object
|
|
9041
9047
|
description: JSON-specific configuration. Only used when `type` is `"json"`.
|
|
9042
9048
|
properties:
|
|
9049
|
+
body:
|
|
9050
|
+
type: string
|
|
9051
|
+
x-celigo-agent:
|
|
9052
|
+
- handlebars
|
|
9053
|
+
description: |-
|
|
9054
|
+
Handlebars template for the generated JSON document — the *Build JSON document*
|
|
9055
|
+
editor. Rendered once per file against the records of the page, after the mapping:
|
|
9056
|
+
text before the `{{#each batch_of_records}}` loop is the file's header, the loop
|
|
9057
|
+
body is written once per record, text after it is the footer; under
|
|
9058
|
+
`aggregation.type: all` the loop's output for every page of the run is written
|
|
9059
|
+
between one header and one footer. Omit it to write the mapped records as a JSON
|
|
9060
|
+
array per file.
|
|
9061
|
+
x-celigo-ai-guidance:
|
|
9062
|
+
- |-
|
|
9063
|
+
Leave this out unless the user needs a custom document shape: with no body the
|
|
9064
|
+
platform writes each file as a JSON array of the mapped records. A saved body
|
|
9065
|
+
overrides that — a leftover `{}` body writes literal `{}` files.
|
|
9066
|
+
- |-
|
|
9067
|
+
When a body is needed, wrap the per-record part in `{{#each batch_of_records}} …
|
|
9068
|
+
{{/each}}` and address the record inside it as `record.<field>` (a grouped record
|
|
9069
|
+
as `{{#each rows}} … {{/each}}`); `{{{jsonSerialize record}}}` with
|
|
9070
|
+
`{{#unless @last}},{{/unless}}` between elements is the common form. The JSON
|
|
9071
|
+
generator recognises only that loop: a `{{#each data}}` loop is written whole per
|
|
9072
|
+
page and the pages are joined with commas (`[…],[…]`, invalid JSON under one file
|
|
9073
|
+
per run). At the root there is no `record`: `{{record.<field>}}` or a bare
|
|
9074
|
+
`{{<field>}}` outside the loop renders empty, while `batch_of_records` is in
|
|
9075
|
+
scope (`batch_of_records.0.record.<field>` is the first record when a header needs
|
|
9076
|
+
it). A body with no loop is rendered whole once per page — `{"id": {{record.id}} }`
|
|
9077
|
+
becomes `{"id": }` per page — and under `aggregation.type: all` the pages are
|
|
9078
|
+
joined with commas (`{"id": },{"id": }`), which is invalid JSON even when each
|
|
9079
|
+
page's own text was valid.
|
|
9080
|
+
- |-
|
|
9081
|
+
The template renders against the page whatever `http.batchSize` says, and `http.body`
|
|
9082
|
+
plays no part in the file's content. The field's editor Preview does not run the
|
|
9083
|
+
generator, so judge the body by a run.
|
|
9043
9084
|
resourcePath:
|
|
9044
9085
|
type: string
|
|
9045
9086
|
description: JSONPath expression to locate records within the JSON structure.
|
|
@@ -9047,6 +9088,39 @@ components:
|
|
|
9047
9088
|
type: object
|
|
9048
9089
|
description: XML-specific configuration. Only used when `type` is `"xml"`.
|
|
9049
9090
|
properties:
|
|
9091
|
+
body:
|
|
9092
|
+
type: string
|
|
9093
|
+
x-celigo-agent:
|
|
9094
|
+
- handlebars
|
|
9095
|
+
description: |-
|
|
9096
|
+
Handlebars template for the generated XML document — the *Build XML document*
|
|
9097
|
+
editor. Rendered once per file against the records of the page, after the mapping:
|
|
9098
|
+
text before the record loop is the file's header, the loop body is written once per
|
|
9099
|
+
record, text after it is the footer; under `aggregation.type: all` the loop's
|
|
9100
|
+
output for every page of the run is written between one header and one footer.
|
|
9101
|
+
Must be set when `type` is `"xml"` — there is no mapping-driven XML.
|
|
9102
|
+
x-celigo-ai-guidance:
|
|
9103
|
+
- |-
|
|
9104
|
+
Author it as header + record loop + footer: the XML declaration and root element
|
|
9105
|
+
around `{{#each batch_of_records}} … {{/each}}`, with the record addressed inside
|
|
9106
|
+
the loop as `record.<field>` (a grouped record as `{{#each rows}} … {{/each}}`,
|
|
9107
|
+
nested elements as `{{#each record.<list>}} … {{/each}}`). The XML generator also
|
|
9108
|
+
accepts the legacy `{{#each data}} … {{/each}}`, which binds the record itself as
|
|
9109
|
+
`this` (`{{<field>}}`). At the root there is no `record`: `{{record.<field>}}` or
|
|
9110
|
+
a bare `{{<field>}}` outside the loop renders empty, while `batch_of_records` is in
|
|
9111
|
+
scope (`batch_of_records.0.record.<field>` is the first record when a header needs
|
|
9112
|
+
it). A body with no loop is rendered whole once per page — `<root>{{record.id}}</root>`
|
|
9113
|
+
becomes `<root></root>` per page — and under `aggregation.type: all` the pages are
|
|
9114
|
+
concatenated into one multi-root file (`<root></root><root></root>`); the import
|
|
9115
|
+
form does not let a one-file-per-run XML template without an each block save,
|
|
9116
|
+
while an API save writes that file.
|
|
9117
|
+
- |-
|
|
9118
|
+
The template renders against the page whatever `http.batchSize` says, and on an
|
|
9119
|
+
HTTP file-provider import `http.body` plays no part in the file's content. The
|
|
9120
|
+
field's editor Preview does not run the generator, so judge the body by a run.
|
|
9121
|
+
- |-
|
|
9122
|
+
Saving `type: xml` without this field fails with 422 `missing_required_field`
|
|
9123
|
+
("required field, file.xml.body is missing.").
|
|
9050
9124
|
resourcePath:
|
|
9051
9125
|
type: string
|
|
9052
9126
|
description: XPath expression to locate records within the XML structure.
|
|
@@ -9337,6 +9411,19 @@ components:
|
|
|
9337
9411
|
description: Provider-native ID of the storage root the backup relative path resolves against; set when pathMode is relativePath.
|
|
9338
9412
|
examples:
|
|
9339
9413
|
- 1qU1hvFarBFMb4-twqKm1rR5o_6j9vs9g
|
|
9414
|
+
if:
|
|
9415
|
+
properties:
|
|
9416
|
+
type:
|
|
9417
|
+
const: xml
|
|
9418
|
+
required:
|
|
9419
|
+
- type
|
|
9420
|
+
then:
|
|
9421
|
+
required:
|
|
9422
|
+
- xml
|
|
9423
|
+
properties:
|
|
9424
|
+
xml:
|
|
9425
|
+
required:
|
|
9426
|
+
- body
|
|
9340
9427
|
FileSystem:
|
|
9341
9428
|
type: object
|
|
9342
9429
|
description: |-
|
package/dist/mcp-server.yml
CHANGED
|
@@ -8103,9 +8103,21 @@ components:
|
|
|
8103
8103
|
- COMPUTE_WH
|
|
8104
8104
|
schema:
|
|
8105
8105
|
type: string
|
|
8106
|
-
description:
|
|
8107
|
-
Default
|
|
8108
|
-
|
|
8106
|
+
description: |-
|
|
8107
|
+
Default schema for the session: unqualified table names in queries resolve here, and
|
|
8108
|
+
optimized bulk load imports create their temporary staging table here even when the
|
|
8109
|
+
destination table is schema-qualified — so the connection's role must be able to
|
|
8110
|
+
create that table in it. When blank, optimized bulk load uses PUBLIC.
|
|
8111
|
+
x-celigo-ai-guidance:
|
|
8112
|
+
- |-
|
|
8113
|
+
When this names a schema the session cannot resolve — Snowflake reports it as not
|
|
8114
|
+
existing or not authorized for the role, and the session is left without a current
|
|
8115
|
+
schema — every optimized bulk load fails at the staging step with code `query_fail`
|
|
8116
|
+
and the message "Failed to run the bulk load query. Err: [TempTableQuery] The
|
|
8117
|
+
provided schema is invalid: <this value>" (the connector's rewrite of Snowflake's
|
|
8118
|
+
"This session does not have a current schema"). Fix: set this to a schema the role
|
|
8119
|
+
can create the staging table in — normally the destination table's own schema — or
|
|
8120
|
+
point the import at a second Snowflake connection with that default schema.
|
|
8109
8121
|
examples:
|
|
8110
8122
|
- PUBLIC
|
|
8111
8123
|
role:
|
package/dist/tool.yml
CHANGED
|
@@ -10658,9 +10658,21 @@ components:
|
|
|
10658
10658
|
- COMPUTE_WH
|
|
10659
10659
|
schema:
|
|
10660
10660
|
type: string
|
|
10661
|
-
description:
|
|
10662
|
-
Default
|
|
10663
|
-
|
|
10661
|
+
description: |-
|
|
10662
|
+
Default schema for the session: unqualified table names in queries resolve here, and
|
|
10663
|
+
optimized bulk load imports create their temporary staging table here even when the
|
|
10664
|
+
destination table is schema-qualified — so the connection's role must be able to
|
|
10665
|
+
create that table in it. When blank, optimized bulk load uses PUBLIC.
|
|
10666
|
+
x-celigo-ai-guidance:
|
|
10667
|
+
- |-
|
|
10668
|
+
When this names a schema the session cannot resolve — Snowflake reports it as not
|
|
10669
|
+
existing or not authorized for the role, and the session is left without a current
|
|
10670
|
+
schema — every optimized bulk load fails at the staging step with code `query_fail`
|
|
10671
|
+
and the message "Failed to run the bulk load query. Err: [TempTableQuery] The
|
|
10672
|
+
provided schema is invalid: <this value>" (the connector's rewrite of Snowflake's
|
|
10673
|
+
"This session does not have a current schema"). Fix: set this to a schema the role
|
|
10674
|
+
can create the staging table in — normally the destination table's own schema — or
|
|
10675
|
+
point the import at a second Snowflake connection with that default schema.
|
|
10664
10676
|
examples:
|
|
10665
10677
|
- PUBLIC
|
|
10666
10678
|
role:
|
|
@@ -17556,6 +17568,7 @@ components:
|
|
|
17556
17568
|
description: |-
|
|
17557
17569
|
Target table for the bulk load.
|
|
17558
17570
|
Must reference an existing table accessible with the connection's credentials; schema-qualified names are supported.
|
|
17571
|
+
On Snowflake, the temporary staging table that precedes the load is created in the connection's default schema (`rdbms.snowflake.schema` on the connection), not in this table's schema.
|
|
17559
17572
|
x-celigo-ai-guidance:
|
|
17560
17573
|
- |-
|
|
17561
17574
|
The name of the target table within the relational database management system
|
|
@@ -20774,6 +20787,11 @@ components:
|
|
|
20774
20787
|
- Use `"csv"` for flat tabular data, spreadsheet-like records
|
|
20775
20788
|
- Use `"xml"` for XML-based integrations, SOAP services
|
|
20776
20789
|
- Use `"xlsx"` for Excel-compatible outputs
|
|
20790
|
+
- |-
|
|
20791
|
+
What writes the file's content differs by type: `csv` and `xlsx` are mapping-driven
|
|
20792
|
+
(the mapped record's fields become the columns); `json` is mapping-driven too unless
|
|
20793
|
+
`json.body` is set; `xml` always needs the `xml.body` template; `filedefinition` takes
|
|
20794
|
+
the file definition's rules. Pick the type first, then author only that type's block.
|
|
20777
20795
|
encoding:
|
|
20778
20796
|
type: string
|
|
20779
20797
|
enum:
|
|
@@ -20915,6 +20933,41 @@ components:
|
|
|
20915
20933
|
type: object
|
|
20916
20934
|
description: JSON-specific configuration. Only used when `type` is `"json"`.
|
|
20917
20935
|
properties:
|
|
20936
|
+
body:
|
|
20937
|
+
type: string
|
|
20938
|
+
x-celigo-agent:
|
|
20939
|
+
- handlebars
|
|
20940
|
+
description: |-
|
|
20941
|
+
Handlebars template for the generated JSON document — the *Build JSON document*
|
|
20942
|
+
editor. Rendered once per file against the records of the page, after the mapping:
|
|
20943
|
+
text before the `{{#each batch_of_records}}` loop is the file's header, the loop
|
|
20944
|
+
body is written once per record, text after it is the footer; under
|
|
20945
|
+
`aggregation.type: all` the loop's output for every page of the run is written
|
|
20946
|
+
between one header and one footer. Omit it to write the mapped records as a JSON
|
|
20947
|
+
array per file.
|
|
20948
|
+
x-celigo-ai-guidance:
|
|
20949
|
+
- |-
|
|
20950
|
+
Leave this out unless the user needs a custom document shape: with no body the
|
|
20951
|
+
platform writes each file as a JSON array of the mapped records. A saved body
|
|
20952
|
+
overrides that — a leftover `{}` body writes literal `{}` files.
|
|
20953
|
+
- |-
|
|
20954
|
+
When a body is needed, wrap the per-record part in `{{#each batch_of_records}} …
|
|
20955
|
+
{{/each}}` and address the record inside it as `record.<field>` (a grouped record
|
|
20956
|
+
as `{{#each rows}} … {{/each}}`); `{{{jsonSerialize record}}}` with
|
|
20957
|
+
`{{#unless @last}},{{/unless}}` between elements is the common form. The JSON
|
|
20958
|
+
generator recognises only that loop: a `{{#each data}}` loop is written whole per
|
|
20959
|
+
page and the pages are joined with commas (`[…],[…]`, invalid JSON under one file
|
|
20960
|
+
per run). At the root there is no `record`: `{{record.<field>}}` or a bare
|
|
20961
|
+
`{{<field>}}` outside the loop renders empty, while `batch_of_records` is in
|
|
20962
|
+
scope (`batch_of_records.0.record.<field>` is the first record when a header needs
|
|
20963
|
+
it). A body with no loop is rendered whole once per page — `{"id": {{record.id}} }`
|
|
20964
|
+
becomes `{"id": }` per page — and under `aggregation.type: all` the pages are
|
|
20965
|
+
joined with commas (`{"id": },{"id": }`), which is invalid JSON even when each
|
|
20966
|
+
page's own text was valid.
|
|
20967
|
+
- |-
|
|
20968
|
+
The template renders against the page whatever `http.batchSize` says, and `http.body`
|
|
20969
|
+
plays no part in the file's content. The field's editor Preview does not run the
|
|
20970
|
+
generator, so judge the body by a run.
|
|
20918
20971
|
resourcePath:
|
|
20919
20972
|
type: string
|
|
20920
20973
|
description: JSONPath expression to locate records within the JSON structure.
|
|
@@ -20922,6 +20975,39 @@ components:
|
|
|
20922
20975
|
type: object
|
|
20923
20976
|
description: XML-specific configuration. Only used when `type` is `"xml"`.
|
|
20924
20977
|
properties:
|
|
20978
|
+
body:
|
|
20979
|
+
type: string
|
|
20980
|
+
x-celigo-agent:
|
|
20981
|
+
- handlebars
|
|
20982
|
+
description: |-
|
|
20983
|
+
Handlebars template for the generated XML document — the *Build XML document*
|
|
20984
|
+
editor. Rendered once per file against the records of the page, after the mapping:
|
|
20985
|
+
text before the record loop is the file's header, the loop body is written once per
|
|
20986
|
+
record, text after it is the footer; under `aggregation.type: all` the loop's
|
|
20987
|
+
output for every page of the run is written between one header and one footer.
|
|
20988
|
+
Must be set when `type` is `"xml"` — there is no mapping-driven XML.
|
|
20989
|
+
x-celigo-ai-guidance:
|
|
20990
|
+
- |-
|
|
20991
|
+
Author it as header + record loop + footer: the XML declaration and root element
|
|
20992
|
+
around `{{#each batch_of_records}} … {{/each}}`, with the record addressed inside
|
|
20993
|
+
the loop as `record.<field>` (a grouped record as `{{#each rows}} … {{/each}}`,
|
|
20994
|
+
nested elements as `{{#each record.<list>}} … {{/each}}`). The XML generator also
|
|
20995
|
+
accepts the legacy `{{#each data}} … {{/each}}`, which binds the record itself as
|
|
20996
|
+
`this` (`{{<field>}}`). At the root there is no `record`: `{{record.<field>}}` or
|
|
20997
|
+
a bare `{{<field>}}` outside the loop renders empty, while `batch_of_records` is in
|
|
20998
|
+
scope (`batch_of_records.0.record.<field>` is the first record when a header needs
|
|
20999
|
+
it). A body with no loop is rendered whole once per page — `<root>{{record.id}}</root>`
|
|
21000
|
+
becomes `<root></root>` per page — and under `aggregation.type: all` the pages are
|
|
21001
|
+
concatenated into one multi-root file (`<root></root><root></root>`); the import
|
|
21002
|
+
form does not let a one-file-per-run XML template without an each block save,
|
|
21003
|
+
while an API save writes that file.
|
|
21004
|
+
- |-
|
|
21005
|
+
The template renders against the page whatever `http.batchSize` says, and on an
|
|
21006
|
+
HTTP file-provider import `http.body` plays no part in the file's content. The
|
|
21007
|
+
field's editor Preview does not run the generator, so judge the body by a run.
|
|
21008
|
+
- |-
|
|
21009
|
+
Saving `type: xml` without this field fails with 422 `missing_required_field`
|
|
21010
|
+
("required field, file.xml.body is missing.").
|
|
20925
21011
|
resourcePath:
|
|
20926
21012
|
type: string
|
|
20927
21013
|
description: XPath expression to locate records within the XML structure.
|
|
@@ -21212,6 +21298,19 @@ components:
|
|
|
21212
21298
|
description: Provider-native ID of the storage root the backup relative path resolves against; set when pathMode is relativePath.
|
|
21213
21299
|
examples:
|
|
21214
21300
|
- 1qU1hvFarBFMb4-twqKm1rR5o_6j9vs9g
|
|
21301
|
+
if:
|
|
21302
|
+
properties:
|
|
21303
|
+
type:
|
|
21304
|
+
const: xml
|
|
21305
|
+
required:
|
|
21306
|
+
- type
|
|
21307
|
+
then:
|
|
21308
|
+
required:
|
|
21309
|
+
- xml
|
|
21310
|
+
properties:
|
|
21311
|
+
xml:
|
|
21312
|
+
required:
|
|
21313
|
+
- body
|
|
21215
21314
|
FileSystem:
|
|
21216
21315
|
type: object
|
|
21217
21316
|
description: |-
|
|
@@ -38239,7 +38338,9 @@ components:
|
|
|
38239
38338
|
`POST /v1/exports/preview` reads the `mockOutput` in its request body, not the saved one. For
|
|
38240
38339
|
an export the preview supports (an HTTP export, for example), a body that carries it (as an
|
|
38241
38340
|
export read back with GET does) returns that snapshot as a lone `parse` stage without calling
|
|
38242
|
-
the source; remove `mockOutput` from the body to preview live records.
|
|
38341
|
+
the source; remove `mockOutput` from the body to preview live records. A body mock with an
|
|
38342
|
+
empty or missing `page_of_records` still skips the source and returns 200 with empty `data`
|
|
38343
|
+
and an empty `parse` stage.
|
|
38243
38344
|
|
|
38244
38345
|
**Limitations**
|
|
38245
38346
|
|