@celigo/api-specs 0.2.150 → 0.2.151

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 CHANGED
@@ -6366,7 +6366,12 @@ components:
6366
6366
  type: boolean
6367
6367
  description: |
6368
6368
  When true, uses iClient-managed OAuth credentials (clientId/clientSecret)
6369
- instead of the values in this configuration.
6369
+ instead of the values in this configuration. The iClient is the connection's
6370
+ `_iClientId` — on an HTTP connection `http._iClientId`, beside `auth`, not inside it —
6371
+ and it also supplies the grant type and the authorization and token endpoints, so a
6372
+ create needs only `auth.type: "oauth"`, `auth.oauth.useIClientFields: true` and the
6373
+ iClient id. The connection holds no tokens until a person completes the authorization
6374
+ in a browser.
6370
6375
  oauth1:
6371
6376
  type: object
6372
6377
  description: |-
@@ -6495,7 +6500,7 @@ components:
6495
6500
  x-celigo-ai-guidance:
6496
6501
  - |-
6497
6502
  ## OAUTH 2.0 GRANT TYPES
6498
- - "authorizationcode" — Authorization Code flow (browser-based user consent).
6503
+ - "authorizecode" — Authorization Code flow (browser-based user consent).
6499
6504
  Requires authURI, tokenURI, and user authorization via browser.
6500
6505
  - "clientcredentials" — Client Credentials flow (server-to-server, no user).
6501
6506
  Requires tokenURI, clientId, clientSecret.
@@ -7086,7 +7091,11 @@ components:
7086
7091
  description: |
7087
7092
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
7088
7093
  On update, the mask sent back keeps the stored token; a new value replaces it.
7089
- Required unless automatic token refresh is configured.
7094
+ Required unless automatic token refresh is configured: a token block without a
7095
+ token must carry a `refreshMethod`, so a create or update that sends neither fails
7096
+ with 422 `Expected field: refreshMethod to be present.` To create a static-token
7097
+ connection before the real token is available, send a placeholder value and
7098
+ replace it later.
7090
7099
  examples:
7091
7100
  - my-api-token-EXAMPLE
7092
7101
  location:
@@ -9292,7 +9301,11 @@ components:
9292
9301
  description: |
9293
9302
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
9294
9303
  On update, the mask sent back keeps the stored token; a new value replaces it.
9295
- Required unless automatic token refresh is configured.
9304
+ Required unless automatic token refresh is configured: a token block without a
9305
+ token must carry a `refreshMethod`, so a create or update that sends neither fails
9306
+ with 422 `Expected field: refreshMethod to be present.` To create a static-token
9307
+ connection before the real token is available, send a placeholder value and
9308
+ replace it later.
9296
9309
  examples:
9297
9310
  - my-api-token-EXAMPLE
9298
9311
  location:
@@ -5196,7 +5196,12 @@ components:
5196
5196
  type: boolean
5197
5197
  description: |
5198
5198
  When true, uses iClient-managed OAuth credentials (clientId/clientSecret)
5199
- instead of the values in this configuration.
5199
+ instead of the values in this configuration. The iClient is the connection's
5200
+ `_iClientId` — on an HTTP connection `http._iClientId`, beside `auth`, not inside it —
5201
+ and it also supplies the grant type and the authorization and token endpoints, so a
5202
+ create needs only `auth.type: "oauth"`, `auth.oauth.useIClientFields: true` and the
5203
+ iClient id. The connection holds no tokens until a person completes the authorization
5204
+ in a browser.
5200
5205
  oauth1:
5201
5206
  type: object
5202
5207
  description: |-
@@ -5325,7 +5330,7 @@ components:
5325
5330
  x-celigo-ai-guidance:
5326
5331
  - |-
5327
5332
  ## OAUTH 2.0 GRANT TYPES
5328
- - "authorizationcode" — Authorization Code flow (browser-based user consent).
5333
+ - "authorizecode" — Authorization Code flow (browser-based user consent).
5329
5334
  Requires authURI, tokenURI, and user authorization via browser.
5330
5335
  - "clientcredentials" — Client Credentials flow (server-to-server, no user).
5331
5336
  Requires tokenURI, clientId, clientSecret.
@@ -5916,7 +5921,11 @@ components:
5916
5921
  description: |
5917
5922
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
5918
5923
  On update, the mask sent back keeps the stored token; a new value replaces it.
