@celigo/api-specs 0.2.145 → 0.2.147

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
@@ -5385,7 +5385,7 @@ components:
5385
5385
  x-celigo-ai-guidance:
5386
5386
  - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
5387
5387
  - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
5388
- - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT must re-send the credentials — omitting them or echoing their masked `******` values clears them.
5388
+ - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT replaces the whole document, so send each secret back as its masked `******` value (that keeps it) or as a new value, and never drop one to keep it — an omitted password or `http.encrypted` is cleared, and a static token left out (with no `refreshMethod`) fails the PUT with 422.
5389
5389
  enableMicroBatchForOneToMany:
5390
5390
  type: boolean
5391
5391
  default: true
@@ -7036,7 +7036,9 @@ components:
7036
7036
  - svc_account
7037
7037
  password:
7038
7038
  type: string
7039
- description: Password for Basic/Digest/WSSE authentication (encrypted at rest).
7039
+ description: |-
7040
+ Password for Basic/Digest/WSSE authentication (encrypted at rest). On update, the
7041
+ masked `"******"` sent back keeps the stored password; a new value replaces it.
7040
7042
  writeOnly: true
7041
7043
  examples:
7042
7044
  - s3cr3t-p4ssw0rd
@@ -7053,6 +7055,7 @@ components:
7053
7055
  type: string
7054
7056
  description: |
7055
7057
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
7058
+ On update, the mask sent back keeps the stored token; a new value replaces it.
7056
7059
  Required unless automatic token refresh is configured.
7057
7060
  examples:
7058
7061
  - my-api-token-EXAMPLE
@@ -7515,7 +7518,8 @@ components:
7515
7518
  Encrypted custom fields for storing sensitive configuration values (API secrets,
7516
7519
  private keys, etc.) that don't fit standard auth fields. Sent as an object of
7517
7520
  field-name/value pairs; values are encrypted at rest. Returned as the masked
7518
- string `"******"` on responses. Field definitions are specified in encryptedFields.
7521
+ string `"******"` on responses; on update, that mask sent back keeps the stored values,
7522
+ and a new object replaces them. Field definitions are specified in encryptedFields.
7519
7523
  examples:
7520
7524
  - apiSecret: s3cr3t-value
7521
7525
  signingKey: another-s3cr3t
@@ -9257,6 +9261,7 @@ components:
9257
9261
  type: string
9258
9262
  description: |
9259
9263
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
9264
+ On update, the mask sent back keeps the stored token; a new value replaces it.
9260
9265
  Required unless automatic token refresh is configured.
9261
9266
  examples:
9262
9267
  - my-api-token-EXAMPLE
@@ -830,8 +830,11 @@ paths:
830
830
  description: |
831
831
  Updates an existing connection configuration. This is a full-replace operation —
832
832
  send the complete connection document, not just the fields you want to change; a field
833
- omitted from the body is cleared, including credentials (re-send them, or the masked
834
- `"******"` value clears them too).
833
+ omitted from the body is cleared. A stored secret sent back as the masked `"******"` value a
834
+ GET returns keeps its stored value; send a new value to change it. Don't leave a secret out
835
+ to keep it: an omitted `http.auth.basic.password` or `http.encrypted` is cleared, and a
836
+ static-token connection (no `http.auth.token.refreshMethod`) sent without
837
+ `http.auth.token.token` is rejected with 422 `Expected field: refreshMethod to be present.`
835
838
 
836
839
  Three settings are the exception and survive an omission: `endUserProvidedFields`
837
840
  (send `null` to clear it — `[]` is treated like an omission), and on `ftp` connections
@@ -985,9 +988,11 @@ paths:
985
988
  x-celigo-ai-guidance:
986
989
  - |-
987
990
  PUT replaces the document: GET it first, change what you need, and send the whole body
988
- back with the real credential values (masked "******" values clear the stored secret).
989
- To change only name, debug window, or concurrency settings without touching credentials,
990
- use PATCH instead.
991
+ back. Leave each secret's masked "******" value exactly as the GET returned it (that keeps
992
+ the stored secret) or put a new value in its place. Never drop a secret field to keep it:
993
+ an omitted password or `http.encrypted` is cleared, and a static token left out (with no
994
+ `refreshMethod`) fails the PUT with 422. To change only name, debug window, or concurrency
995
+ settings without touching credentials, use PATCH instead.
991
996
  patch:
992
997
  x-internal: false
993
998
  summary: Patch a connection
@@ -4240,7 +4245,7 @@ components:
4240
4245
  x-celigo-ai-guidance:
4241
4246
  - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
4242
4247
  - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
4243
- - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT must re-send the credentials — omitting them or echoing their masked `******` values clears them.
4248
+ - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT replaces the whole document, so send each secret back as its masked `******` value (that keeps it) or as a new value, and never drop one to keep it — an omitted password or `http.encrypted` is cleared, and a static token left out (with no `refreshMethod`) fails the PUT with 422.
4244
4249
  enableMicroBatchForOneToMany:
4245
4250
  type: boolean
4246
4251
  default: true
@@ -5891,7 +5896,9 @@ components:
5891
5896
  - svc_account
5892
5897
  password:
5893
5898
  type: string
5894
- description: Password for Basic/Digest/WSSE authentication (encrypted at rest).
5899
+ description: |-
5900
+ Password for Basic/Digest/WSSE authentication (encrypted at rest). On update, the
5901
+ masked `"******"` sent back keeps the stored password; a new value replaces it.
5895
5902
  writeOnly: true
5896
5903
  examples:
5897
5904
  - s3cr3t-p4ssw0rd
@@ -5908,6 +5915,7 @@ components:
5908
5915
  type: string
5909
5916
  description: |
5910
5917
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
5918
+ On update, the mask sent back keeps the stored token; a new value replaces it.
5911
5919
  Required unless automatic token refresh is configured.
5912
5920
  examples:
5913
5921
  - my-api-token-EXAMPLE
@@ -6370,7 +6378,8 @@ components:
6370
6378
  Encrypted custom fields for storing sensitive configuration values (API secrets,
6371
6379
  private keys, etc.) that don't fit standard auth fields. Sent as an object of
6372
6380
  field-name/value pairs; values are encrypted at rest. Returned as the masked
6373
- string `"******"` on responses. Field definitions are specified in encryptedFields.
6381
+ string `"******"` on responses; on update, that mask sent back keeps the stored values,
6382
+ and a new object replaces them. Field definitions are specified in encryptedFields.
6374
6383
  examples:
6375
6384
  - apiSecret: s3cr3t-value
6376
6385
  signingKey: another-s3cr3t
@@ -8112,6 +8121,7 @@ components:
8112
8121
  type: string
8113
8122
  description: |
8114
8123
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
8124
+ On update, the mask sent back keeps the stored token; a new value replaces it.
8115
8125
  Required unless automatic token refresh is configured.
8116
8126
  examples:
8117
8127
  - my-api-token-EXAMPLE
package/dist/enduser.yml CHANGED
@@ -2357,7 +2357,7 @@ components:
2357
2357
  x-celigo-ai-guidance:
2358
2358
  - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
2359
2359
  - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
2360
- - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT must re-send the credentials — omitting them or echoing their masked `******` values clears them.
2360
+ - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT replaces the whole document, so send each secret back as its masked `******` value (that keeps it) or as a new value, and never drop one to keep it — an omitted password or `http.encrypted` is cleared, and a static token left out (with no `refreshMethod`) fails the PUT with 422.
2361
2361
  enableMicroBatchForOneToMany:
2362
2362
  type: boolean
2363
2363
  default: true
@@ -4008,7 +4008,9 @@ components:
4008
4008
  - svc_account
4009
4009
  password:
4010
4010
  type: string
4011
- description: Password for Basic/Digest/WSSE authentication (encrypted at rest).
4011
+ description: |-
4012
+ Password for Basic/Digest/WSSE authentication (encrypted at rest). On update, the
4013
+ masked `"******"` sent back keeps the stored password; a new value replaces it.
4012
4014
  writeOnly: true
4013
4015
  examples:
4014
4016
  - s3cr3t-p4ssw0rd
@@ -4025,6 +4027,7 @@ components:
4025
4027
  type: string
4026
4028
  description: |
4027
4029
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
4030
+ On update, the mask sent back keeps the stored token; a new value replaces it.
4028
4031
  Required unless automatic token refresh is configured.
4029
4032
  examples:
4030
4033
  - my-api-token-EXAMPLE
@@ -4487,7 +4490,8 @@ components:
4487
4490
  Encrypted custom fields for storing sensitive configuration values (API secrets,
4488
4491
  private keys, etc.) that don't fit standard auth fields. Sent as an object of
4489
4492
  field-name/value pairs; values are encrypted at rest. Returned as the masked
4490
- string `"******"` on responses. Field definitions are specified in encryptedFields.
4493
+ string `"******"` on responses; on update, that mask sent back keeps the stored values,
4494
+ and a new object replaces them. Field definitions are specified in encryptedFields.
4491
4495
  examples:
4492
4496
  - apiSecret: s3cr3t-value
4493
4497
  signingKey: another-s3cr3t
@@ -6229,6 +6233,7 @@ components:
6229
6233
  type: string
6230
6234
  description: |
6231
6235
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
6236
+ On update, the mask sent back keeps the stored token; a new value replaces it.
6232
6237
  Required unless automatic token refresh is configured.
6233
6238
  examples:
6234
6239
  - my-api-token-EXAMPLE
package/dist/export.yml CHANGED
@@ -6001,7 +6001,9 @@ components:
6001
6001
  description: |-
6002
6002
  Topic this listener subscribes to. Create or look it up with `GET /v1/topics`; the
6003
6003
  topic must belong to the same account. Pointing an existing listener at a different
6004
- topic starts a new subscription, read from `startPosition`.
6004
+ topic starts a new subscription, read from `startPosition`. A clone made in the same
6005
+ environment — of this export, or of a flow that contains it — keeps `_topicId`, so the
6006
+ copy becomes another listener on the topic once its flow is enabled.
6005
6007
  x-celigo-ai-guidance:
6006
6008
  - |-
6007
6009
  An id that is not a topic in the account fails the save with 422 `invalid_ref`
@@ -16517,7 +16519,10 @@ components:
16517
16519
  - 'null'
16518
16520
  format: objectId
16519
16521
  x-celigo-refModel: integrations
16520
- description: Integration this export belongs to.
16522
+ description: |-
16523
+ Not stored on an export: a value sent on create or on a full update is dropped, and a GET
16524
+ doesn't return the field. An export isn't owned by an integration; to find the flows and
16525
+ other resources that use it, call `GET /v1/exports/{_id}/dependencies`.
16521
16526
  _connectorId:
16522
16527
  type: string
16523
16528
  format: objectId
@@ -2047,12 +2047,12 @@ paths:
2047
2047
  x-internal: false
2048
2048
  summary: Get audit log for a file
2049
2049
  description: |-
2050
- Returns the change history for a file — creation (recorded once the
2051
- upload finalizes), renames and description edits, moves, content
2052
- replacements, downloads, deletes, restores, and purges — newest first.
2053
- Each entry records who made the change, when, and which fields were
2054
- affected. History survives purging, so a purged file's entries stay
2055
- readable. Folders have their own route, `GET /v1/folders/{_id}/audit`.
2050
+ Returns the audit entries recorded for a file, newest first, or 204 with
2051
+ no body when it has none. File operations are no longer written to this
2052
+ audit log, so only entries recorded before that change are returned, and
2053
+ a file created since has none. Each entry records who made the change,
2054
+ when, and which fields were affected. Entries survive purging. Folders
2055
+ have their own route, `GET /v1/folders/{_id}/audit`.
2056
2056
  tags:
2057
2057
  - File Storage
2058
2058
  operationId: getStorageFileAudit
@@ -2166,11 +2166,12 @@ paths:
2166
2166
  x-internal: false
2167
2167
  summary: Get audit log for a folder
2168
2168
  description: |-