5919
- Required unless automatic token refresh is configured.
5924
+ Required unless automatic token refresh is configured: a token block without a
5925
+ token must carry a `refreshMethod`, so a create or update that sends neither fails
5926
+ with 422 `Expected field: refreshMethod to be present.` To create a static-token
5927
+ connection before the real token is available, send a placeholder value and
5928
+ replace it later.
5920
5929
  examples:
5921
5930
  - my-api-token-EXAMPLE
5922
5931
  location:
@@ -8122,7 +8131,11 @@ components:
8122
8131
  description: |
8123
8132
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
8124
8133
  On update, the mask sent back keeps the stored token; a new value replaces it.
8125
- Required unless automatic token refresh is configured.
8134
+ Required unless automatic token refresh is configured: a token block without a
8135
+ token must carry a `refreshMethod`, so a create or update that sends neither fails
8136
+ with 422 `Expected field: refreshMethod to be present.` To create a static-token
8137
+ connection before the real token is available, send a placeholder value and
8138
+ replace it later.
8126
8139
  examples:
8127
8140
  - my-api-token-EXAMPLE
8128
8141
  location:
package/dist/enduser.yml CHANGED
@@ -3308,7 +3308,12 @@ components:
3308
3308
  type: boolean
3309
3309
  description: |
3310
3310
  When true, uses iClient-managed OAuth credentials (clientId/clientSecret)
3311
- instead of the values in this configuration.
3311
+ instead of the values in this configuration. The iClient is the connection's
3312
+ `_iClientId` — on an HTTP connection `http._iClientId`, beside `auth`, not inside it —
3313
+ and it also supplies the grant type and the authorization and token endpoints, so a
3314
+ create needs only `auth.type: "oauth"`, `auth.oauth.useIClientFields: true` and the
3315
+ iClient id. The connection holds no tokens until a person completes the authorization
3316
+ in a browser.
3312
3317
  oauth1:
3313
3318
  type: object
3314
3319
  description: |-
@@ -3437,7 +3442,7 @@ components:
3437
3442
  x-celigo-ai-guidance:
3438
3443
  - |-
3439
3444
  ## OAUTH 2.0 GRANT TYPES
3440
- - "authorizationcode" — Authorization Code flow (browser-based user consent).
3445
+ - "authorizecode" — Authorization Code flow (browser-based user consent).
3441
3446
  Requires authURI, tokenURI, and user authorization via browser.
3442
3447
  - "clientcredentials" — Client Credentials flow (server-to-server, no user).
3443
3448
  Requires tokenURI, clientId, clientSecret.
@@ -4028,7 +4033,11 @@ components:
4028
4033
  description: |
4029
4034
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
4030
4035
  On update, the mask sent back keeps the stored token; a new value replaces it.
4031
- Required unless automatic token refresh is configured.
4036
+ Required unless automatic token refresh is configured: a token block without a
4037
+ token must carry a `refreshMethod`, so a create or update that sends neither fails
4038
+ with 422 `Expected field: refreshMethod to be present.` To create a static-token
4039
+ connection before the real token is available, send a placeholder value and
4040
+ replace it later.
4032
4041
  examples:
4033
4042
  - my-api-token-EXAMPLE
4034
4043
  location:
@@ -6234,7 +6243,11 @@ components:
6234
6243
  description: |
6235
6244
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
6236
6245
  On update, the mask sent back keeps the stored token; a new value replaces it.
6237
- Required unless automatic token refresh is configured.
6246
+ Required unless automatic token refresh is configured: a token block without a
6247
+ token must carry a `refreshMethod`, so a create or update that sends neither fails
6248
+ with 422 `Expected field: refreshMethod to be present.` To create a static-token
6249
+ connection before the real token is available, send a placeholder value and
6250
+ replace it later.
6238
6251
  examples:
6239
6252
  - my-api-token-EXAMPLE
6240
6253
  location:
package/dist/export.yml CHANGED
@@ -982,36 +982,40 @@ components:
982
982
  Delta:
983
983
  type: object
984
984
  description: |-
985
- Configures incremental exports that retrieve only records created or modified since the last
986
- successful run. Required when the export's type is "delta"; omit for other export types.
987
- The platform-managed last-successful-run timestamp (exposed as {{lastExportDateTime}}) is the
988
- lower bound, and after a failed run the next run reuses the last successful timestamp so
989
- changed records are not missed. A first run is not a full export: with no `startDate`, its
990
- {{lastExportDateTime}} is the run's own timestamp (the value {{currentExportDateTime}} also
991
- holds), so it picks up no earlier changes. Set `startDate` to reach back further. On success,
992
- when `POST /v1/flows/{_id}/run` sends `export.endDate`, the flow's checkpoint is left at that
993
- value, so an end date in the past moves the next run's lower bound back.
985
+ Configures incremental exports that retrieve only records created or modified since the
986
+ flow's delta checkpoint; omit it for other export types. Adaptors that compare a record field
987
+ name it in `dateField`, while HTTP exports and SQL queries carry {{lastExportDateTime}} in the
988
+ request and save without a delta object. Each run's window runs from {{lastExportDateTime}}
989
+ (the checkpoint) to {{currentExportDateTime}} (the time the run started). A first run is not a
990
+ full export: with no `startDate`, its {{lastExportDateTime}} is the run's own timestamp, so it
991
+ picks up no earlier changes. The checkpoint moves to a run's window end only when the run
992
+ exports records, so a run that exports nothing leaves it where it was, and after a failed run
993
+ the next run reuses the last checkpoint. On success, when `POST /v1/flows/{_id}/run` sends
994
+ `export.endDate`, the flow's checkpoint is left at that value, so an end date in the past
995
+ moves the next run's lower bound back.
994
996
  x-celigo-ai-guidance:
995
997
  - |-
996
- This object is REQUIRED when the export's type field is set to "delta" and
997
- should not be included for other export types.
998
+ Omit this object for export types other than "delta". An HTTP export with type
999
+ "delta" saves without it, since the request carries {{lastExportDateTime}}, but
1000
+ set ``startDate`` anyway: without it the first run's window is empty.
998
1001
  Delta exports are designed for efficient synchronization by retrieving only
999
1002
  records that have been created or modified since the last execution.
1000
1003
  - |-
1001
1004
  ## REQUIRED FIELDS
1002
1005
  - ``startDate`` -- the initial cutoff timestamp the platform uses on the
1003
1006
  first run (and as the floor for ``{{lastExportDateTime}}`` thereafter).
1004
- Adapter-specific validators (e.g. NetSuite's ``transformTwoDotZero``)
1005
- reject delta configs that omit ``startDate`` with
1006
- ``missing_delta_startDate``, so this is effectively required for every
1007
- delta export.
1007
+ Without it, a new flow's first run renders ``{{lastExportDateTime}}`` as
1008
+ the run's own time, so the first run exports nothing (verified on HTTP
1009
+ and RDBMS delta exports). Adapter-specific validators (e.g. NetSuite's
1010
+ ``transformTwoDotZero``) reject delta configs that omit ``startDate``
1011
+ with ``missing_delta_startDate``, so set it on every delta export.
1008
1012
  - |-
1009
1013
  ## DEFAULT CUTOFF BEHAVIOR (NO USER-SUPPLIED CUTOFF)
1010
1014
  When the user prompt does not specify an explicit cutoff timestamp,
1011
1015
  default ``startDate`` to **today at midnight UTC** in ISO-8601 format
1012
1016
  (e.g. ``"2026-05-14T00:00:00.000Z"``). This means the first run picks
1013
1017
  up records changed today; subsequent runs use the platform-managed
1014
- ``{{lastExportDateTime}}`` (the last successful run timestamp).
1018
+ ``{{lastExportDateTime}}`` (the end of the last run that exported records).
1015
1019
 
1016
1020
  - First run: filters records changed since ``startDate``.
1017
1021
  - Subsequent runs: uses ``{{lastExportDateTime}}`` as the lower bound;
@@ -1024,18 +1028,28 @@ components:
1024
1028
  - For HTTP exports: Use {{lastExportDateTime}} variable in relativeURI or body
1025
1029
  - For specific application adapters: Use dateField to specify timestamp fields
1026
1030
 
1027
- 2. The system automatically maintains the last successful run timestamp
1031
+ 2. The system automatically maintains the checkpoint
1028
1032
  - No need to store or manage timestamps in your own code
1029
1033
  - A first run without ``startDate`` fetches nothing older than the run itself
1030
- - Subsequent runs use this timestamp as the starting point
1034
+ - A run that exports records moves the checkpoint to its window end
1035
+ ({{currentExportDateTime}}), where the next run starts
1036
+ - Use {{lastExportDateTime}} as the lower bound; {{currentExportDateTime}} as the
1037
+ lower bound asks for records changed after the run started, so every run exports nothing
1031
1038
 
1032
1039
  3. Error handling and recovery:
1033
1040
  - If an export fails, the next run uses the last successful timestamp