2169
- Returns the change history for a folder — creation, renames and
2170
- description edits, moves, deletes, restores, and purges — newest first.
2171
- Each entry records who made the change, when, and which fields were
2172
- affected. History survives purging, so a purged folder's entries stay
2173
- readable. Files have their own route, `GET /v1/files/{_id}/audit`.
2169
+ Returns the audit entries recorded for a folder, newest first, or 204
2170
+ with no body when it has none. Folder operations are no longer written
2171
+ to this audit log, so only entries recorded before that change are
2172
+ returned, and a folder created since has none. Each entry records who
2173
+ made the change, when, and which fields were affected. Entries survive
2174
+ purging. Files have their own route, `GET /v1/files/{_id}/audit`.
2174
2175
  tags:
2175
2176
  - File Storage
2176
2177
  operationId: getStorageFolderAudit
package/dist/iclient.yml CHANGED
@@ -324,9 +324,8 @@ paths:
324
324
  account: every update must include the full JSON key. An Azure
325
325
  service principal keeps its stored `clientSecret` or `certificate`
326
326
  when the field is omitted — only a new value replaces it, and
327
- `certificate` is never returned. Connections work the other way:
328
- re-sending the mask on `PUT /v1/connections/{_id}` clears the stored
329
- credential.
327
+ `certificate` is never returned. A connection keeps a secret re-sent
328
+ as the mask the same way (`PUT /v1/connections/{_id}`).
330
329
  operationId: updateIClient
331
330
  tags:
332
331
  - iClients