1034
1041
  - Records created/modified during a failed run will be included in the next run
1042
+ - A run that exports nothing leaves the checkpoint where it was, so after a stretch of
1043
+ empty runs the next run that finds records reaches back to the last run that exported
1044
+ any: once the cause is fixed, no backfill run is needed
1045
+ - A run given its own window (export.startDate / export.endDate on
1046
+ POST /v1/flows/{_id}/run) that exports records leaves the checkpoint at endDate,
1047
+ even a past one, so the next run re-reads everything after it
1035
1048
  - The lagOffset field can be used to handle edge cases
1036
1049
  - |-
1037
- This object is REQUIRED when the export's type field is set to "delta" and
1038
- should not be included for other export types.
1050
+ Omit this object for export types other than "delta". An HTTP export with type
1051
+ "delta" saves without it, since the request carries {{lastExportDateTime}}, but
1052
+ set ``startDate`` anyway: without it the first run's window is empty.
1039
1053
  Delta exports are designed for efficient synchronization by retrieving only
1040
1054
  records that have been created or modified since the last execution.
1041
1055
  properties:
@@ -1051,8 +1065,9 @@ components:
1051
1065
  If the flow's own downstream steps update the exported records, add export criteria
1052
1066
  that exclude already-processed records (or use a creation-time field for process-once
1053
1067
  flows) so each run doesn't re-export what the previous run wrote. Not supported on
1054
- HTTP exports: embed {{lastExportDateTime}} in the relativeURI or body instead;
1055
- including dateField there makes the configuration invalid. For Salesforce this
1068
+ HTTP exports: embed {{lastExportDateTime}} in the relativeURI or body instead; an HTTP
1069
+ export saved with dateField is refused with 422 "Unsupported dateField in
1070
+ export.delta.dateField". For Salesforce this
1056
1071
  field is required and defaults to the standard timestamp fields (LastModifiedDate,
1057
1072
  CreatedDate, SystemModstamp, LastActivityDate, LastViewedDate, LastReferencedDate) plus
1058
1073
  any custom timestamp fields.
@@ -1091,7 +1106,8 @@ components:
1091
1106
  ###CRITICAL ADAPTOR-SPECIFIC INSTRUCTION:
1092
1107
  - The adaptor type is HTTP. For HTTP exports, the "dateField" property MUST NOT be included in the delta configuration.
1093
1108
  - HTTP exports use the {{lastExportDateTime}} variable directly in the relativeURI or body instead of dateField.
1094
- - DO NOT include "dateField" in your response. If you include it, the configuration will be invalid.
1109
+ - DO NOT include "dateField" in your response. If you include it, the save is refused with
1110
+ 422 "Unsupported dateField in export.delta.dateField".
1095
1111
 
1096
1112
  Example HTTP query with implicit delta:
1097
1113
  ```
@@ -1151,10 +1167,10 @@ components:
1151
1167
  dateFormat:
1152
1168
  type: string
1153
1169
  description: |-
1154
- Moment.js format string applied to the cutoff timestamp, including {{lastExportDateTime}}
1155
- when used in HTTP requests. Leave unset unless the source system requires a non-ISO8601
1156
- format; ISO 8601 is used by default. Date-only formats truncate the time portion,
1157
- widening the filter window.
1170
+ Moment.js format string applied to both delta variables, {{lastExportDateTime}} and
1171
+ {{currentExportDateTime}}, in HTTP requests and SQL queries alike. Leave unset unless the
1172
+ source system requires a non-ISO8601 format; by default both render as ISO 8601 UTC with
1173
+ milliseconds. Date-only formats truncate the time portion, widening the filter window.
1158
1174
  x-celigo-ai-guidance:
1159
1175
  - Defines the date/time format expected by the source system's API.
1160
1176
  - |-
@@ -1165,7 +1181,8 @@ components:
1165
1181
  - OPTIONAL: Only needed when the source system doesn't support ISO8601
1166
1182
  - Default: ISO8601 format (YYYY-MM-DDTHH:mm:ss.sssZ)
1167
1183
  - Uses Moment.js formatting tokens
1168
- - Directly affects the format of {{lastExportDateTime}} when used in HTTP requests
1184
+ - Formats both {{lastExportDateTime}} and {{currentExportDateTime}}, in HTTP requests and in
1185
+ SQL queries (an RDBMS delta query receives the formatted value as a quoted literal)
1169
1186
  - |-
1170
1187
  ## IMPLEMENTATION PATTERNS
1171
1188
 
@@ -1249,13 +1266,15 @@ components:
1249
1266
  format: date-time
1250
1267
  description: |-
1251
1268
  Lower-bound cutoff for the first run. Omitting it doesn't export history: the first run
1252
- then starts at its own timestamp. Set it to the earliest change the first run should pick
1253
- up. Subsequent runs use the platform-managed last-successful-run timestamp.
1269
+ then starts at its own timestamp, an empty window. Set it to the earliest change the first
1270
+ run should pick up. Later runs start from the flow's checkpoint, the end of the last run
1271
+ that exported records.
1254
1272
  x-celigo-ai-guidance:
1255
1273
  - |-
1256
1274
  Initial cutoff timestamp for the first export run, in ISO-8601 UTC format (e.g.
1257
1275
  ``"2026-05-14T00:00:00.000Z"``).
1258
- REQUIRED for every delta export -- adapter-specific validators reject delta
1276
+ Set it on every delta export: without it the first run's window is empty (verified
1277
+ on HTTP and RDBMS delta exports), and adapter-specific validators reject delta
1259
1278
  configs without it (e.g.
1260
1279
  NetSuite returns ``missing_delta_startDate`` from the ``transformTwoDotZero`` processor).
1261
1280
  - |-
@@ -1267,10 +1286,11 @@ components:
1267
1286
  flow is being authored.
1268
1287
  - |-
1269
1288
  ## SUBSEQUENT RUNS
1270
- After the first successful run, the platform tracks the actual
1271
- last-run timestamp and exposes it as ``{{lastExportDateTime}}``;
1272
- ``startDate`` becomes the floor used only when the platform
1273
- timestamp is absent (e.g. after a reset).
1289
+ After the first run that exports records, the platform keeps the
1290
+ flow's checkpoint at the end of the last run that exported records
1291
+ and exposes it as ``{{lastExportDateTime}}``; runs that export
1292
+ nothing leave it unchanged. ``startDate`` becomes the floor used
1293
+ only when the platform timestamp is absent (e.g. after a reset).
1274
1294
  - |-
1275
1295
  ## EXAMPLES
1276
1296
  - ``"2026-05-14T00:00:00.000Z"`` -- today at midnight UTC.
@@ -1279,7 +1299,8 @@ components:
1279
1299
  - |-
1280
1300
  Initial cutoff timestamp for the first export run, in ISO-8601 UTC format (e.g.
1281
1301
  ``"2026-05-14T00:00:00.000Z"``).
1282
- REQUIRED for every delta export -- adapter-specific validators reject delta
1302
+ Set it on every delta export: without it the first run's window is empty (verified
1303
+ on HTTP and RDBMS delta exports), and adapter-specific validators reject delta
1283
1304
  configs without it (e.g.
1284
1305
  NetSuite returns ``missing_delta_startDate`` from the ``transformTwoDotZero`` processor).
1285
1306
  examples:
@@ -1420,7 +1441,7 @@ components:
1420
1441
  - exported_to_netsuite
1421
1442
  Webhook:
1422
1443
  type: object
1423
- description: Configuration for webhook listeners that receive data through incoming HTTP requests. Required when the export's `type` is `webhook`; omit for other export types. The platform generates a unique endpoint URL, validates each incoming request using the configured `verify` method, passes the payload to subsequent flow steps, and returns a configurable HTTP response to the caller.
1444
+ description: Configuration for webhook listeners that receive data through incoming HTTP requests. Required when the export's `type` is `webhook`; omit for other export types. Senders POST to the export's listener URL, `https://api.integrator.io/v1/exports/{_id}/data` (or the same path on the account's regional API host); the platform validates each request using the configured `verify` method, passes the payload to subsequent flow steps, and returns a configurable HTTP response to the caller. A request is answered 204 by default when accepted, 401 when it fails verification, and 403 `unable_to_run_flows` while every flow the export feeds is disabled; a refused request is not queued, so the sender must resend it.
1424
1445
  x-celigo-ai-guidance:
1425
1446
  - Configuration object for real-time event listeners that receive data via incoming HTTP requests.
1426
1447
  - |-
@@ -1794,7 +1815,7 @@ components:
1794
1815
  - sha1
1795
1816
  encoding:
1796
1817
  type: string