package/dist/import.yml CHANGED
@@ -8507,7 +8507,8 @@ components:
8507
8507
  x-celigo-ui-override: 'Required by the Event Streams publisher form (fieldDefinitions/resources/imports/import.js: ''topic._topicId'' is required:true, validWhen isNot ''''). The API saves a TopicImport without it, so the requirement is encoded on the request schema to mirror the form and keep publishers bound to a topic.'
8508
8508
  description: |-
8509
8509
  Topic the records are published to. Create or look it up with `GET /v1/topics`; the
8510
- topic must belong to the same account.
8510
+ topic must belong to the same account. A clone of the import made in the same
8511
+ environment keeps `_topicId`.
8511
8512
  x-celigo-ai-guidance:
8512
8513
  - |-
8513
8514
  An id that is not a topic in the account fails the save with 422 `invalid_ref`
@@ -15842,9 +15843,10 @@ components:
15842
15843
  - 'null'
15843
15844
  format: objectId
15844
15845
  x-celigo-refModel: integrations
15845
- description: Integration this import belongs to.
15846
- examples:
15847
- - 60a2c4e6f321d800129a1a3c
15846
+ description: |-
15847
+ Not stored on an import: a value sent on create or on a full update is dropped, and a GET
15848
+ doesn't return the field. An import isn't owned by an integration; to find the flows and
15849
+ other resources that use it, call `GET /v1/imports/{_id}/dependencies`.
15848
15850
  _connectorId:
15849
15851
  type: string
15850
15852
  format: objectId
@@ -4280,7 +4280,9 @@ components:
4280
4280
  When true, the integration is a container for Celigo Sync resources — set it on
4281
4281
  `POST /v1/integrations` before creating syncs in it (`POST /v1/syncs` into an
4282
4282
  integration without it fails with `422 integration_not_for_sync`). Fixed at creation:
4283
- `PUT /v1/integrations/{_id}` ignores the field in both directions.
4283
+ `PUT /v1/integrations/{_id}` ignores the field in both directions. Keep flows out of
4284
+ it: a flow create isn't refused there. While the integration holds a sync, deleting
4285
+ it fails with 422 "sync <id> must be deleted before you can delete integration <id>".
4284
4286
  aliases:
4285
4287
  type: array
4286
4288
  description: Named aliases that map to specific resources within the integration.
@@ -4448,8 +4450,8 @@ components:
4448
4450
  Maintained by the platform: added through the integration's topic `register` operations,
4449
4451
  `POST /v1/topics` with `__integrationIds`, or automatically when a flow in the integration
4450
4452
  is saved with a step bound to a topic; removed by the `DELETE …/register` operation or when
4451
- the topic is deleted. Client-sent values are ignored (PUT-verified). Absent on integrations
4452
- that have never had a topic registered.
4453
+ the topic is deleted. Client-sent values are ignored (PUT-verified). With no topic
4454
+ registered it is an empty array, or absent on older integrations.
4453
4455
  items:
4454
4456
  type: string
4455
4457
  format: objectId
@@ -4188,7 +4188,7 @@ components:
4188
4188
  x-celigo-ai-guidance:
4189
4189
  - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
4190
4190
  - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
4191
- - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT must re-send the credentials — omitting them or echoing their masked `******` values clears them.
4191
+ - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT replaces the whole document, so send each secret back as its masked `******` value (that keeps it) or as a new value, and never drop one to keep it — an omitted password or `http.encrypted` is cleared, and a static token left out (with no `refreshMethod`) fails the PUT with 422.
4192
4192
  enableMicroBatchForOneToMany:
4193
4193
  type: boolean
4194
4194
  default: true
@@ -5839,7 +5839,9 @@ components:
5839
5839
  - svc_account
5840
5840
  password:
5841
5841
  type: string
5842
- description: Password for Basic/Digest/WSSE authentication (encrypted at rest).
5842
+ description: |-
5843
+ Password for Basic/Digest/WSSE authentication (encrypted at rest). On update, the
5844
+ masked `"******"` sent back keeps the stored password; a new value replaces it.
5843
5845
  writeOnly: true
5844
5846
  examples:
5845
5847
  - s3cr3t-p4ssw0rd
@@ -5856,6 +5858,7 @@ components:
5856
5858
  type: string
5857
5859
  description: |
5858
5860
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
5861
+ On update, the mask sent back keeps the stored token; a new value replaces it.
5859
5862
  Required unless automatic token refresh is configured.
5860
5863
  examples:
5861
5864
  - my-api-token-EXAMPLE
@@ -6318,7 +6321,8 @@ components:
6318
6321
  Encrypted custom fields for storing sensitive configuration values (API secrets,
6319
6322
  private keys, etc.) that don't fit standard auth fields. Sent as an object of
6320
6323
  field-name/value pairs; values are encrypted at rest. Returned as the masked
6321
- string `"******"` on responses. Field definitions are specified in encryptedFields.
6324
+ string `"******"` on responses; on update, that mask sent back keeps the stored values,
6325
+ and a new object replaces them. Field definitions are specified in encryptedFields.
6322
6326
  examples:
6323
6327
  - apiSecret: s3cr3t-value
6324
6328
  signingKey: another-s3cr3t
@@ -8060,6 +8064,7 @@ components:
8060
8064
  type: string
8061
8065
  description: |
8062
8066
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
8067
+ On update, the mask sent back keeps the stored token; a new value replaces it.
8063
8068
  Required unless automatic token refresh is configured.
8064
8069
  examples:
8065
8070
  - my-api-token-EXAMPLE
package/dist/sync.yml CHANGED
@@ -153,7 +153,9 @@ paths:
153
153
  Creates a sync inside an integration. Only `_integrationId` and
154
154
  `source._connectionId` are required — new syncs start as disabled drafts, so the
155
155
  destination, datasets, and schedule can be configured with later requests. Creating
156
- a sync also registers its connections for the platform's replication runtime.
156
+ a sync also registers its connections for the platform's replication runtime: each
157
+ connection gets `microServices.workerGroup: "DIWorker"` and joins the integration's
158
+ `_registeredConnectionIds`.
157
159
  operationId: createSync
158
160
  tags:
159
161
  - Syncs
@@ -215,7 +217,8 @@ paths:
215
217
  _connectionId: 6a2a95909e994395f3c2a4e6
216
218
  destination: {}
217
219
  driftPolicy:
218
- dataset: {}
220
+ dataset:
221
+ added: ignore
219
222
  element: {}
220
223
  '400':
221
224
  description: |-
@@ -328,12 +331,14 @@ paths:
328
331
  summary: Update a sync
329
332
  description: |-
330
333
  Replaces a sync's configuration. Send the complete desired state: omitted optional
331
- fields (`schedule`, `timezone`, destination details, `driftPolicy`) are cleared, not
332
- preserved. `_integrationId` cannot be sent — the integration is fixed at creation.
334
+ fields (`schedule`, `timezone`, destination details, the `driftPolicy.element`
335
+ settings) are cleared, not preserved. `_integrationId` cannot be sent — the integration
336
+ is fixed at creation.
333
337
 
334
- Set `disabled: false` to enable the sync once its source, destination, datasets, and
338
+ Set `disabled: false` to enable the sync once its source, a complete destination, and
335
339
  `historicDateTime` are configured; enabling an incomplete sync fails with
336
- `422 sync_not_enabled`.
340
+ `422 sync_not_enabled`. Always send `disabled`: a PUT that omits it enables a sync
341
+ whose source, destination and `historicDateTime` are set.
337
342
  operationId: updateSync
338
343
  tags:
339
344
  - Syncs
@@ -356,9 +361,10 @@ paths:
356
361
  $ref: '#/components/schemas/Request'
357
362
  examples:
358
363
  configure:
359
- summary: Name the sync and set its destination
364
+ summary: Name the sync and set its destination, keeping it disabled
360
365
  value:
361
366
  name: Salesforce Demo Sync
367
+ disabled: true
362
368
  schedule: '? 0 */6 * * *'
363
369
  timezone: America/New_York
364
370
  historicDateTime: '2022-07-04T18:30:00.000Z'
@@ -443,13 +449,19 @@ paths:
443
449
  sync configuration (`invalid_destination_sync_config`), two enabled
444
450
  datasets resolve to the same destination table
445
451
  (`conflicting_table_name`), a field exceeds its size limit
446
- (`size_limit_exceeded`), or the drift policy is inconsistent
447
- (`drift_policy_invalid_setup`).
452
+ (`size_limit_exceeded`), the drift policy is inconsistent
453
+ (`drift_policy_invalid_setup`), or the destination's application differs from
454
+ the integration's other syncs or from the sync's saved destination.
448
455
  content:
449
456
  application/json:
450
457
  schema:
451
458
  $ref: '#/components/schemas/Error'
452
459
  examples:
460
+ mixed_destination_types:
461
+ summary: Another destination application in the same integration
462
+ value:
463
+ errors:
464
+ - message: The destination type for all the syncs under an integration must be same.
453
465
  not_ready_to_enable:
454
466
  summary: Enabling an incomplete sync
455
467
  value:
@@ -464,6 +476,8 @@ paths:
464
476
  Deletes a sync and tears down its replication resources, including its datasets.
465
477
  The sync must be disabled first — deleting an enabled sync fails with
466
478
  `400 sync_delete_not_allowed`. Syncs are not recoverable through the recycle bin.
479
+ The sync's job records stay until their `purgeAt`, and while they exist the deleted
480
+ integration that held the sync can't be purged from the recycle bin.
467
481
  operationId: deleteSync
468
482
  tags:
469
483
  - Syncs
@@ -710,9 +724,11 @@ paths:
710
724
  description: |-
711
725
  Creates and updates a sync's datasets in one batch. Each array item either creates
712
726
  a dataset (identified by `externalId`) or updates one (identified by `_id`); a
713
- single request can mix both. Updates fully replace each dataset's writable fields.
714
- The response body is empty — read back the saved datasets with
715
- `GET /v1/syncs/{_syncId}/datasets`.
727
+ single request can mix both. An update replaces the dataset's `name`, `tableName` and
728
+ `exportProperties` with what the item carries, so send each item whole. One failing
729
+ item rejects the whole batch, valid items included, and datasets the batch doesn't
730
+ name are left unchanged. The response body is empty — read back the saved datasets
731
+ with `GET /v1/syncs/{_syncId}/datasets`.
716
732
  operationId: upsertDatasetsForSync
717
733
  tags:
718
734
  - Syncs
@@ -761,12 +777,14 @@ paths:
761
777
  exportProperties:
762
778
  type: delta
763
779
  update:
764
- summary: Switch an existing dataset to append mode
780
+ summary: Switch an existing dataset to append mode, sending the whole item
765
781
  value:
766
782
  - _id: 6a559b547885d8f93921c2ba
767
783
  name: Account
768
784
  enable: true
769
785
  ingestionMode: append
786
+ exportProperties:
787
+ type: delta
770
788
  dataElements:
771
789
  - name: Id
772
790
  enable: true
@@ -801,7 +819,8 @@ paths:
801
819
  description: |-
802
820
  Validation failed. An enabled dataset is missing `ingestionMode`
803
821
  (`ingestion_mode_required_for_enabled_datasets`), a `merge` dataset has no
804
- primary key, a `tableName` is already taken, two source columns sanitize to
822
+ primary key, a `tableName` is already taken (or, for an enabled dataset, matches
823
+ another dataset's table name in another letter case), two source columns sanitize to
805
824
  the same destination column name (`duplicate_sanitized_column_names` — rename
806
825
  or disable the conflicting source columns), or a data-element combination is
807
826
  invalid (e.g. `transformMode` without children, or `isPrimaryKey` with `mask`).
@@ -1043,7 +1062,7 @@ paths:
1043
1062
  value:
1044
1063
  errors:
1045
1064
  - code: sync_job_already_queued
1046
- message: A sync job is already queued for this sync.
1065
+ message: Another instance for this sync is already queued or running. Please try again later.
1047
1066
  '422':
1048
1067
  description: |-
1049
1068
  The sync is disabled and cannot be run.
@@ -1058,7 +1077,7 @@ paths:
1058
1077
  value:
1059
1078
  errors:
1060
1079
  - code: invalid_sync
1061
- message: The sync is disabled.
1080
+ message: Sync disabled. Please enable your sync and try again.
1062
1081
  /v1/syncs/{_syncId}/syncJobs:
1063
1082
  get:
1064
1083
  x-internal: false
@@ -1286,7 +1305,7 @@ paths:
1286
1305
  value:
1287
1306
  errors:
1288
1307
  - code: sync_jobs_not_found
1289
- message: No cancellable sync jobs found.
1308
+ message: 'Sync jobs not found for syncId: <syncId>'
1290
1309
  '409':
1291
1310
  description: |-
1292
1311
  Cancellation is already in progress for the remaining jobs.
@@ -1740,7 +1759,7 @@ paths:
1740
1759
  value:
1741
1760
  errors:
1742
1761
  - code: sync_job_invalid_integration_id
1743
- message: The integration is not sync-enabled.
1762
+ message: The integration <integrationId> is not allowed to have syncs
1744
1763
  missing:
1745
1764
  summary: Integration does not exist
1746
1765
  value:
@@ -2856,7 +2875,10 @@ paths:
2856
2875
  Returns the full column/field catalog for one table/object on a connection, as read
2857
2876
  from the source application. Use it to build the `dataElements` selection before
2858
2877
  saving a dataset via `PUT /v1/syncs/{_syncId}/datasets` — each element's `name` here
2859
- is the `name` to reference there.
2878
+ is the `name` to reference there. Read an export's record structure (`isExport=true`)
2879
+ or an HTTP-connector object's columns through
2880
+ `GET /v1/di/metadata/sync/{_syncId}/connections/{_connectionId}/datasets/{datasetName}/details`
2881
+ once a draft sync exists.
2860
2882
  operationId: getConnectionDatasetDetails
2861
2883
  tags:
2862
2884
  - Syncs
@@ -3149,6 +3171,11 @@ paths:
3149
3171
  schema:
3150
3172
  $ref: '#/components/schemas/Error'
3151
3173
  examples:
3174
+ export_or_connector_object:
3175
+ summary: An export or HTTP-connector object (read it through the sync-scoped route)
3176
+ value:
3177
+ errors:
3178
+ - message: 'A required parameter is missing: _datasetId'
3152
3179
  unknown_dataset:
3153
3180
  summary: Table does not exist in the source
3154
3181
  value:
@@ -3763,7 +3790,8 @@ components:
3763
3790
  How the sync reacts when the source schema changes between runs (schema drift).
3764
3791
  `dataset` covers whole tables/objects appearing or disappearing; `element` covers
3765
3792
  individual columns/fields. Drift the policy automates is logged as `Schema Drift`
3766
- events, readable via `GET /v1/di/resource/syncs/{_syncId}/events`.
3793
+ events, readable via `GET /v1/di/resource/syncs/{_syncId}/events`. A PUT that omits the
3794
+ `element` settings clears them.
3767
3795
  properties:
3768
3796
  dataset:
3769
3797
  type: object
@@ -3777,7 +3805,9 @@ components:
3777
3805
  description: |-
3778
3806
  Handling for tables/objects that appear in the source after the sync was
3779
3807
  configured. Choose `ignore` to keep the replicated set fixed and add new
3780
- tables manually.
3808
+ tables manually. A sync created through the API starts at `ignore`, and a PUT
3809
+ that omits `driftPolicy` or sends an empty `dataset` object keeps the stored
3810
+ value, so moving back from `automate` takes an explicit `ignore`.
3781
3811
  x-enumDescriptions:
3782
3812
  automate: Automatically add newly discovered tables to the sync and start replicating them.
3783
3813
  ignore: Leave newly discovered tables out of the sync until a user enables them.
@@ -3800,8 +3830,8 @@ components:
3800
3830
  type: object
3801
3831
  description: |-
3802
3832
  A sync continuously replicates data from a source application into a data warehouse.
3803
- New syncs start as disabled drafts; a sync can only be enabled once its source,
3804
- destination, and datasets are fully configured.
3833
+ New syncs start as disabled drafts; a sync can be enabled once its source, a complete
3834
+ destination, and `historicDateTime` are configured.
3805
3835
  required:
3806
3836
  - _id
3807
3837
  - _userId
@@ -3909,8 +3939,8 @@ components:
3909
3939
  destination yet. The destination application is the connection's own type
3910
3940
  (`rdbms.type` for warehouse connections), so `database` and `schema` are read in that
3911
3941
  application's terms — Google BigQuery treats them as the GCP project and the dataset.
3912
- Each source + destination host/database/schema combination must be unique across
3913
- syncs — reusing one fails with `422 duplicate_destination_host` — and all syncs in an
3942
+ A `database` and `schema` pair can back only one sync, even across integrations — reusing one,
3943
+ in any letter case, fails with `422 duplicate_destination_host` — and all syncs in an
3914
3944
  integration must target the same destination application type.
3915
3945
  properties:
3916
3946
  _connectionId:
@@ -3991,8 +4021,9 @@ components:
3991
4021
  description: |-
3992
4022
  Writable sync fields for `POST /v1/syncs` and `PUT /v1/syncs/{_id}`. Updates are full
3993
4023
  replacements: omitted optional fields (`schedule`, `timezone`, `destination` details,
3994
- `driftPolicy`) are cleared, not preserved, so send the complete desired configuration
3995
- on every PUT.
4024
+ the `driftPolicy.element` settings) are cleared, not preserved, so send the complete
4025
+ desired configuration on every PUT. A PUT that omits `disabled` returns the sync enabled
4026
+ (`disabled: false`) when its source, destination and `historicDateTime` are set.
3996
4027
  required:
3997
4028
  - source
3998
4029
  x-celigo-ai-guidance:
@@ -4015,6 +4046,16 @@ components:
4015
4046
  integration created without it fails the sync create with 422 integration_not_for_sync
4016
4047
  ("An integration is suppose to have either flows or syncs but not both"), and PUT
4017
4048
  /v1/integrations/{_id} ignores the syncs field, so the only fix is a new integration.
4049
+ - |-
4050
+ Send disabled explicitly on every PUT. A PUT that omits it returns disabled: false once
4051
+ the sync's source, destination and historicDateTime are complete; disabled: true in the
4052
+ body keeps it disabled.
4053
+ - |-
4054
+ Creating a sync, and saving its destination, registers the connections with the
4055
+ replication runtime: the platform sets microServices.workerGroup to "DIWorker" on each
4056
+ connection (a system change in its audit log) and adds them to the integration's
4057
+ _registeredConnectionIds. Deleting the syncs that used a connection cleared its worker
4058
+ group when no other sync used it.
4018
4059
  properties:
4019
4060
  _integrationId:
4020
4061
  type: string
@@ -4044,11 +4085,12 @@ components:
4044
4085
  - Replicates core CRM objects into the analytics warehouse.
4045
4086
  disabled:
4046
4087
  type: boolean
4047
- default: true
4048
4088
  description: |-
4049
- When true, the sync neither runs on schedule nor accepts on-demand runs. Set to
4050
- false only once source, destination, datasets, and `historicDateTime` are all
4051
- configured; enabling an incomplete sync fails with `422 sync_not_enabled`.
4089
+ When true, the sync neither runs on schedule nor accepts on-demand runs. A PUT that
4090
+ omits it returns the sync enabled once its source, destination and `historicDateTime`
4091
+ are set, so send it on every PUT. Set to false once the source, a complete
4092
+ destination, and `historicDateTime` are configured; enabling an incomplete sync fails with
4093
+ `422 sync_not_enabled`. Datasets aren't checked: a sync with none enables.
4052
4094
  examples:
4053
4095
  - false
4054
4096
  schedule:
@@ -4101,9 +4143,10 @@ components:
4101
4143
  enabled. The destination application is the connection's own type (`rdbms.type`
4102
4144
  for warehouse connections), so `database` and `schema` are read in that
4103
4145
  application's terms — Google BigQuery treats them as the GCP project and the
4104
- dataset. The source + destination host/database/schema combination must be unique
4105
- across syncs (`422 duplicate_destination_host`), and all syncs in an integration
4106
- must target the same destination application type.
4146
+ dataset. A `database` and `schema` pair, in any letter case, can back only one sync,
4147
+ even across integrations (`422 duplicate_destination_host`, "Duplicate destination host found"). All syncs in
4148
+ an integration must target the same destination application type, and a sync's
4149
+ destination type can't change once saved.
4107
4150
  x-celigo-ai-guidance:
4108
4151
  - |-
4109
4152
  Send the block complete or not at all. A partial block is rejected in the destination's
@@ -4115,10 +4158,26 @@ components:
4115
4158
  `002003` "Database 'UNDEFINED' does not exist" error.
4116
4159
  - |-
4117
4160
  Saving a complete destination connects to the warehouse to create the schema
4118
- (dataset) when it is missing. An unreachable host or unusable credentials fail the
4119
- save with the connection's error — 422 `invalid_host` for SQL Server,
4120
- `big_query_unexpected_error` for BigQuery — and no sync document is created or
4121
- updated; fix the connection rather than changing database or schema names.
4161
+ (dataset) when it is missing. When the host resolves but the connection fails, or
4162
+ the credentials are unusable, the save fails with the connection's error — 422
4163
+ `invalid_host` for SQL Server, `big_query_unexpected_error` for BigQuery — and no
4164
+ sync document is created or updated; fix the connection rather than changing
4165
+ database or schema names.
4166
+ - |-
4167
+ A destination host that doesn't resolve can leave the save without a response for
4168
+ more than 30 seconds, with nothing saved (seen on SQL Server and Snowflake
4169
+ connections). Read the sync back before sending it again.
4170
+ - |-
4171
+ The duplicate_destination_host check compares the database and schema names
4172
+ without regard to case. It refused a pair already used by another sync even when
4173
+ the host, the destination type, the source connection and the integration all
4174
+ differed, so give each sync a schema of its own.
4175
+ - |-
4176
+ A destination whose application differs from the other syncs' in the same
4177
+ integration fails with 422 "The destination type for all the syncs under an
4178
+ integration must be same.", and changing a saved destination to another application
4179
+ fails with 422 "Destination connection type is not same as the previous destination
4180
+ connection type". Another warehouse type needs a new sync in its own integration.
4122
4181
  - |-
4123
4182
  Microsoft SQL Server validates `database` and `schema` as identifiers (start with a
4124
4183
  letter or underscore; letters, digits, underscore or `$`; at most 128 characters) and
@@ -4417,7 +4476,9 @@ components:
4417
4476
  One dataset to create or update in a `PUT /v1/syncs/{_syncId}/datasets` batch.
4418
4477
  Send `externalId` (without `_id`) to create, or `_id` (without `externalId`) to
4419
4478
  update — providing both or neither fails with `400 dataset_externalId_id_required`.
4420
- Updates are full replacements of the writable fields.
4479
+ An update replaces `name`, `tableName` and `exportProperties` with what the item
4480
+ carries, clearing any it omits; an omitted `ingestionMode` or `dataElements` keeps its
4481
+ saved value. Send each update item whole.
4421
4482
  x-celigo-ai-guidance:
4422
4483
  - |-
4423
4484
  Create items with externalId only; update items with _id only. Sending both on one
@@ -4431,6 +4492,16 @@ components:
4431
4492
  - |-
4432
4493
  To scaffold a dataset without replicating it yet, send name, externalId, enable: false
4433
4494
  and no dataElements — the platform then replicates all columns once enabled.
4495
+ - |-
4496
+ A partial update item such as {_id, enable: false} is accepted and clears the dataset's
4497
+ name and tableName — on an export-backed dataset too, whose create requires tableName.
4498
+ Build each update item from the dataset's read-back, minus externalId and the read-only
4499
+ fields.
4500
+ - |-
4501
+ Selections are not checked against the source at save: an externalId the catalog
4502
+ doesn't list, and dataElements names a catalog table doesn't have (even an enabled
4503
+ merge key), save without an error. Take externalId values from the connection's
4504
+ dataset catalog and column names from its details read.
4434
4505
  properties:
4435
4506
  _id:
4436
4507
  type: string
@@ -4483,7 +4554,9 @@ components:
4483
4554
  Destination table name override. Must be unique among the sync's datasets —
4484
4555
  duplicates within the batch or with existing datasets fail with `400
4485
4556
  duplicate_dataset_table_names` / `422 table_name_already_exists`. Required when
4486
- `isExport` is true.
4557
+ `isExport` is true. The save-time check matches exact names only; a name that
4558
+ differs only in case saves, and enabling one of the two then fails with 422
4559
+ "Another dataset in this sync resolves to the same destination table".
4487
4560
  examples:
4488
4561
  - account
4489
4562
  isExport:
@@ -5016,9 +5089,13 @@ components:
5016
5089
  stage:
5017
5090
  type: string
5018
5091
  readOnly: true
5019
- description: Pipeline stage where the error occurred.
5092
+ description: |-
5093
+ Pipeline stage where the error occurred. `init` errors come from the checks a run
5094
+ makes before it extracts — `di_ping_failure` when a connection's host can't be
5095
+ reached — and carry no table.
5020
5096
  examples:
5021
5097
  - extraction
5098
+ - init
5022
5099
  datasetName:
5023
5100
  type: string
5024
5101
  readOnly: true
package/dist/tool.yml CHANGED
@@ -7568,7 +7568,7 @@ components:
7568
7568
  x-celigo-ai-guidance:
7569
7569
  - To change throughput while this is true, write `targetConcurrencyLevel`; a `concurrencyLevel` sent in a PUT returns 200 and changes nothing.
7570
7570
  - Turning it on copies `concurrencyLevel` into `targetConcurrencyLevel`; turning it off unsets the target and leaves `concurrencyLevel` at its current value, which may be below the old target if a recovery was in progress. A `targetConcurrencyLevel` written while this is false is unset by the save.
7571
- - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT must re-send the credentials — omitting them or echoing their masked `******` values clears them.
7571
+ - These four settings (`concurrencyLevel`, `targetConcurrencyLevel`, `_borrowConcurrencyFromConnectionId`, this flag) accept a credential-free `PATCH /v1/connections/{_id}`. A PUT replaces the whole document, so send each secret back as its masked `******` value (that keeps it) or as a new value, and never drop one to keep it — an omitted password or `http.encrypted` is cleared, and a static token left out (with no `refreshMethod`) fails the PUT with 422.
7572
7572
  enableMicroBatchForOneToMany:
7573
7573
  type: boolean
7574
7574
  default: true
@@ -9219,7 +9219,9 @@ components:
9219
9219
  - svc_account
9220
9220
  password:
9221
9221
  type: string
9222
- description: Password for Basic/Digest/WSSE authentication (encrypted at rest).
9222
+ description: |-
9223
+ Password for Basic/Digest/WSSE authentication (encrypted at rest). On update, the
9224
+ masked `"******"` sent back keeps the stored password; a new value replaces it.
9223
9225
  writeOnly: true
9224
9226
  examples:
9225
9227
  - s3cr3t-p4ssw0rd
@@ -9236,6 +9238,7 @@ components:
9236
9238
  type: string
9237
9239
  description: |
9238
9240
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
9241
+ On update, the mask sent back keeps the stored token; a new value replaces it.
9239
9242
  Required unless automatic token refresh is configured.
9240
9243
  examples:
9241
9244
  - my-api-token-EXAMPLE
@@ -9698,7 +9701,8 @@ components:
9698
9701
  Encrypted custom fields for storing sensitive configuration values (API secrets,
9699
9702
  private keys, etc.) that don't fit standard auth fields. Sent as an object of
9700
9703
  field-name/value pairs; values are encrypted at rest. Returned as the masked
9701
- string `"******"` on responses. Field definitions are specified in encryptedFields.
9704
+ string `"******"` on responses; on update, that mask sent back keeps the stored values,
9705
+ and a new object replaces them. Field definitions are specified in encryptedFields.
9702
9706
  examples:
9703
9707
  - apiSecret: s3cr3t-value
9704
9708
  signingKey: another-s3cr3t
@@ -11440,6 +11444,7 @@ components:
11440
11444
  type: string
11441
11445
  description: |
11442
11446
  The API key or bearer token value (encrypted at rest); returned masked as `"******"`.
11447
+ On update, the mask sent back keeps the stored token; a new value replaces it.
11443
11448
  Required unless automatic token refresh is configured.
11444
11449
  examples:
11445
11450
  - my-api-token-EXAMPLE
@@ -19890,7 +19895,8 @@ components:
19890
19895
  x-celigo-ui-override: 'Required by the Event Streams publisher form (fieldDefinitions/resources/imports/import.js: ''topic._topicId'' is required:true, validWhen isNot ''''). The API saves a TopicImport without it, so the requirement is encoded on the request schema to mirror the form and keep publishers bound to a topic.'
19891
19896
  description: |-
19892
19897
  Topic the records are published to. Create or look it up with `GET /v1/topics`; the
19893
- topic must belong to the same account.
19898
+ topic must belong to the same account. A clone of the import made in the same
19899
+ environment keeps `_topicId`.
19894
19900
  x-celigo-ai-guidance:
19895
19901
  - |-
19896
19902
  An id that is not a topic in the account fails the save with 422 `invalid_ref`
@@ -24718,9 +24724,10 @@ components:
24718
24724
  - 'null'
24719
24725
  format: objectId
24720
24726
  x-celigo-refModel: integrations
24721
- description: Integration this import belongs to.
24722
- examples:
24723
- - 60a2c4e6f321d800129a1a3c
24727
+ description: |-
24728
+ Not stored on an import: a value sent on create or on a full update is dropped, and a GET
24729
+ doesn't return the field. An import isn't owned by an integration; to find the flows and
24730
+ other resources that use it, call `GET /v1/imports/{_id}/dependencies`.
24724
24731
  _connectorId:
24725
24732
  type: string
24726
24733
  format: objectId
@@ -30403,7 +30410,9 @@ components:
30403
30410
  description: |-
30404
30411
  Topic this listener subscribes to. Create or look it up with `GET /v1/topics`; the
30405
30412
  topic must belong to the same account. Pointing an existing listener at a different
30406
- topic starts a new subscription, read from `startPosition`.
30413
+ topic starts a new subscription, read from `startPosition`. A clone made in the same
30414
+ environment — of this export, or of a flow that contains it — keeps `_topicId`, so the
30415
+ copy becomes another listener on the topic once its flow is enabled.
30407
30416
  x-celigo-ai-guidance:
30408
30417
  - |-
30409
30418
  An id that is not a topic in the account fails the save with 422 `invalid_ref`
@@ -37517,7 +37526,10 @@ components:
37517
37526
  - 'null'
37518
37527
  format: objectId
37519
37528
  x-celigo-refModel: integrations
37520
- description: Integration this export belongs to.
37529
+ description: |-
37530
+ Not stored on an export: a value sent on create or on a full update is dropped, and a GET
37531
+ doesn't return the field. An export isn't owned by an integration; to find the flows and
37532
+ other resources that use it, call `GET /v1/exports/{_id}/dependencies`.
37521
37533
  _connectorId:
37522
37534
  type: string
37523
37535
  format: objectId
package/dist/topic.yml CHANGED
@@ -616,9 +616,11 @@ paths:
616
616
  summary: Purge retained messages
617
617
  description: |-
618
618
  Removes every retained message from the topic while keeping the topic, its retention setting,
619
- and its subscriptions; the purge cannot be undone. Records an audit entry with `event: purge`
620
- and `fieldChanges[0].fieldPath: messages`. To remove the topic itself, use
621
- `DELETE /v1/topics/{_id}`.
619
+ and its subscriptions; the purge cannot be undone. Positions keep counting: the next message
620
+ published takes the next offset, subscribed listeners receive it as before, and a listener
621
+ whose saved position was purged resumes from the earliest message still retained. Records an
622
+ audit entry with `event: purge` and `fieldChanges[0].fieldPath: messages`. To remove the topic
623
+ itself, use `DELETE /v1/topics/{_id}`.
622
624
  operationId: purgeTopicMessages
623
625
  tags:
624
626
  - Topics
@@ -977,15 +979,19 @@ paths:
977
979
  purge: Retained messages were purged, or the topic was permanently removed from the recycle bin.
978
980
  source:
979
981
  type: string
980
- description: How the change was initiated. Restores from the recycle bin are recorded as `system`.
982
+ description: |-
983
+ How the change was initiated. A change made through the Celigo CLI is recorded as
984
+ `cli` — deletes, restores from the recycle bin, and message purges included.
981
985
  enum:
982
986
  - api
983
987
  - ui
984
988
  - system
989
+ - cli
985
990
  x-enumDescriptions:
986
991
  api: Change made via the REST API.
987
992
  ui: Change made through the Celigo UI.
988
993
  system: Change made by an automated platform process.
994
+ cli: Change made through the Celigo CLI.
989
995
  time:
990
996
  type: string
991
997
  format: date-time
@@ -1651,13 +1657,16 @@ components:
1651
1657
  hasCursor:
1652
1658
  type: boolean
1653
1659
  description: |-
1654
- When true, the export has committed a read position on this topic and its next run resumes
1655
- from `offset`. False when the export has never consumed the topic, when its last committed
1656
- position has expired from the stream, or when it does not listen to this topic at all — a
1657
- listener without a cursor starts from its own `topic.startPosition` (`latest` or `earliest`).
1658
- A listener whose flow is disabled keeps its position; a listener saved without
1659
- `type: "stream"`, or whose flow has not been enabled since the listener was saved, has
1660
- never subscribed and reports false.
1660
+ When true, the listener is subscribed to this topic and its next run resumes from `offset`.
1661
+ The position appears when the listener's flow goes from disabled to enabled, before anything
1662
+ is read: at the end of the stream under `topic.startPosition: latest`, at the first retained
1663
+ message under `earliest`. False when the listener has never subscribed — it was saved
1664
+ without `type: "stream"`, its flow has not gone from disabled to enabled since it was saved
1665
+ (a flow created enabled never subscribes), or it does not listen to this topic. A listener
1666
+ whose flow is disabled keeps its position. When the message at that position is no longer
1667
+ retained — it expired past `retentionMs` or was purged — the listener still reports true
1668
+ with the old `offset`, and its next run resumes from the earliest message still retained,
1669
+ whatever its `startPosition`.
1661
1670
  examples:
1662
1671
  - true
1663
1672
  - false
@@ -1666,8 +1675,9 @@ components:
1666
1675
  minimum: -1
1667
1676
  description: |-
1668
1677
  Zero-based position of the next message the export will read. `-1` when `hasCursor` is
1669
- false. The position counts from the start of the stream, so while no message has expired
1670
- the retained message count minus `offset` is the listener's backlog.
1678
+ false. The position counts from the start of the stream and keeps counting after a purge,
1679
+ so while no message has expired or been purged the retained message count minus `offset`
1680
+ is the listener's backlog.
1671
1681
  examples:
1672
1682
  - 1287
1673
1683
  - -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.145",
3
+ "version": "0.2.147",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [
package/schemas.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "325c42fa",
4
+ "iasCommit": "53d752ea",
5
5
  "generatedAt": "2026-10-21"
6
6
  },
7
7
  "roots": {