1797
- description: Encoding of the HMAC signature value when `verify` is `hmac`. Must match the encoding the webhook sender uses — a mismatch causes requests to be rejected even when the signature is otherwise correct.
1818
+ description: 'Encoding of the HMAC signature value when `verify` is `hmac`. Must match the encoding the webhook sender uses — a mismatch causes requests to be rejected with a 401 even when the signature is otherwise correct. With `provider: custom`, `hex` is compared as lowercase hex: an uppercase hex signature is rejected.'
1798
1819
  x-celigo-ai-guidance:
1799
1820
  - Specifies the encoding format used for the HMAC signature in webhook requests.
1800
1821
  - |-
@@ -1890,7 +1911,7 @@ components:
1890
1911
  - 9d1a5c6b3e7d9f2a1c5b8e3aEXAMPLE
1891
1912
  header:
1892
1913
  type: string
1893
- description: Name of the request header that carries the HMAC signature when `verify` is `hmac`. Must match the header name the webhook sender uses (header names are case-insensitive); requests without this header are rejected with a 401. Signature prefixes in the header value (such as `sha256=`) are handled automatically.
1914
+ description: 'Name of the request header that carries the HMAC signature when `verify` is `hmac`. Must match the header name the webhook sender uses (header names are case-insensitive); requests without this header are rejected with a 401. With `provider: custom` the header value must be the bare digest in the configured `encoding`: a value with a `sha256=` prefix is rejected with a 401.'
1894
1915
  x-celigo-ai-guidance:
1895
1916
  - Specifies the HTTP header name that contains the signature for HMAC verification.
1896
1917
  - |-
@@ -1936,8 +1957,9 @@ components:
1936
1957
 
1937
1958
  - The system will look for this exact header name in incoming requests
1938
1959
  - If the header is not found, the request will be rejected with a 401 error
1939
- - Some platforms may include a prefix in the header value (e.g., "sha256=")
1940
- which is handled automatically by the system
1960
+ - Some platforms include a prefix in the header value (e.g., "sha256="). With
1961
+ provider "custom" it is not stripped: a prefixed signature is rejected with a 401,
1962
+ so the sender must send the bare digest
1941
1963
 
1942
1964
  IMPORTANT: This must exactly match the header name used by the webhook sender.
1943
1965
  If you're unsure about the correct header name, consult the sender's documentation
@@ -3452,11 +3474,12 @@ components:
3452
3474
  - metadata
3453
3475
  skipDelete:
3454
3476
  type: boolean
3477
+ default: false
3455
3478
  description: |-
3456
3479
  When true, source files remain on the file server after processing; when false (the
3457
3480
  default), files are deleted after successful processing. Files that fail processing are
3458
3481
  never deleted, regardless of this setting. Enable retention when files must be processed
3459
- by other flows or kept for compliance.
3482
+ by other flows or systems, or kept for compliance.
3460
3483
  x-celigo-ai-guidance:
3461
3484
  - |-
3462
3485
  Controls whether source files are retained or deleted after successful processing.
@@ -4129,8 +4152,10 @@ components:
4129
4152
  type: string
4130
4153
  description: |-
4131
4154
  Character sequence separating fields within each row; comma when omitted. Use "\t"
4132
- for tab-delimited files; European-locale exports often use semicolons. An incorrect
4133
- delimiter is the most common cause of parsing failures.
4155
+ for tab-delimited files; European-locale exports often use semicolons. A wrong
4156
+ delimiter doesn't fail the parse: with a header row, each row becomes one field named
4157
+ after the whole header line (`{"order_id;sku;qty": "1001;TEE-M;2"}`), so the failure
4158
+ shows up in later steps.
4134
4159
  x-celigo-ai-guidance:
4135
4160
  - |-
4136
4161
  Specifies the character sequence that separates individual fields (columns)
@@ -9560,19 +9585,25 @@ components:
9560
9585
  description: |-
9561
9586
  Directory on the same server where files are moved after successful export, giving you
9562
9587
  an independent backup; if omitted, files are simply deleted from the source directory
9563
- after successful export (Celigo also keeps its own copy of processed files for a set
9564
- period). Supports static paths or handlebars templates.
9588
+ after successful export unless `file.skipDelete` is true (Celigo also keeps its own copy
9589
+ of processed files for a set period). Supports static paths or handlebars templates.
9565
9590
  x-celigo-ai-guidance:
9566
9591
  - Optional directory where files are moved before deletion.
9567
9592
  - |-
9568
9593
  IMPORTANT:
9569
- Celigo automatically deletes files from the source directory after successful export.
9594
+ Celigo automatically deletes files from the source directory after successful export,
9595
+ unless `file.skipDelete` is true. Moving them to a backup directory also takes them out
9596
+ of the source directory, so when another system still reads them there, set
9597
+ `file.skipDelete: true` instead.
9570
9598
  The backup directory is for users who want to maintain their own independent
9571
9599
  backup of exported files.
9572
9600
  Celigo also maintains its own backup of processed files for a set period of time.
9573
9601
  - |-
9574
9602
  IMPORTANT:
9575
- Celigo automatically deletes files from the source directory after successful export.
9603
+ Celigo automatically deletes files from the source directory after successful export,
9604
+ unless `file.skipDelete` is true. Moving them to a backup directory also takes them out
9605
+ of the source directory, so when another system still reads them there, set
9606
+ `file.skipDelete: true` instead.
9576
9607
  The backup directory is for users who want to maintain their own independent
9577
9608
  backup of exported files.
9578
9609
  Celigo also maintains its own backup of processed files for a set period of time.
@@ -12044,19 +12075,26 @@ components:
12044
12075
  description: |-
12045
12076
  Bucket in the same region where files are moved after successful export, giving you an
12046
12077
  independent backup; if omitted, files are simply deleted from the source bucket after
12047
- successful export (Celigo also keeps its own copy of processed files for a set period).
12048
- The connection's AWS credentials must have s3:PutObject permission on this bucket.
12078
+ successful export unless `file.skipDelete` is true (Celigo also keeps its own copy of
12079
+ processed files for a set period). The connection's AWS credentials must have
12080
+ s3:PutObject permission on this bucket.
12049
12081
  x-celigo-ai-guidance:
12050
12082
  - Optional destination bucket where files are moved before deletion.
12051
12083
  - |-
12052
12084
  IMPORTANT:
12053
- Celigo automatically deletes files from the source bucket after successful export.
12085
+ Celigo automatically deletes files from the source bucket after successful export,
12086
+ unless `file.skipDelete` is true. Moving them to a backup bucket also takes them out of
12087
+ the source bucket, so when another system still reads them there, set
12088
+ `file.skipDelete: true` instead.
12054
12089
  The backup bucket is for users who want to maintain their own independent backup
12055
12090
  of exported files.
12056
12091
  Celigo also maintains its own backup of processed files for a set period of time.
12057
12092
  - |-
12058
12093
  IMPORTANT:
12059
- Celigo automatically deletes files from the source bucket after successful export.
12094
+ Celigo automatically deletes files from the source bucket after successful export,
12095
+ unless `file.skipDelete` is true. Moving them to a backup bucket also takes them out of
12096
+ the source bucket, so when another system still reads them there, set
12097
+ `file.skipDelete: true` instead.
12060
12098
  The backup bucket is for users who want to maintain their own independent backup
12061
12099
  of exported files.
12062
12100
  Celigo also maintains its own backup of processed files for a set period of time.
@@ -15914,7 +15952,9 @@ components:
15914
15952
  `NetSuiteExport` and `NetSuiteHTTPExport` both need a `netsuite` connection).
15915
15953
  Server-required unless `type` is `webhook` or `simple` (those receive data instead of
15916
15954
  fetching it) or `adaptorType` is `TopicExport` (Event Streams listeners are delivered
15917
- by the platform itself and must omit it).
15955
+ by the platform itself and must omit it). A `WebhookExport` saved without `type: webhook`
15956
+ is refused with 422 "_connectionId is required unless type is [webhook|simple]"; a webhook
15957
+ export that does carry a connection saves and updates normally.
15918
15958
  examples:
15919
15959
  - 60a2c4e6f321d800129a1a3c
15920
15960
  adaptorType:
@@ -16035,9 +16075,11 @@ components:
16035
16075
  description: |-
16036
16076
  Operational mode of the export. When omitted, the export retrieves all available records —
16037
16077
  the standard batch mode, which is also the right choice for parsing structured files
16038
- (CSV/XML/JSON) into records. Each mode requires its matching configuration object
16039
- (e.g. a `delta` object when `type` is `delta`); use `blob` only to transfer raw files
16040
- without parsing their contents.
16078
+ (CSV/XML/JSON) into records. Most modes take their matching configuration object (e.g. a
16079
+ `webhook` object when `type` is `webhook`); an HTTP or SQL `delta` export saves without a
16080
+ `delta` object because its request carries `{{lastExportDateTime}}`, though
16081
+ `delta.startDate` sets its first window. Use `blob` only to transfer raw files without
16082
+ parsing their contents.
16041
16083
  x-celigo-ai-guidance:
16042
16084
  - |-
16043
16085
  ## HOW TO PICK THE TYPE VALUE
package/dist/flow.yml CHANGED
@@ -824,9 +824,10 @@ paths:
824
824
 
825
825
  The request body is optional. When omitted, the flow runs with its configured schedule behavior —
826
826
  for delta flows this means using the current `lastExportDateTime` as the lower bound. Pass
827
- `export.startDate` / `export.endDate` to set this run's delta window. On success, when
828
- `export.endDate` is sent, the flow's checkpoint is left at that value, so an end date in the past
829
- moves the next run's lower bound back. Pass `_exportIds` to limit execution to a subset of the flow's
827
+ `export.startDate` / `export.endDate` to set this run's delta window (they render as
828
+ `{{lastExportDateTime}}` / `{{currentExportDateTime}}`). On success, when `export.endDate` is
829
+ sent, the flow's checkpoint is left at that value, so an end date in the past moves the next
830
+ run's lower bound back. Pass `_exportIds` to limit execution to a subset of the flow's
830
831
  generators (useful for flows with many independent sources).
831
832
 
832
833
  Flow-level preconditions enforced by the platform:
@@ -838,7 +839,9 @@ paths:
838
839
  `_jobId` with the execution-log endpoints. For delta backfills, prefer passing explicit
839
840
  `startDate`/`endDate` over editing the export's `lastExportDateTime`, and read the checkpoint
840
841
  first (`GET /v1/flows/{_id}/lastExportDateTime`): the override doesn't stay with one run, since
841
- a successful run that sends `endDate` leaves the checkpoint there. A flow runs one instance at a time: a run requested while another
842
+ a successful run that sends `endDate` leaves the checkpoint there. Runs that export nothing
843
+ leave the checkpoint alone, so a stretch of empty runs needs no backfill once its cause is
844
+ fixed. A flow runs one instance at a time: a run requested while another
842
845
  instance is queued or running is refused with `409 job_already_queued` ("Another instance
843
846
  for this flow is already queued or running"), and a run-next-flow trigger that arrives in
844
847
  that state is dropped rather than queued.
@@ -862,7 +865,7 @@ paths:
862
865
  summary: Default run (use configured delta window)
863
866
  value: {}
864
867
  delta_window:
865
- summary: Override the delta window for this run
868
+ summary: Set this run's delta window (the checkpoint follows endDate)
866
869
  value:
867
870
  export:
868
871
  startDate: '2026-04-01T00:00:00Z'
@@ -1082,7 +1085,9 @@ paths:
1082
1085
  generators (exports) in the flow. This value is what gets substituted into the `{{lastExportDateTime}}`
1083
1086
  Handlebars variable on the next delta run of any export in the flow.
1084
1087
 
1085
- The checkpoint advances automatically at the end of a successful delta run. On success, when
1088
+ A run moves the checkpoint to its window end (`{{currentExportDateTime}}`) only when it exports
1089
+ records. A run that exports nothing leaves it where it was, so after a stretch of empty runs the
1090
+ next run that finds records reaches back to the last run that exported any. On success, when
1086
1091
  `POST /v1/flows/{_id}/run` sends `export.endDate`, the checkpoint is left at that value, so an end
1087
1092
  date in the past moves the next run's lower bound back.
1088
1093
 
@@ -6302,7 +6307,8 @@ components:
6302
6307
  type: object
6303
6308
  description: |-
6304
6309
  Delta-window override. When present, the run uses these dates in place of the flow's own
6305
- `lastExportDateTime` / `currentExportDateTime`. Both fields are optional individually.
6310
+ `lastExportDateTime` / `currentExportDateTime`. Both fields are optional individually. The
6311
+ override outlasts the run: a run that exports records leaves the flow's checkpoint at `endDate`.
6306
6312
  properties:
6307
6313
  startDate:
6308
6314
  type: string
@@ -6313,7 +6319,10 @@ components:
6313
6319
  endDate:
6314
6320
  type: string
6315
6321
  format: date-time
6316
- description: ISO-8601 end of the delta window (maps to `currentExportDateTime`).
6322
+ description: |-
6323
+ ISO-8601 end of the delta window (maps to `currentExportDateTime`). When the run exports
6324
+ records, the flow's checkpoint is left here, even when it is in the past, so the next run
6325
+ starts from it.
6317
6326
  examples:
6318
6327
  - '2026-01-15T23:59:59.000Z'
6319
6328
  _exportIds: