@celigo/api-specs 0.2.1

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.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/account.yml +592 -0
  4. package/dist/agent.yml +908 -0
  5. package/dist/ai-agent.yml +5471 -0
  6. package/dist/api.yml +4140 -0
  7. package/dist/apim.yml +1286 -0
  8. package/dist/asynchelper.yml +3391 -0
  9. package/dist/audit.yml +2006 -0
  10. package/dist/connection.yml +8665 -0
  11. package/dist/connector.yml +1406 -0
  12. package/dist/ediprofile.yml +911 -0
  13. package/dist/editransaction.yml +1210 -0
  14. package/dist/enduser.yml +1724 -0
  15. package/dist/environment.yml +568 -0
  16. package/dist/eventreport.yml +692 -0
  17. package/dist/export.yml +17610 -0
  18. package/dist/filedefinition.yml +1396 -0
  19. package/dist/filestorage.yml +3102 -0
  20. package/dist/flow.yml +7928 -0
  21. package/dist/guardrail.yml +2763 -0
  22. package/dist/httpconnector.yml +2277 -0
  23. package/dist/httpconnectorendpoint.yml +722 -0
  24. package/dist/httpconnectorresource.yml +396 -0
  25. package/dist/iclient.yml +4452 -0
  26. package/dist/import.yml +15381 -0
  27. package/dist/integration.yml +4406 -0
  28. package/dist/job.yml +2014 -0
  29. package/dist/lookupcache.yml +1325 -0
  30. package/dist/marketplace.yml +685 -0
  31. package/dist/mcp-oauth-provider.yml +590 -0
  32. package/dist/mcp-server.yml +2656 -0
  33. package/dist/notification.yml +488 -0
  34. package/dist/processor.yml +1253 -0
  35. package/dist/profile.yml +455 -0
  36. package/dist/recyclebin.yml +768 -0
  37. package/dist/script.yml +1128 -0
  38. package/dist/stack.yml +1291 -0
  39. package/dist/state.yml +894 -0
  40. package/dist/subscription.yml +1405 -0
  41. package/dist/sync.yml +4857 -0
  42. package/dist/tag.yml +553 -0
  43. package/dist/template.yml +897 -0
  44. package/dist/tool.yml +33656 -0
  45. package/dist/tradingpartnerconnector.yml +1490 -0
  46. package/dist/user.yml +831 -0
  47. package/package.json +41 -0
  48. package/schemas.json +8420 -0
@@ -0,0 +1,4406 @@
1
+ openapi: 3.2.0
2
+ info:
3
+ version: 1.0.0
4
+ title: Integrations
5
+ description: API for managing Celigo integrations — the top-level containers that group flows, connections, and other resources into one unit.
6
+ servers:
7
+ - url: https://api.integrator.io
8
+ description: Production (US / default region)
9
+ - url: https://api.eu.integrator.io
10
+ description: Production (EU region)
11
+ - url: https://api.au.integrator.io
12
+ description: Production (AU region)
13
+ - url: https://api.ca.integrator.io
14
+ description: Production (CA region)
15
+ security:
16
+ - bearerAuth: []
17
+ tags:
18
+ - name: Integrations
19
+ description: |-
20
+ Integrations are the top-level containers that group flows, connections, exports,
21
+ imports, and other resources into a logical unit. Each integration appears as a tile
22
+ on the Celigo Home page.
23
+
24
+ Two flavors exist:
25
+ - **Standard integrations** — user-created containers that group custom flows.
26
+ - **Integration App installations** — created from a published connector/template,
27
+ with install/uninstall steps, settings forms, editions, and optional child
28
+ integrations. These have `_connectorId` and `_templateId` set.
29
+
30
+ Integrations support **Integration Lifecycle Management (ILM)**: clone an integration
31
+ across environments, then use revisions (snapshot, pull, revert) to promote changes
32
+ between them. Lifecycle operations carry every resource the integration contains.
33
+
34
+ ## Integration schema
35
+
36
+ {% openapi-schemas spec="integration" schemas="Integration" grouped="true" %}
37
+ paths:
38
+ /v1/integrations:
39
+ get:
40
+ x-internal: false
41
+ summary: List integrations
42
+ description: Returns all integrations in the account. Supports field projection via `include`/`exclude`.
43
+ operationId: listIntegrations
44
+ tags:
45
+ - Integrations
46
+ parameters:
47
+ - $ref: '#/components/parameters/Include'
48
+ - $ref: '#/components/parameters/Exclude'
49
+ - name: limit
50
+ in: query
51
+ required: false
52
+ description: Maximum number of integrations to return per page. When more results exist, the response includes a `Link` header with a `rel="next"` URL.
53
+ schema:
54
+ type: integer
55
+ minimum: 1
56
+ examples:
57
+ - 100
58
+ responses:
59
+ '200':
60
+ description: Successfully retrieved list of integrations.
61
+ headers:
62
+ Link:
63
+ description: |
64
+ RFC-5988 pagination links. When more pages remain, includes a `<...>; rel="next"` entry;
65
+ absent on the final page.
66
+ schema:
67
+ type: string
68
+ content:
69
+ application/json:
70
+ schema:
71
+ type: array
72
+ items:
73
+ $ref: '#/components/schemas/Integration'
74
+ examples:
75
+ default:
76
+ value:
77
+ - _id: 6842261335b64c0bcb308e4f
78
+ name: Shopify → NetSuite Orders
79
+ description: Syncs orders, customers, and inventory between Shopify and NetSuite.
80
+ mode: settings
81
+ sandbox: false
82
+ _registeredConnectionIds:
83
+ - 626168f90b6ef816b50c82d7
84
+ - 6553ebdeda62bb22e7fa81ff
85
+ install: []
86
+ installSteps: []
87
+ uninstallSteps: []
88
+ changeEditionSteps: []
89
+ flowGroupings: []
90
+ apiGroupings: []
91
+ createdAt: '2025-06-05T23:19:47.141Z'
92
+ lastModified: '2026-05-02T01:02:27.378Z'
93
+ '204':
94
+ description: No integrations exist in the account
95
+ '401':
96
+ $ref: '#/components/responses/401-unauthorized'
97
+ post:
98
+ x-internal: false
99
+ summary: Create an integration
100
+ description: |-
101
+ Creates a new integration. Only `name` is required — the server populates all other
102
+ fields with defaults. Do not include Integration App fields (`_connectorId`, `_templateId`,
103
+ `install`, `installSteps`, etc.) unless you are creating an IA installation.
104
+ operationId: createIntegration
105
+ tags:
106
+ - Integrations
107
+ requestBody:
108
+ required: true
109
+ content:
110
+ application/json:
111
+ schema:
112
+ $ref: '#/components/schemas/Request'
113
+ examples:
114
+ minimal:
115
+ summary: Minimal create
116
+ value:
117
+ name: Shopify → NetSuite Orders
118
+ with_description:
119
+ summary: With description
120
+ value:
121
+ name: Shopify → NetSuite Orders
122
+ description: Syncs orders, customers, and inventory between Shopify and NetSuite.
123
+ responses:
124
+ '201':
125
+ description: Integration created successfully.
126
+ content:
127
+ application/json:
128
+ schema:
129
+ $ref: '#/components/schemas/Integration'
130
+ examples:
131
+ created:
132
+ summary: Created integration with server-defaulted empty arrays
133
+ value:
134
+ _id: 6842261335b64c0bcb308e4f
135
+ name: Shopify → NetSuite Orders
136
+ description: Syncs orders, customers, and inventory between Shopify and NetSuite.
137
+ sandbox: false
138
+ install: []
139
+ installSteps: []
140
+ uninstallSteps: []
141
+ changeEditionSteps: []
142
+ flowGroupings: []
143
+ apiGroupings: []
144
+ _registeredConnectionIds: []
145
+ _registeredLookupCacheIds: []
146
+ createdAt: '2025-06-05T23:19:47.141Z'
147
+ lastModified: '2025-06-05T23:19:47.141Z'
148
+ '400':
149
+ $ref: '#/components/responses/400-bad-request'
150
+ '401':
151
+ $ref: '#/components/responses/401-unauthorized'
152
+ '422':
153
+ $ref: '#/components/responses/422-unprocessable-entity'
154
+ /v1/integrations/{_id}:
155
+ get:
156
+ x-internal: false
157
+ summary: Get an integration
158
+ operationId: getIntegration
159
+ tags:
160
+ - Integrations
161
+ description: Returns the full integration object.
162
+ parameters:
163
+ - name: _id
164
+ in: path
165
+ required: true
166
+ description: Integration id.
167
+ schema:
168
+ type: string
169
+ format: objectId
170
+ x-celigo-refModel: integrations
171
+ examples:
172
+ - 6842261335b64c0bcb308e4f
173
+ responses:
174
+ '200':
175
+ description: Successfully retrieved integration.
176
+ content:
177
+ application/json:
178
+ schema:
179
+ $ref: '#/components/schemas/Integration'
180
+ examples:
181
+ standard:
182
+ summary: Standard integration
183
+ value:
184
+ _id: 6842261335b64c0bcb308e4f
185
+ name: Shopify → NetSuite Orders
186
+ description: Syncs orders, customers, and inventory.
187
+ mode: settings
188
+ sandbox: false
189
+ _registeredConnectionIds:
190
+ - 626168f90b6ef816b50c82d7
191
+ install: []
192
+ installSteps: []
193
+ uninstallSteps: []
194
+ changeEditionSteps: []
195
+ flowGroupings:
196
+ - _id: 69d42d09b9c28ea0b7e7c0c0
197
+ name: Order sync
198
+ apiGroupings: []
199
+ createdAt: '2025-06-05T23:19:47.141Z'
200
+ lastModified: '2026-05-02T01:02:27.378Z'
201
+ '401':
202
+ $ref: '#/components/responses/401-unauthorized'
203
+ '404':
204
+ $ref: '#/components/responses/404-not-found'
205
+ put:
206
+ x-internal: false
207
+ summary: Update an integration
208
+ operationId: updateIntegration
209
+ tags:
210
+ - Integrations
211
+ description: |-
212
+ Replaces the integration's mutable fields. Send the full object -- omitted fields revert to
213
+ defaults. GET the integration first, modify the fields you need, then PUT back. For partial
214
+ updates to `settings`, `flowGroupings`, or `apiGroupings`, prefer PATCH with JSON Patch
215
+ instead.
216
+ parameters:
217
+ - name: _id
218
+ in: path
219
+ required: true
220
+ description: Integration id.
221
+ schema:
222
+ type: string
223
+ format: objectId
224
+ x-celigo-refModel: integrations
225
+ examples:
226
+ - 6842261335b64c0bcb308e4f
227
+ requestBody:
228
+ required: true
229
+ content:
230
+ application/json:
231
+ schema:
232
+ $ref: '#/components/schemas/Request'
233
+ examples:
234
+ full_replace:
235
+ summary: Full replace — send every field you want to keep
236
+ value:
237
+ name: Shopify → NetSuite Orders
238
+ description: Syncs orders, customers, and inventory between Shopify and NetSuite.
239
+ mode: settings
240
+ flowGroupings:
241
+ - name: Order sync
242
+ responses:
243
+ '200':
244
+ description: Integration updated successfully.
245
+ content:
246
+ application/json:
247
+ schema:
248
+ $ref: '#/components/schemas/Integration'
249
+ examples:
250
+ updated:
251
+ summary: Updated integration
252
+ value:
253
+ _id: 6842261335b64c0bcb308e4f
254
+ name: Shopify → NetSuite Orders
255
+ description: Syncs orders, customers, and inventory between Shopify and NetSuite.
256
+ mode: settings
257
+ sandbox: false
258
+ _registeredConnectionIds:
259
+ - 626168f90b6ef816b50c82d7
260
+ install: []
261
+ installSteps: []
262
+ uninstallSteps: []
263
+ changeEditionSteps: []
264
+ flowGroupings:
265
+ - _id: 69d42d09b9c28ea0b7e7c0c0
266
+ name: Order sync
267
+ apiGroupings: []
268
+ createdAt: '2025-06-05T23:19:47.141Z'
269
+ lastModified: '2026-06-09T17:32:31.412Z'
270
+ '401':
271
+ $ref: '#/components/responses/401-unauthorized'
272
+ '404':
273
+ $ref: '#/components/responses/404-not-found'
274
+ '422':
275
+ $ref: '#/components/responses/422-unprocessable-entity'
276
+ patch:
277
+ x-internal: false
278
+ summary: Patch an integration
279
+ description: |-
280
+ Partially updates an integration using a JSON Patch document (RFC 6902).
281
+ Only the `replace` operation is supported, and only on the following
282
+ whitelisted paths:
283
+
284
+ | Path | Description |
285
+ |------|-------------|
286
+ | `/settings` | Integration settings object |
287
+ | `/flowGroupings` | Flow grouping configuration |
288
+ | `/apiGroupings` | API grouping configuration |
289
+
290
+ All other paths are rejected with `422`.
291
+ operationId: patchIntegration
292
+ tags:
293
+ - Integrations
294
+ parameters:
295
+ - name: _id
296
+ in: path
297
+ required: true
298
+ description: Integration id.
299
+ schema:
300
+ type: string
301
+ format: objectId
302
+ x-celigo-refModel: integrations
303
+ examples:
304
+ - 6842261335b64c0bcb308e4f
305
+ requestBody:
306
+ required: true
307
+ content:
308
+ application/json:
309
+ schema:
310
+ $ref: '#/components/schemas/JsonPatchRequest'
311
+ examples:
312
+ update_settings:
313
+ summary: Update integration settings
314
+ value:
315
+ - op: replace
316
+ path: /settings
317
+ value:
318
+ region: us-west-2
319
+ responses:
320
+ '204':
321
+ description: Integration patched successfully
322
+ '401':
323
+ $ref: '#/components/responses/401-unauthorized'
324
+ '404':
325
+ $ref: '#/components/responses/404-not-found'
326
+ '422':
327
+ $ref: '#/components/responses/422-unprocessable-entity'
328
+ delete:
329
+ x-internal: false
330
+ summary: Delete an integration
331
+ operationId: deleteIntegration
332
+ tags:
333
+ - Integrations
334
+ description: |-
335
+ Deletes an integration. The integration is soft-deleted and retained in the
336
+ recycle bin for 30 days before permanent removal.
337
+ parameters:
338
+ - name: _id
339
+ in: path
340
+ required: true
341
+ description: Integration id.
342
+ schema:
343
+ type: string
344
+ format: objectId
345
+ x-celigo-refModel: integrations
346
+ examples:
347
+ - 6842261335b64c0bcb308e4f
348
+ responses:
349
+ '204':
350
+ description: integration deleted successfully
351
+ '401':
352
+ $ref: '#/components/responses/401-unauthorized'
353
+ '404':
354
+ $ref: '#/components/responses/404-not-found'
355
+ '422':
356
+ $ref: '#/components/responses/422-dependency-conflict'
357
+ /v1/integrations/{_id}/clone:
358
+ post:
359
+ x-internal: false
360
+ summary: Clone an integration
361
+ description: |
362
+ Creates a copy of an existing integration.
363
+ Supports optionally remapping referenced connections (via connectionMap).
364
+ operationId: cloneIntegration
365
+ tags:
366
+ - Integrations
367
+ parameters:
368
+ - name: _id
369
+ in: path
370
+ description: The unique identifier of the integration to clone
371
+ required: true
372
+ schema:
373
+ type: string
374
+ format: objectId
375
+ x-celigo-refModel: integrations
376
+ examples:
377
+ - 69680d7111d1437fbcbce534
378
+ requestBody:
379
+ required: false
380
+ content:
381
+ application/json:
382
+ schema:
383
+ $ref: '#/components/schemas/CloneRequest'
384
+ examples:
385
+ cross_env_clone:
386
+ summary: Clone into another environment, remapping both connections
387
+ value:
388
+ _envId: 67b123456789abcdef012345
389
+ connectionMap:
390
+ 626168f90b6ef816b50c82d7: 64a1234567890abcdef12345
391
+ 6553ebdeda62bb22e7fa81ff: 64a1234567890abcdef12346
392
+ responses:
393
+ '200':
394
+ description: Integration cloned successfully
395
+ content:
396
+ application/json:
397
+ schema:
398
+ $ref: '#/components/schemas/CloneResponse'
399
+ examples:
400
+ manifest:
401
+ summary: Manifest of created resources — mapped connections are reused, not cloned
402
+ value:
403
+ - model: Integration
404
+ _id: 68f52162f00a35a1b26eaafb
405
+ name: Clone - Shopify → NetSuite Orders
406
+ '400':
407
+ $ref: '#/components/responses/400-bad-request'
408
+ '401':
409
+ $ref: '#/components/responses/401-unauthorized'
410
+ '404':
411
+ $ref: '#/components/responses/404-not-found'
412
+ /v1/integrations/{_id}/clone/preview:
413
+ get:
414
+ x-internal: false
415
+ summary: Preview cloning an integration
416
+ description: |
417
+ Returns a preview of the resources that would be created by cloning the specified integration.
418
+ The response includes the integration and all transitive dependencies — flows, connections,
419
+ exports, imports, scripts, async helpers, lookup caches, and tools.
420
+ No resources are created by this endpoint.
421
+ operationId: previewCloneIntegration
422
+ tags:
423
+ - Integrations
424
+ parameters:
425
+ - name: _id
426
+ in: path
427
+ description: The unique identifier of the integration to preview cloning
428
+ required: true
429
+ schema:
430
+ type: string
431
+ format: objectId
432
+ x-celigo-refModel: integrations
433
+ examples:
434
+ - 69680d7111d1437fbcbce534
435
+ responses:
436
+ '200':
437
+ description: Clone preview retrieved successfully
438
+ content:
439
+ application/json:
440
+ schema:
441
+ $ref: '#/components/schemas/ClonePreviewResponse'
442
+ examples:
443
+ preview:
444
+ summary: Integration with one flow and its transitive dependencies
445
+ value:
446
+ objects:
447
+ - model: Integration
448
+ doc:
449
+ _id: 6842261335b64c0bcb308e4f
450
+ name: Shopify → NetSuite Orders
451
+ - model: Flow
452
+ doc:
453
+ _id: 69f54d6b7009ea11abad707a
454
+ name: Shopify orders → NetSuite
455
+ _integrationId: 6842261335b64c0bcb308e4f
456
+ - model: Export
457
+ doc:
458
+ _id: 69f54d6a3469e3f5597848a1
459
+ name: Shopify new orders
460
+ _connectionId: 626168f90b6ef816b50c82d7
461
+ - model: Import
462
+ doc:
463
+ _id: 69f54d6c1e7f3a22cc7848b2
464
+ name: NetSuite sales orders
465
+ _connectionId: 6553ebdeda62bb22e7fa81ff
466
+ - model: Connection
467
+ doc:
468
+ _id: 626168f90b6ef816b50c82d7
469
+ name: Shopify storefront
470
+ type: http
471
+ - model: Tool
472
+ doc:
473
+ _id: 69d462d5b9c28ea0b7f82522
474
+ name: Get Shopify Order
475
+ _integrationId: 6842261335b64c0bcb308e4f
476
+ stackRequired: false
477
+ _stackId: null
478
+ '400':
479
+ description: The `_id` is not a valid ObjectId.
480
+ content:
481
+ application/json:
482
+ schema:
483
+ $ref: '#/components/schemas/Error'
484
+ examples:
485
+ invalid_ref:
486
+ summary: Invalid ObjectId format
487
+ value:
488
+ errors:
489
+ - code: invalid_ref
490
+ message: Please provide a valid _id.
491
+ '401':
492
+ $ref: '#/components/responses/401-unauthorized'
493
+ '404':
494
+ $ref: '#/components/responses/404-not-found'
495
+ /v1/integrations/{_id}/revisions:
496
+ get:
497
+ x-internal: false
498
+ operationId: listIntegrationRevisions
499
+ tags:
500
+ - Integrations
501
+ summary: List revisions for an integration
502
+ description: |-
503
+ Returns every revision entry (snapshots, pulls, reverts) for the integration, newest first.
504
+ An integration with no revision history returns an empty response (204), not `[]`.
505
+ parameters:
506
+ - name: _id
507
+ in: path
508
+ required: true
509
+ description: Integration id.
510
+ schema:
511
+ type: string
512
+ format: objectId
513
+ x-celigo-refModel: integrations
514
+ examples:
515
+ - 6842261335b64c0bcb308e4f
516
+ responses:
517
+ '200':
518
+ description: Revision history, newest first.
519
+ content:
520
+ application/json:
521
+ schema:
522
+ $ref: '#/components/schemas/RevisionsResponse'
523
+ examples:
524
+ one_snapshot:
525
+ summary: History with one completed snapshot
526
+ value:
527
+ - _id: 6a28d2af6d42eb08f8e863e7
528
+ type: snapshot
529
+ status: completed
530
+ description: Stable baseline before deploying v2
531
+ _integrationId: 6842261335b64c0bcb308e4f
532
+ _fromIntegrationId: 6842261335b64c0bcb308e4f
533
+ fromIntegrationName: Shopify → NetSuite Orders
534
+ beforeRevisionHash: 34b7ae8d56563e242bc0bd42fd28874442657e58
535
+ sandbox: false
536
+ _createdByUserId: 624774a6a7574d3ed9f9a5cc
537
+ installSteps: []
538
+ createdAt: '2026-06-10T02:57:51.483Z'
539
+ lastModified: '2026-06-10T02:57:51.483Z'
540
+ '204':
541
+ description: No revisions exist for this integration.
542
+ '401':
543
+ $ref: '#/components/responses/401-unauthorized'
544
+ '404':
545
+ $ref: '#/components/responses/404-not-found'
546
+ /v1/integrations/{_id}/revisions/{_revisionId}:
547
+ get:
548
+ x-internal: false
549
+ operationId: getIntegrationRevision
550
+ tags:
551
+ - Integrations
552
+ summary: Get a revision
553
+ description: |-
554
+ Returns the full revision record. The list endpoint already surfaces every field, so this is
555
+ primarily useful when you have a `_revisionId` in hand (e.g. from a webhook, audit log, or
556
+ external reference) and want to verify state without re-listing.
557
+ parameters:
558
+ - name: _id
559
+ in: path
560
+ required: true
561
+ description: Integration id.
562
+ schema:
563
+ type: string
564
+ format: objectId
565
+ x-celigo-refModel: integrations
566
+ examples:
567
+ - 6842261335b64c0bcb308e4f
568
+ - name: _revisionId
569
+ in: path
570
+ required: true
571
+ description: Revision id.
572
+ schema:
573
+ type: string
574
+ format: objectId
575
+ examples:
576
+ - 6a28d2af6d42eb08f8e863e7
577
+ responses:
578
+ '200':
579
+ description: Revision record.
580
+ content:
581
+ application/json:
582
+ schema:
583
+ $ref: '#/components/schemas/Revision'
584
+ examples:
585
+ snapshot:
586
+ summary: Completed snapshot revision
587
+ value:
588
+ _id: 6a28d2af6d42eb08f8e863e7
589
+ type: snapshot
590
+ status: completed
591
+ description: Stable baseline before deploying v2
592
+ _integrationId: 6842261335b64c0bcb308e4f
593
+ _fromIntegrationId: 6842261335b64c0bcb308e4f
594
+ fromIntegrationName: Shopify → NetSuite Orders
595
+ beforeRevisionHash: 34b7ae8d56563e242bc0bd42fd28874442657e58
596
+ sandbox: false
597
+ _createdByUserId: 624774a6a7574d3ed9f9a5cc
598
+ installSteps: []
599
+ createdAt: '2026-06-10T02:57:51.483Z'
600
+ lastModified: '2026-06-10T02:57:51.483Z'
601
+ '401':
602
+ $ref: '#/components/responses/401-unauthorized'
603
+ '404':
604
+ $ref: '#/components/responses/404-not-found'
605
+ /v1/integrations/{_id}/revisions/create:
606
+ post:
607
+ x-internal: false
608
+ operationId: createIntegrationRevision
609
+ tags:
610
+ - Integrations
611
+ summary: Create a snapshot revision
612
+ description: |-
613
+ Takes a point-in-time snapshot of the integration's current state and writes it to the revision
614
+ history. The returned revision has `type: snapshot` and `status: completed` immediately --
615
+ snapshots are synchronous and do not require an apply step. This is the only revision type
616
+ that can be created via the public API; `pull` and `revert` revisions require the Celigo UI.
617
+ parameters:
618
+ - name: _id
619
+ in: path
620
+ required: true
621
+ description: Integration id.
622
+ schema:
623
+ type: string
624
+ format: objectId
625
+ x-celigo-refModel: integrations
626
+ examples:
627
+ - 6842261335b64c0bcb308e4f
628
+ requestBody:
629
+ required: true
630
+ content:
631
+ application/json:
632
+ schema:
633
+ $ref: '#/components/schemas/RevisionCreateRequest'
634
+ examples:
635
+ default:
636
+ value:
637
+ description: Stable baseline before deploying v2
638
+ responses:
639
+ '201':
640
+ description: Snapshot revision created.
641
+ content:
642
+ application/json:
643
+ schema:
644
+ $ref: '#/components/schemas/Revision'
645
+ examples:
646
+ snapshot_created:
647
+ summary: Snapshot revision — completed immediately
648
+ value:
649
+ _id: 6a28d2af6d42eb08f8e863e7
650
+ type: snapshot
651
+ status: completed
652
+ description: Stable baseline before deploying v2
653
+ _integrationId: 6842261335b64c0bcb308e4f
654
+ _fromIntegrationId: 6842261335b64c0bcb308e4f
655
+ fromIntegrationName: Shopify → NetSuite Orders
656
+ beforeRevisionHash: 34b7ae8d56563e242bc0bd42fd28874442657e58
657
+ sandbox: false
658
+ _createdByUserId: 624774a6a7574d3ed9f9a5cc
659
+ installSteps: []
660
+ createdAt: '2026-06-10T02:57:51.483Z'
661
+ lastModified: '2026-06-10T02:57:51.483Z'
662
+ '400':
663
+ $ref: '#/components/responses/400-bad-request'
664
+ '401':
665
+ $ref: '#/components/responses/401-unauthorized'
666
+ '404':
667
+ $ref: '#/components/responses/404-not-found'
668
+ /v1/integrations/{_id}/revisions/{_revisionId}/diff:
669
+ get:
670
+ x-internal: false
671
+ operationId: getIntegrationRevisionDiff
672
+ tags:
673
+ - Integrations
674
+ summary: Diff a pending revision
675
+ description: |-
676
+ Returns the before/after diff for a pull or revert revision. The diff is materialized on `pull`
677
+ and `revert` revisions and is retained on their `completed` state -- available for both
678
+ `inprogress` and `completed` pull/revert revisions. Snapshot revisions are not diffable
679
+ (there is no source integration to diff against), and `canceled` revisions drop their diff.
680
+
681
+ The response body is a `{before, after}` envelope where each side is a map keyed by resource
682
+ type (e.g. `flow`, `export`, `connection`, `api`, `tool`) whose values are maps of resourceId
683
+ to full resource snapshot.
684
+ parameters:
685
+ - name: _id
686
+ in: path
687
+ required: true
688
+ description: Integration id.
689
+ schema:
690
+ type: string
691
+ format: objectId
692
+ x-celigo-refModel: integrations
693
+ examples:
694
+ - 6842261335b64c0bcb308e4f
695
+ - name: _revisionId
696
+ in: path
697
+ required: true
698
+ description: Revision id. Must be a `pull` or `revert` revision in `inprogress` or `completed` state.
699
+ schema:
700
+ type: string
701
+ format: objectId
702
+ examples:
703
+ - 6a28d2af6d42eb08f8e863e7
704
+ responses:
705
+ '200':
706
+ description: Diff envelope for the pending revision.
707
+ content:
708
+ application/json:
709
+ schema:
710
+ $ref: '#/components/schemas/RevisionDiffResponse'
711
+ examples:
712
+ flow_change:
713
+ summary: Pull revision that re-enables a flow
714
+ value:
715
+ before:
716
+ flow:
717
+ 69f54d6b7009ea11abad707a:
718
+ name: Shopify orders → NetSuite
719
+ disabled: true
720
+ after:
721
+ flow:
722
+ 69f54d6b7009ea11abad707a:
723
+ name: Shopify orders → NetSuite
724
+ disabled: false
725
+ '400':
726
+ description: |-
727
+ Revision is not in a diffable state. Error code `invalid_revision_state`. Occurs on
728
+ snapshot revisions (no source to diff against), `canceled` revisions (diff dropped), and
729
+ `inprogress` revisions whose install steps haven't materialized yet.
730
+ content:
731
+ application/json:
732
+ schema:
733
+ $ref: '#/components/schemas/Error'
734
+ examples:
735
+ invalid_revision_state:
736
+ value:
737
+ errors:
738
+ - message: Failed to perform operation. Revision is in an invalid state
739
+ code: invalid_revision_state
740
+ '401':
741
+ $ref: '#/components/responses/401-unauthorized'
742
+ '404':
743
+ $ref: '#/components/responses/404-not-found'
744
+ /v1/integrations/{_id}/errors:
745
+ get:
746
+ x-internal: false
747
+ operationId: listIntegrationErrors
748
+ tags:
749
+ - Integrations
750
+ summary: Summarize open errors across an integration's flows
751
+ description: |-
752
+ Returns a per-flow count of currently open (unresolved) errors for every flow in the integration.
753
+ Flows with zero open errors still appear so callers see the full flow roster; `lastErrorAt` is
754
+ only populated when `numError > 0`. Entries do not contain individual error ids -- to get
755
+ actionable error records, drill into `GET /v1/flows/{_flowId}/{_stepId}/errors` for each flow
756
+ and step.
757
+ parameters:
758
+ - name: _id
759
+ in: path
760
+ required: true
761
+ description: Integration id.
762
+ schema:
763
+ type: string
764
+ format: objectId
765
+ x-celigo-refModel: integrations
766
+ examples:
767
+ - 6842261335b64c0bcb308e4f
768
+ responses:
769
+ '200':
770
+ description: Per-flow open-error summary.
771
+ content:
772
+ application/json:
773
+ schema:
774
+ $ref: '#/components/schemas/IntegrationErrorsResponse'
775
+ examples:
776
+ mixed:
777
+ summary: Integration with mixed flows (one with errors, two clean)
778
+ value:
779
+ - _flowId: 69497fc443fc1f9a03d31bd9
780
+ numError: 2
781
+ lastErrorAt: '2026-04-12T21:51:39.257Z'
782
+ - _flowId: 6949809c3f70c4486d2dae88
783
+ numError: 0
784
+ - _flowId: 683b8ef5774ae78d3b9b8a89
785
+ numError: 0
786
+ '204':
787
+ description: Integration has no flows with any reported error state.
788
+ '400':
789
+ $ref: '#/components/responses/400-bad-request'
790
+ '401':
791
+ $ref: '#/components/responses/401-unauthorized'
792
+ '404':
793
+ $ref: '#/components/responses/404-not-found'
794
+ /v1/integrations/{_id}/errors/assign:
795
+ put:
796
+ x-internal: false
797
+ operationId: assignIntegrationErrors
798
+ tags:
799
+ - Integrations
800
+ summary: (Legacy) Assign open errors to a user across an integration
801
+ description: |-
802
+ Tags a batch of open errors with an assignee. Errors stay open; this does not resolve or retry
803
+ them. The `email` must resolve to a user with access to the account.
804
+
805
+ Prefer `PUT /v1/flows/{_flowId}/{_stepId}/errors/assign` instead -- it works with a plain
806
+ bearer token and requires no extra headers. This integration-level endpoint requires an
807
+ `integrator-ashareid` header, and account-owner PATs have no ashare pointing at themselves, so
808
+ they cannot call it directly.
809
+ parameters:
810
+ - name: integrator-ashareid
811
+ in: header
812
+ required: false
813
+ description: |-
814
+ Account-share id scoping the request to a specific shared-account context. Only accepted
815
+ when the bearer token's user is the `sharedWithUser` of that ashare. Not required by the
816
+ per-step fallback — prefer that endpoint instead.
817
+ schema:
818
+ type: string
819
+ format: objectId
820
+ examples:
821
+ - 6798f4dc43db9184f4bc8ee0
822
+ - name: _id
823
+ in: path
824
+ required: true
825
+ description: Integration id.
826
+ schema:
827
+ type: string
828
+ format: objectId
829
+ x-celigo-refModel: integrations
830
+ examples:
831
+ - 6842261335b64c0bcb308e4f
832
+ requestBody:
833
+ required: true
834
+ content:
835
+ application/json:
836
+ schema:
837
+ $ref: '#/components/schemas/IntegrationErrorsAssignRequest'
838
+ examples:
839
+ default:
840
+ value:
841
+ errorIds:
842
+ - '6044134138'
843
+ - '6027562904'
844
+ email: user@example.com
845
+ responses:
846
+ '200':
847
+ description: Errors assigned. Body echoes which ids were affected.
848
+ content:
849
+ application/json:
850
+ schema:
851
+ $ref: '#/components/schemas/IntegrationErrorsAssignResponse'
852
+ examples:
853
+ default:
854
+ value:
855
+ errorsToReturn:
856
+ - '6044134138'
857
+ '400':
858
+ $ref: '#/components/responses/400-bad-request'
859
+ '401':
860
+ $ref: '#/components/responses/401-unauthorized'
861
+ '403':
862
+ description: |-
863
+ `integrator-ashareid` is malformed (not a 24-char hex id). Error code:
864
+ `invalid_header_value`.
865
+ content:
866
+ application/json:
867
+ schema:
868
+ $ref: '#/components/schemas/Error'
869
+ examples:
870
+ invalid_header_value:
871
+ value:
872
+ errors:
873
+ - code: invalid_header_value
874
+ message: The value provided for request header Integrator-AShareId is invalid.
875
+ '404':
876
+ description: |-
877
+ Either the integration is unknown, no `integrator-ashareid` was sent (code: `invalid_ref`,
878
+ message: "Integration not found."), or the header references a share whose `sharedWithUser`
879
+ isn't the bearer token's user (code: `access_restricted`).
880
+ content:
881
+ application/json:
882
+ schema:
883
+ $ref: '#/components/schemas/Error'
884
+ examples:
885
+ invalid_ref:
886
+ summary: No ashare header sent
887
+ value:
888
+ errors:
889
+ - code: invalid_ref
890
+ message: Integration not found.
891
+ /v1/integrations/{_id}/clonefamily:
892
+ get:
893
+ x-internal: false
894
+ operationId: listIntegrationCloneFamily
895
+ tags:
896
+ - Integrations
897
+ summary: List an integration's clone family
898
+ description: |-
899
+ Returns every member of the integration's clone family -- the original plus every clone
900
+ (recursively, across environments). Used by ILM to decide which integrations can be pull/push
901
+ sources or targets for the current integration.
902
+
903
+ This endpoint requires the `integrator-ashareid` header to establish a shared-account context.
904
+ For simpler clone-relationship lookups, the integration's own `_sourceId` field points to the
905
+ parent it was cloned from, and `GET /v1/integrations?_sourceId=<id>` lists the children.
906
+ parameters:
907
+ - name: integrator-ashareid
908
+ in: header
909
+ required: true
910
+ description: |-
911
+ Account-share id that scopes the request to a specific shared-account context. The bearer
912
+ token's user must be the `sharedWithUser` of this ashare.
913
+ schema:
914
+ type: string
915
+ format: objectId
916
+ examples:
917
+ - 6798f4dc43db9184f4bc8ee0
918
+ - name: _id
919
+ in: path
920
+ required: true
921
+ description: Integration id.
922
+ schema:
923
+ type: string
924
+ format: objectId
925
+ x-celigo-refModel: integrations
926
+ examples:
927
+ - 6842261335b64c0bcb308e4f
928
+ responses:
929
+ '200':
930
+ description: Clone family members.
931
+ content:
932
+ application/json:
933
+ schema:
934
+ $ref: '#/components/schemas/CloneFamilyResponse'
935
+ examples:
936
+ family:
937
+ summary: Original integration plus one clone in another environment
938
+ value:
939
+ - _id: 6842261335b64c0bcb308e4f
940
+ name: Shopify → NetSuite Orders
941
+ - _id: 68f52162f00a35a1b26eaafb
942
+ name: Clone - Shopify → NetSuite Orders
943
+ _envId: 67b123456789abcdef012345
944
+ '401':
945
+ $ref: '#/components/responses/401-unauthorized'
946
+ '403':
947
+ description: |-
948
+ Either the `integrator-ashareid` header is malformed (code: `invalid_header_value`) or it
949
+ was omitted entirely (code: `get_not_allowed`, "GET resource not allowed for the given
950
+ model.").
951
+ content:
952
+ application/json:
953
+ schema:
954
+ $ref: '#/components/schemas/Error'
955
+ examples:
956
+ get_not_allowed:
957
+ summary: Header omitted entirely
958
+ value:
959
+ errors:
960
+ - code: get_not_allowed
961
+ message: GET resource not allowed for the given model.
962
+ invalid_header_value:
963
+ summary: Header malformed (not a 24-char hex id)
964
+ value:
965
+ errors:
966
+ - code: invalid_header_value
967
+ message: The value provided for request header Integrator-AShareId is invalid.
968
+ '404':
969
+ description: |-
970
+ Integration unknown, or the `integrator-ashareid` references a share whose `sharedWithUser`
971
+ isn't the bearer token's user (code: `access_restricted`).
972
+ content:
973
+ application/json:
974
+ schema:
975
+ $ref: '#/components/schemas/Error'
976
+ examples:
977
+ access_restricted:
978
+ value:
979
+ errors:
980
+ - code: access_restricted
981
+ message: Your access to an integrator.io environment or account has been disabled. For more information, contact account administrator.
982
+ /v1/integrations/{_id}/flows:
983
+ get:
984
+ x-internal: false
985
+ operationId: listIntegrationFlows
986
+ tags:
987
+ - Integrations
988
+ summary: List flows belonging to an integration
989
+ description: |-
990
+ Returns a bare array of full flow objects for every flow in the integration. Each element
991
+ is a complete flow resource, the same shape as `GET /v1/flows/{_id}`.
992
+ parameters:
993
+ - name: _id
994
+ in: path
995
+ required: true
996
+ description: Integration id.
997
+ schema:
998
+ type: string
999
+ format: objectId
1000
+ x-celigo-refModel: integrations
1001
+ examples:
1002
+ - 6842261335b64c0bcb308e4f
1003
+ - name: limit
1004
+ in: query
1005
+ required: false
1006
+ description: Maximum number of flow objects to return.
1007
+ schema:
1008
+ type: integer
1009
+ minimum: 1
1010
+ examples:
1011
+ - 100
1012
+ - name: includeInstances
1013
+ in: query
1014
+ required: false
1015
+ description: |-
1016
+ When true, instance flows generated from abstract (multi-instance)
1017
+ flows are included in the results, which otherwise list only
1018
+ regular and abstract flows.
1019
+ schema:
1020
+ type: boolean
1021
+ responses:
1022
+ '200':
1023
+ description: Array of flow objects.
1024
+ content:
1025
+ application/json:
1026
+ schema:
1027
+ type: array
1028
+ description: Bare array of full flow resource objects.
1029
+ items:
1030
+ type: object
1031
+ description: A flow resource. Same shape as returned by `GET /v1/flows/{_id}`.
1032
+ examples:
1033
+ one_flow:
1034
+ summary: Integration with one flow
1035
+ value:
1036
+ - _id: 69f54d6b7009ea11abad707a
1037
+ name: Shopify orders → NetSuite
1038
+ _integrationId: 6842261335b64c0bcb308e4f
1039
+ disabled: false
1040
+ pageGenerators:
1041
+ - _exportId: 69f54d6a3469e3f5597848a1
1042
+ pageProcessors:
1043
+ - type: import
1044
+ _importId: 69f54d6c1e7f3a22cc7848b2
1045
+ createdAt: '2026-05-02T01:03:39.871Z'
1046
+ lastModified: '2026-05-02T01:03:39.871Z'
1047
+ '204':
1048
+ description: Integration has no flows.
1049
+ '401':
1050
+ $ref: '#/components/responses/401-unauthorized'
1051
+ '404':
1052
+ $ref: '#/components/responses/404-not-found'
1053
+ /v1/integrations/{_id}/imports:
1054
+ get:
1055
+ x-internal: false
1056
+ operationId: listIntegrationImports
1057
+ tags:
1058
+ - Integrations
1059
+ summary: List imports belonging to an integration
1060
+ description: |-
1061
+ Returns a bare array of full import objects for every import in the integration. Each element
1062
+ is a complete import resource, the same shape as `GET /v1/imports/{_id}`.
1063
+ parameters:
1064
+ - name: _id
1065
+ in: path
1066
+ required: true
1067
+ description: Integration id.
1068
+ schema:
1069
+ type: string
1070
+ format: objectId
1071
+ x-celigo-refModel: integrations
1072
+ examples:
1073
+ - 6842261335b64c0bcb308e4f
1074
+ - name: limit
1075
+ in: query
1076
+ required: false
1077
+ description: |-
1078
+ Maximum number of import objects to return. **Bug:** the server returns N+1 items for a
1079
+ `limit=N` value.
1080
+ schema:
1081
+ type: integer
1082
+ minimum: 1
1083
+ examples:
1084
+ - 100
1085
+ responses:
1086
+ '200':
1087
+ description: Array of import objects.
1088
+ content:
1089
+ application/json:
1090
+ schema:
1091
+ type: array
1092
+ description: Bare array of full import resource objects.
1093
+ items:
1094
+ type: object
1095
+ description: An import resource. Same shape as returned by `GET /v1/imports/{_id}`.
1096
+ examples:
1097
+ one_import:
1098
+ summary: Integration with one import
1099
+ value:
1100
+ - _id: 69f54d6c1e7f3a22cc7848b2
1101
+ name: NetSuite sales orders
1102
+ _connectionId: 6553ebdeda62bb22e7fa81ff
1103
+ adaptorType: NetSuiteDistributedImport
1104
+ distributed: true
1105
+ netsuite_da:
1106
+ recordType: salesorder
1107
+ operation: add
1108
+ createdAt: '2026-05-02T01:03:40.027Z'
1109
+ lastModified: '2026-05-02T01:03:40.027Z'
1110
+ '204':
1111
+ description: Integration has no imports.
1112
+ '401':
1113
+ $ref: '#/components/responses/401-unauthorized'
1114
+ '404':
1115
+ $ref: '#/components/responses/404-not-found'
1116
+ /v1/integrations/{_id}/exports:
1117
+ get:
1118
+ x-internal: false
1119
+ operationId: listIntegrationExports
1120
+ tags:
1121
+ - Integrations
1122
+ summary: List exports belonging to an integration
1123
+ description: |-
1124
+ Returns a bare array of full export objects for every export in the integration. Each element
1125
+ is a complete export resource, the same shape as `GET /v1/exports/{_id}`.
1126
+ parameters:
1127
+ - name: _id
1128
+ in: path
1129
+ required: true
1130
+ description: Integration id.
1131
+ schema:
1132
+ type: string
1133
+ format: objectId
1134
+ x-celigo-refModel: integrations
1135
+ examples:
1136
+ - 6842261335b64c0bcb308e4f
1137
+ - name: limit
1138
+ in: query
1139
+ required: false
1140
+ description: |-
1141
+ Maximum number of export objects to return. **Bug:** the server returns N+1 items for a
1142
+ `limit=N` value.
1143
+ schema:
1144
+ type: integer
1145
+ minimum: 1
1146
+ examples:
1147
+ - 100
1148
+ responses:
1149
+ '200':
1150
+ description: Array of export objects.
1151
+ content:
1152
+ application/json:
1153
+ schema:
1154
+ type: array
1155
+ description: Bare array of full export resource objects.
1156
+ items:
1157
+ type: object
1158
+ description: An export resource. Same shape as returned by `GET /v1/exports/{_id}`.
1159
+ examples:
1160
+ one_export:
1161
+ summary: Integration with one export
1162
+ value:
1163
+ - _id: 69f54d6a3469e3f5597848a1
1164
+ name: Shopify new orders
1165
+ _connectionId: 626168f90b6ef816b50c82d7
1166
+ adaptorType: HTTPExport
1167
+ http:
1168
+ relativeURI: /admin/api/2024-04/orders.json
1169
+ method: GET
1170
+ createdAt: '2026-05-02T01:03:38.214Z'
1171
+ lastModified: '2026-05-02T01:03:38.214Z'
1172
+ '204':
1173
+ description: Integration has no exports.
1174
+ '401':
1175
+ $ref: '#/components/responses/401-unauthorized'
1176
+ '404':
1177
+ $ref: '#/components/responses/404-not-found'
1178
+ /v1/integrations/{_id}/connections:
1179
+ get:
1180
+ x-internal: false
1181
+ operationId: listIntegrationConnections
1182
+ tags:
1183
+ - Integrations
1184
+ summary: List connections belonging to an integration
1185
+ description: |-
1186
+ Returns a bare array of full connection objects for every connection registered to the
1187
+ integration. Each element is a complete connection resource, the same shape as
1188
+ `GET /v1/connections/{_id}`. Unlike the flows/imports/exports sub-resource endpoints, this
1189
+ endpoint rejects unknown integration ids with a 404.
1190
+ parameters:
1191
+ - name: _id
1192
+ in: path
1193
+ required: true
1194
+ description: Integration id.
1195
+ schema:
1196
+ type: string
1197
+ format: objectId
1198
+ x-celigo-refModel: integrations
1199
+ examples:
1200
+ - 6842261335b64c0bcb308e4f
1201
+ - name: limit
1202
+ in: query
1203
+ required: false
1204
+ description: Maximum number of connection objects to return.
1205
+ schema:
1206
+ type: integer
1207
+ minimum: 1
1208
+ examples:
1209
+ - 100
1210
+ responses:
1211
+ '200':
1212
+ description: Array of connection objects.
1213
+ content:
1214
+ application/json:
1215
+ schema:
1216
+ type: array
1217
+ description: Bare array of full connection resource objects.
1218
+ items:
1219
+ type: object
1220
+ description: A connection resource. Same shape as returned by `GET /v1/connections/{_id}`.
1221
+ examples:
1222
+ one_connection:
1223
+ summary: Integration with one registered connection
1224
+ value:
1225
+ - _id: 626168f90b6ef816b50c82d7
1226
+ name: Shopify storefront
1227
+ type: http
1228
+ sandbox: false
1229
+ http:
1230
+ formType: rest
1231
+ mediaType: json
1232
+ baseURI: https://celigo-demo.myshopify.com
1233
+ auth:
1234
+ type: basic
1235
+ createdAt: '2022-04-21T14:23:53.118Z'
1236
+ lastModified: '2026-05-02T01:02:27.378Z'
1237
+ '204':
1238
+ description: Integration has no connections.
1239
+ '401':
1240
+ $ref: '#/components/responses/401-unauthorized'
1241
+ '404':
1242
+ $ref: '#/components/responses/404-not-found'
1243
+ /v1/integrations/{_id}/asynchelpers:
1244
+ get:
1245
+ x-internal: false
1246
+ operationId: listIntegrationAsyncHelpers
1247
+ tags:
1248
+ - Integrations
1249
+ summary: List async helpers belonging to an integration
1250
+ description: |-
1251
+ Returns a bare array of async-helper objects for every async helper registered to the
1252
+ integration. Each element is a complete async-helper resource, the same shape as
1253
+ `GET /v1/asynchelpers/{_id}`.
1254
+ parameters:
1255
+ - name: _id
1256
+ in: path
1257
+ required: true
1258
+ description: Integration id.
1259
+ schema:
1260
+ type: string
1261
+ format: objectId
1262
+ x-celigo-refModel: integrations
1263
+ examples:
1264
+ - 6842261335b64c0bcb308e4f
1265
+ responses:
1266
+ '200':
1267
+ description: Array of async-helper objects.
1268
+ content:
1269
+ application/json:
1270
+ schema:
1271
+ type: array
1272
+ description: Bare array of full async-helper resource objects.
1273
+ items:
1274
+ type: object
1275
+ description: An async-helper resource. Same shape as returned by `GET /v1/asynchelpers/{_id}`.
1276
+ examples:
1277
+ one_helper:
1278
+ summary: Integration with one async helper
1279
+ value:
1280
+ - _id: 64a1b2c3d4e5f60011223344
1281
+ name: Salesforce Bulk Query Helper
1282
+ http:
1283
+ submit:
1284
+ sameAsStatus: true
1285
+ status:
1286
+ _exportId: 63b1c2d3e4f5a60011334455
1287
+ statusPath: status
1288
+ initialWaitTime: 1
1289
+ pollWaitTime: 4
1290
+ lastModified: '2026-04-15T14:30:15Z'
1291
+ '204':
1292
+ description: Integration has no async helpers.
1293
+ '401':
1294
+ $ref: '#/components/responses/401-unauthorized'
1295
+ '404':
1296
+ $ref: '#/components/responses/404-not-found'
1297
+ /v1/integrations/{_id}/ashares:
1298
+ get:
1299
+ x-internal: false
1300
+ operationId: listIntegrationAshares
1301
+ tags:
1302
+ - Integrations
1303
+ summary: List account shares for an integration
1304
+ description: |-
1305
+ Returns an array of account-share (ashare) objects for the integration. Each entry describes a
1306
+ user who has been granted access to the integration's owning account, along with their access
1307
+ level and authentication metadata. Unlike other integration sub-resource list endpoints, this
1308
+ always returns an array (an integration with no shares returns `[]`).
1309
+ parameters:
1310
+ - name: _id
1311
+ in: path
1312
+ required: true
1313
+ description: Integration id.
1314
+ schema:
1315
+ type: string
1316
+ format: objectId
1317
+ x-celigo-refModel: integrations
1318
+ examples:
1319
+ - 6842261335b64c0bcb308e4f
1320
+ responses:
1321
+ '200':
1322
+ description: Array of account-share objects.
1323
+ content:
1324
+ application/json:
1325
+ schema:
1326
+ type: array
1327
+ description: Account shares scoped to the integration.
1328
+ items:
1329
+ type: object
1330
+ properties:
1331
+ _id:
1332
+ type: string
1333
+ format: objectId
1334
+ description: Ashare id.
1335
+ examples:
1336
+ - 6798f4dc43db9184f4bc8ee0
1337
+ accepted:
1338
+ type: boolean
1339
+ description: When true, the shared user has accepted the invitation.
1340
+ accessLevel:
1341
+ type: string
1342
+ description: Access level granted to the user (e.g. `administrator`, `manage`, `monitor`).
1343
+ examples:
1344
+ - administrator
1345
+ accountSSORequired:
1346
+ type: boolean
1347
+ description: When true, the account requires SSO for this user.
1348
+ accountMFARequired:
1349
+ type: boolean
1350
+ description: When true, the account requires MFA for this user.
1351
+ createdAt:
1352
+ type: string
1353
+ format: date-time
1354
+ examples:
1355
+ - '2025-01-28T15:16:44.327Z'
1356
+ lastModified:
1357
+ type: string
1358
+ format: date-time
1359
+ examples:
1360
+ - '2026-05-02T17:02:59.371Z'
1361
+ lastSignIn:
1362
+ type: string
1363
+ format: date-time
1364
+ examples:
1365
+ - '2026-05-02T17:02:59.370Z'
1366
+ isProductionAdmin:
1367
+ type: boolean
1368
+ sharedWithUser:
1369
+ type: object
1370
+ description: The user this share was granted to.
1371
+ properties:
1372
+ _id:
1373
+ type: string
1374
+ format: objectId
1375
+ examples:
1376
+ - 624774a6a7574d3ed9f9a5cc
1377
+ email:
1378
+ type: string
1379
+ format: email
1380
+ examples:
1381
+ - admin@example.com
1382
+ name:
1383
+ type: string
1384
+ examples:
1385
+ - Account Admin
1386
+ lastSignIn:
1387
+ type: string
1388
+ format: date-time
1389
+ examples:
1390
+ - '2026-05-02T17:02:59.370Z'
1391
+ allowedToResetMFA:
1392
+ type: boolean
1393
+ accountSSOLinked:
1394
+ type: boolean
1395
+ examples:
1396
+ two_shares:
1397
+ summary: Two users with access to the integration's account
1398
+ value:
1399
+ - _id: 6798f4dc43db9184f4bc8ee0
1400
+ accepted: true
1401
+ accessLevel: administrator
1402
+ accountSSORequired: false
1403
+ accountMFARequired: false
1404
+ isProductionAdmin: true
1405
+ createdAt: '2025-01-28T15:16:44.327Z'
1406
+ lastModified: '2026-05-02T17:02:59.371Z'
1407
+ lastSignIn: '2026-05-02T17:02:59.370Z'
1408
+ sharedWithUser:
1409
+ _id: 624774a6a7574d3ed9f9a5cc
1410
+ email: admin@example.com
1411
+ name: Account Admin
1412
+ allowedToResetMFA: false
1413
+ - _id: 690954729ef09ab572f65e5d
1414
+ accepted: true
1415
+ accessLevel: monitor
1416
+ accountSSORequired: false
1417
+ accountMFARequired: false
1418
+ createdAt: '2025-11-04T01:18:42.025Z'
1419
+ lastModified: '2026-04-09T18:48:15.653Z'
1420
+ sharedWithUser:
1421
+ _id: 69095422a6fa76e8c7c170eb
1422
+ email: contributor@example.com
1423
+ name: Integration User
1424
+ allowedToResetMFA: false
1425
+ '401':
1426
+ $ref: '#/components/responses/401-unauthorized'
1427
+ '404':
1428
+ $ref: '#/components/responses/404-not-found'
1429
+ /v1/integrations/{_id}/connections/{_connectionId}/register:
1430
+ put:
1431
+ x-internal: false
1432
+ operationId: registerConnectionToIntegration
1433
+ tags:
1434
+ - Integrations
1435
+ summary: Register a connection to an integration (by path)
1436
+ description: |-
1437
+ Registers a single connection to the integration by specifying the connection id in the URL
1438
+ path. No request body is needed. To unregister, use `DELETE` on the same path. Alternatively,
1439
+ use `PUT /v1/integrations/{_id}/connections/register` to register by request body.
1440
+ parameters:
1441
+ - name: _id
1442
+ in: path
1443
+ required: true
1444
+ description: Integration id.
1445
+ schema:
1446
+ type: string
1447
+ format: objectId
1448
+ x-celigo-refModel: integrations
1449
+ examples:
1450
+ - 6842261335b64c0bcb308e4f
1451
+ - name: _connectionId
1452
+ in: path
1453
+ required: true
1454
+ description: Connection id to register.
1455
+ schema:
1456
+ type: string
1457
+ format: objectId
1458
+ x-celigo-refModel: connections
1459
+ examples:
1460
+ - 626168f90b6ef816b50c82d7
1461
+ responses:
1462
+ '204':
1463
+ description: Connection registered successfully. No body returned.
1464
+ '401':
1465
+ $ref: '#/components/responses/401-unauthorized'
1466
+ '404':
1467
+ $ref: '#/components/responses/404-not-found'
1468
+ delete:
1469
+ x-internal: false
1470
+ operationId: unregisterConnectionFromIntegration
1471
+ tags:
1472
+ - Integrations
1473
+ summary: Unregister a connection from an integration
1474
+ description: |-
1475
+ Removes a connection's registration from the integration. This does not delete the connection
1476
+ itself -- it only removes it from the integration's registered-connections list.
1477
+ parameters:
1478
+ - name: _id
1479
+ in: path
1480
+ required: true
1481
+ description: Integration id.
1482
+ schema:
1483
+ type: string
1484
+ format: objectId
1485
+ x-celigo-refModel: integrations
1486
+ examples:
1487
+ - 6842261335b64c0bcb308e4f
1488
+ - name: _connectionId
1489
+ in: path
1490
+ required: true
1491
+ description: Connection id to unregister.
1492
+ schema:
1493
+ type: string
1494
+ format: objectId
1495
+ x-celigo-refModel: connections
1496
+ examples:
1497
+ - 626168f90b6ef816b50c82d7
1498
+ responses:
1499
+ '204':
1500
+ description: Connection unregistered successfully. No body returned.
1501
+ '401':
1502
+ $ref: '#/components/responses/401-unauthorized'
1503
+ '404':
1504
+ $ref: '#/components/responses/404-not-found'
1505
+ /v1/integrations/{_id}/connections/register:
1506
+ put:
1507
+ x-internal: false
1508
+ operationId: registerConnectionToIntegrationByBody
1509
+ tags:
1510
+ - Integrations
1511
+ summary: Register a connection to an integration (by body)
1512
+ description: |-
1513
+ Registers a single connection to the integration by passing the connection id in the request
1514
+ body. Alternatively, use `PUT /v1/integrations/{_id}/connections/{_connectionId}/register` to
1515
+ register by path parameter.
1516
+ parameters:
1517
+ - name: _id
1518
+ in: path
1519
+ required: true
1520
+ description: Integration id.
1521
+ schema:
1522
+ type: string
1523
+ format: objectId
1524
+ x-celigo-refModel: integrations
1525
+ examples:
1526
+ - 6842261335b64c0bcb308e4f
1527
+ requestBody:
1528
+ required: true
1529
+ content:
1530
+ application/json:
1531
+ schema:
1532
+ type: object
1533
+ required:
1534
+ - _connectionId
1535
+ properties:
1536
+ _connectionId:
1537
+ type: string
1538
+ format: objectId
1539
+ x-celigo-refModel: connections
1540
+ examples:
1541
+ - 626168f90b6ef816b50c82d7
1542
+ description: The id of the connection to register.
1543
+ examples:
1544
+ default:
1545
+ value:
1546
+ _connectionId: 69680d7111d1437fbcbce534
1547
+ responses:
1548
+ '204':
1549
+ description: Connection registered successfully. No body returned.
1550
+ '401':
1551
+ $ref: '#/components/responses/401-unauthorized'
1552
+ '404':
1553
+ $ref: '#/components/responses/404-not-found'
1554
+ /v1/integrations/{_id}/lookupcaches/{_lookupCacheId}/register:
1555
+ put:
1556
+ x-internal: false
1557
+ operationId: registerLookupCacheToIntegration
1558
+ tags:
1559
+ - Integrations
1560
+ summary: Register a lookup cache to an integration (by path)
1561
+ description: |-
1562
+ Registers a single lookup cache to the integration by specifying the
1563
+ lookup cache id in the URL path. No request body is needed. To
1564
+ unregister, use `DELETE` on the same path. Alternatively, use
1565
+ `PUT /v1/integrations/{_id}/lookupcaches/register` to register several
1566
+ caches at once by request body.
1567
+
1568
+ Registration also adds an entry to the integration's `aliases[]` when the
1569
+ cache does not already have one: `alias` is a slug of the cache name
1570
+ (lowercased, whitespace and special characters stripped, `_2`/`_3`/…
1571
+ appended on collision) and `_lookupCacheId` points at the cache. Scripts
1572
+ and hooks use the alias as a stable handle for the cache, and
1573
+ deregistering the cache is blocked until the alias is removed.
1574
+ parameters:
1575
+ - name: _id
1576
+ in: path
1577
+ required: true
1578
+ description: Integration id.
1579
+ schema:
1580
+ type: string
1581
+ format: objectId
1582
+ x-celigo-refModel: integrations
1583
+ examples:
1584
+ - 6842261335b64c0bcb308e4f
1585
+ - name: _lookupCacheId
1586
+ in: path
1587
+ required: true
1588
+ description: Lookup cache id to register.
1589
+ schema:
1590
+ type: string
1591
+ format: objectId
1592
+ x-celigo-refModel: lookupcaches
1593
+ examples:
1594
+ - 68680d7111d1437fbcbce534
1595
+ responses:
1596
+ '204':
1597
+ description: Lookup cache registered successfully. No body returned.
1598
+ '401':
1599
+ $ref: '#/components/responses/401-unauthorized'
1600
+ '404':
1601
+ $ref: '#/components/responses/404-not-found'
1602
+ delete:
1603
+ x-internal: false
1604
+ operationId: unregisterLookupCacheFromIntegration
1605
+ tags:
1606
+ - Integrations
1607
+ summary: Unregister a lookup cache from an integration
1608
+ description: |-
1609
+ Removes a lookup cache's registration from the integration. This does
1610
+ not delete the lookup cache itself — it only removes it from the
1611
+ integration's `_registeredLookupCacheIds` list. Fails when the cache is
1612
+ not registered on the integration, when a flow step in the integration
1613
+ still references it, or when an alias on the integration (or one of its
1614
+ flows) still points at it — including the alias that registration itself
1615
+ created. Remove the flow-step references and the alias (update the
1616
+ `aliases` array on the integration or flow) first, then retry.
1617
+ parameters:
1618
+ - name: _id
1619
+ in: path
1620
+ required: true
1621
+ description: Integration id.
1622
+ schema:
1623
+ type: string
1624
+ format: objectId
1625
+ x-celigo-refModel: integrations
1626
+ examples:
1627
+ - 6842261335b64c0bcb308e4f
1628
+ - name: _lookupCacheId
1629
+ in: path
1630
+ required: true
1631
+ description: Lookup cache id to unregister.
1632
+ schema:
1633
+ type: string
1634
+ format: objectId
1635
+ x-celigo-refModel: lookupcaches
1636
+ examples:
1637
+ - 68680d7111d1437fbcbce534
1638
+ responses:
1639
+ '204':
1640
+ description: Lookup cache unregistered successfully. No body returned.
1641
+ '400':
1642
+ description: |-
1643
+ The cache is not registered on this integration ("The lookup cache
1644
+ which you are trying to deregister is not registered on the
1645
+ integration."), is still referenced by a flow step in the
1646
+ integration ("The lookup cache is being actively used by a flow
1647
+ step in this integration..."), or is still referenced by an alias
1648
+ ("The lookup cache is referenced by an alias in this integration.
1649
+ Remove the alias before deregistering."). Error code: `not_allowed`
1650
+ for all three.
1651
+ content:
1652
+ application/json:
1653
+ schema:
1654
+ $ref: '#/components/schemas/Error'
1655
+ examples:
1656
+ in_use:
1657
+ value:
1658
+ errors:
1659
+ - code: not_allowed
1660
+ message: The lookup cache is being actively used by a flow step in this integration. Please remove the lookup cache reference from all flow steps before deregistering.
1661
+ alias_referenced:
1662
+ value:
1663
+ errors:
1664
+ - code: not_allowed
1665
+ message: The lookup cache is referenced by an alias in this integration. Remove the alias before deregistering.
1666
+ '401':
1667
+ $ref: '#/components/responses/401-unauthorized'
1668
+ '404':
1669
+ $ref: '#/components/responses/404-not-found'
1670
+ /v1/integrations/{_id}/lookupcaches/register:
1671
+ put:
1672
+ x-internal: false
1673
+ operationId: registerLookupCachesToIntegration
1674
+ tags:
1675
+ - Integrations
1676
+ summary: Register lookup caches to an integration (by body)
1677
+ description: |-
1678
+ Registers one or more lookup caches to the integration, adding them to
1679
+ its `_registeredLookupCacheIds` list. The request body is a bare JSON
1680
+ array of lookup cache ids; duplicates are collapsed. Alternatively, use
1681
+ `PUT /v1/integrations/{_id}/lookupcaches/{_lookupCacheId}/register` to
1682
+ register a single cache by path parameter.
1683
+
1684
+ Registration also adds an entry to the integration's `aliases[]` for each
1685
+ newly registered cache that does not already have one: `alias` is a slug
1686
+ of the cache name (lowercased, whitespace and special characters stripped,
1687
+ `_2`/`_3`/… appended on collision) and `_lookupCacheId` points at the
1688
+ cache. Scripts and hooks use the alias as a stable handle for the cache,
1689
+ and deregistering the cache is blocked until the alias is removed.
1690
+ parameters:
1691
+ - name: _id
1692
+ in: path
1693
+ required: true
1694
+ description: Integration id.
1695
+ schema:
1696
+ type: string
1697
+ format: objectId
1698
+ x-celigo-refModel: integrations
1699
+ examples:
1700
+ - 6842261335b64c0bcb308e4f
1701
+ requestBody:
1702
+ required: true
1703
+ content:
1704
+ application/json:
1705
+ schema:
1706
+ type: array
1707
+ description: Lookup cache ids to register.
1708
+ items:
1709
+ type: string
1710
+ format: objectId
1711
+ x-celigo-refModel: lookupcaches
1712
+ examples:
1713
+ default:
1714
+ value:
1715
+ - 68680d7111d1437fbcbce534
1716
+ - 68680d7111d1437fbcbce535
1717
+ responses:
1718
+ '204':
1719
+ description: Lookup caches registered successfully. No body returned.
1720
+ '400':
1721
+ description: An entry in the array is not a valid ObjectId.
1722
+ content:
1723
+ application/json:
1724
+ schema:
1725
+ $ref: '#/components/schemas/Error'
1726
+ '401':
1727
+ $ref: '#/components/responses/401-unauthorized'
1728
+ '404':
1729
+ $ref: '#/components/responses/404-not-found'
1730
+ /v1/integrations/{_id}/tree/metadata:
1731
+ get:
1732
+ x-internal: false
1733
+ operationId: getIntegrationTreeMetadata
1734
+ tags:
1735
+ - Integrations
1736
+ summary: Get integration tree metadata
1737
+ description: |-
1738
+ Returns structural metadata for the integration and its child integrations. The response
1739
+ includes install steps, flow groupings, API groupings, registered connection ids, uninstall
1740
+ steps, and change-edition steps, plus a `childIntegrations` array with the same structure for
1741
+ each child. Primarily useful for Integration App integrations that have install/uninstall steps
1742
+ and child integrations.
1743
+ parameters:
1744
+ - name: _id
1745
+ in: path
1746
+ required: true
1747
+ description: Integration id.
1748
+ schema:
1749
+ type: string
1750
+ format: objectId
1751
+ x-celigo-refModel: integrations
1752
+ examples:
1753
+ - 6842261335b64c0bcb308e4f
1754
+ responses:
1755
+ '200':
1756
+ description: Integration tree metadata.
1757
+ content:
1758
+ application/json:
1759
+ schema:
1760
+ type: object
1761
+ properties:
1762
+ integration:
1763
+ type: object
1764
+ description: |-
1765
+ Metadata for the integration itself, including install steps, flow groupings,
1766
+ API groupings, registered connection ids, uninstall steps, and change-edition steps.
1767
+ childIntegrations:
1768
+ type: array
1769
+ description: Metadata for child integrations (empty array if none).
1770
+ items:
1771
+ type: object
1772
+ examples:
1773
+ plain_integration:
1774
+ summary: Plain integration with no children
1775
+ value:
1776
+ integration:
1777
+ _id: 6842261335b64c0bcb308e4f
1778
+ name: Shopify → NetSuite Orders
1779
+ installSteps: []
1780
+ uninstallSteps: []
1781
+ changeEditionSteps: []
1782
+ flowGroupings:
1783
+ - _id: 69d42d09b9c28ea0b7e7c0c0
1784
+ name: Order sync
1785
+ apiGroupings: []
1786
+ _registeredConnectionIds:
1787
+ - 626168f90b6ef816b50c82d7
1788
+ childIntegrations: []
1789
+ '401':
1790
+ $ref: '#/components/responses/401-unauthorized'
1791
+ '404':
1792
+ $ref: '#/components/responses/404-not-found'
1793
+ /v1/integrations/{_id}/resume:
1794
+ put:
1795
+ x-internal: false
1796
+ operationId: resumeIntegration
1797
+ tags:
1798
+ - Integrations
1799
+ summary: Resume an Integration App integration
1800
+ description: |-
1801
+ Resumes a paused Integration App integration. Requires that the integration belongs to an
1802
+ Integration App. No request body is needed.
1803
+ parameters:
1804
+ - name: _id
1805
+ in: path
1806
+ required: true
1807
+ description: Integration id.
1808
+ schema:
1809
+ type: string
1810
+ format: objectId
1811
+ x-celigo-refModel: integrations
1812
+ examples:
1813
+ - 6842261335b64c0bcb308e4f
1814
+ responses:
1815
+ '200':
1816
+ description: Integration resumed successfully.
1817
+ '401':
1818
+ $ref: '#/components/responses/401-unauthorized'
1819
+ '404':
1820
+ $ref: '#/components/responses/404-not-found'
1821
+ '422':
1822
+ description: |-
1823
+ Integration does not belong to an Integration App. Error code: `invalid_ref`, message:
1824
+ "doesnot belongs to any Integration App."
1825
+ content:
1826
+ application/json:
1827
+ schema:
1828
+ $ref: '#/components/schemas/Error'
1829
+ examples:
1830
+ notIA:
1831
+ value:
1832
+ errors:
1833
+ - code: invalid_ref
1834
+ message: doesnot belongs to any Integration App.
1835
+ /v1/integrations/{_id}/changeEdition:
1836
+ post:
1837
+ x-internal: false
1838
+ operationId: changeIntegrationEdition
1839
+ tags:
1840
+ - Integrations
1841
+ summary: Change the edition of an Integration App integration
1842
+ description: |-
1843
+ Triggers an edition change for an Integration App integration that has a `changeEdition`
1844
+ function configured. Requires the integration to belong to an Integration App with edition
1845
+ support.
1846
+ parameters:
1847
+ - name: _id
1848
+ in: path
1849
+ required: true
1850
+ description: Integration id.
1851
+ schema:
1852
+ type: string
1853
+ format: objectId
1854
+ x-celigo-refModel: integrations
1855
+ examples:
1856
+ - 6842261335b64c0bcb308e4f
1857
+ responses:
1858
+ '200':
1859
+ description: Edition change initiated successfully.
1860
+ '401':
1861
+ $ref: '#/components/responses/401-unauthorized'
1862
+ '404':
1863
+ $ref: '#/components/responses/404-not-found'
1864
+ '422':
1865
+ description: |-
1866
+ Integration does not belong to an Integration App with changeEdition support. Error code:
1867
+ `invalid_integration_app`.
1868
+ content:
1869
+ application/json:
1870
+ schema:
1871
+ $ref: '#/components/schemas/Error'
1872
+ examples:
1873
+ notIA:
1874
+ value:
1875
+ errors:
1876
+ - code: invalid_integration_app
1877
+ message: Integration does not belong to an Integration App with changeEdition support.
1878
+ /v1/integrations/{_id}/initChild:
1879
+ post:
1880
+ x-internal: false
1881
+ operationId: initChildIntegration
1882
+ tags:
1883
+ - Integrations
1884
+ summary: Initialize a child integration
1885
+ description: |-
1886
+ Initializes a child integration under an Integration App parent. Requires the parent integration
1887
+ to belong to an Integration App with an init script configured.
1888
+ parameters:
1889
+ - name: _id
1890
+ in: path
1891
+ required: true
1892
+ description: Integration id (the parent Integration App integration).
1893
+ schema:
1894
+ type: string
1895
+ format: objectId
1896
+ x-celigo-refModel: integrations
1897
+ examples:
1898
+ - 6842261335b64c0bcb308e4f
1899
+ responses:
1900
+ '200':
1901
+ description: Child integration initialized successfully.
1902
+ '401':
1903
+ $ref: '#/components/responses/401-unauthorized'
1904
+ '404':
1905
+ $ref: '#/components/responses/404-not-found'
1906
+ '422':
1907
+ description: |-
1908
+ Integration App does not have a valid init script. Error code: `invalid_ref`, message:
1909
+ "Script fields invalid or not found."
1910
+ content:
1911
+ application/json:
1912
+ schema:
1913
+ $ref: '#/components/schemas/Error'
1914
+ examples:
1915
+ noScript:
1916
+ value:
1917
+ errors:
1918
+ - code: invalid_ref
1919
+ message: Script fields invalid or not found.
1920
+ /v1/integrations/{_id}/detachLicense:
1921
+ put:
1922
+ x-internal: false
1923
+ operationId: detachIntegrationLicense
1924
+ tags:
1925
+ - Integrations
1926
+ summary: Detach the license from an integration
1927
+ description: |-
1928
+ Detaches the license from an integration. Idempotent -- calling it on an integration that
1929
+ already has no license attached is a no-op. No request body is needed.
1930
+ parameters:
1931
+ - name: _id
1932
+ in: path
1933
+ required: true
1934
+ description: Integration id.
1935
+ schema:
1936
+ type: string
1937
+ format: objectId
1938
+ x-celigo-refModel: integrations
1939
+ examples:
1940
+ - 6842261335b64c0bcb308e4f
1941
+ responses:
1942
+ '204':
1943
+ description: License detached (or was already detached). No body returned.
1944
+ '401':
1945
+ $ref: '#/components/responses/401-unauthorized'
1946
+ '404':
1947
+ $ref: '#/components/responses/404-not-found'
1948
+ /v1/integrations/{_id}/iLMIgnore:
1949
+ get:
1950
+ x-internal: false
1951
+ operationId: getIntegrationILMIgnoreFields
1952
+ tags:
1953
+ - Integrations
1954
+ summary: List available ILM ignore fields
1955
+ description: |-
1956
+ Returns the catalog of *available* fields that can be ignored when pulling changes between
1957
+ related integrations. Keys are lowercase resource types (`integration`, `flow`, `export`,
1958
+ `import`, `connection`, `script`, ...); values are arrays of dot-path field names that can be
1959
+ excluded from an ILM pull/revert. The key set is platform-driven — treat the response, not
1960
+ the example list, as the authoritative catalog.
1961
+
1962
+ This endpoint requires the `integrator-ashareid` header to establish a shared-account context.
1963
+ The current ignore configuration lives on the integration's `iLMIgnore` field (readable via
1964
+ `GET /v1/integrations/{_id}`); this endpoint only returns the menu of what *can* be ignored.
1965
+ To change the configuration, PATCH the integration with
1966
+ `[{op:"replace", path:"/iLMIgnore", value:{...}}]`.
1967
+ parameters:
1968
+ - name: integrator-ashareid
1969
+ in: header
1970
+ required: true
1971
+ description: |-
1972
+ Account-share id that scopes the request to a specific shared-account context. The bearer
1973
+ token's user must be the `sharedWithUser` of this ashare.
1974
+ schema:
1975
+ type: string
1976
+ format: objectId
1977
+ examples:
1978
+ - 6798f4dc43db9184f4bc8ee0
1979
+ - name: _id
1980
+ in: path
1981
+ required: true
1982
+ description: Integration id.
1983
+ schema:
1984
+ type: string
1985
+ format: objectId
1986
+ x-celigo-refModel: integrations
1987
+ examples:
1988
+ - 6842261335b64c0bcb308e4f
1989
+ responses:
1990
+ '200':
1991
+ description: Available ignore fields per resource type.
1992
+ content:
1993
+ application/json:
1994
+ schema:
1995
+ $ref: '#/components/schemas/ILMIgnoreResponse'
1996
+ examples:
1997
+ default:
1998
+ value:
1999
+ integration:
2000
+ - name
2001
+ - description
2002
+ flow:
2003
+ - disabled
2004
+ - name
2005
+ export:
2006
+ - name
2007
+ - http.body
2008
+ '401':
2009
+ $ref: '#/components/responses/401-unauthorized'
2010
+ '403':
2011
+ description: |-
2012
+ Either the `integrator-ashareid` header is malformed (code: `invalid_header_value`) or it
2013
+ was omitted entirely (code: `get_not_allowed`).
2014
+ content:
2015
+ application/json:
2016
+ schema:
2017
+ $ref: '#/components/schemas/Error'
2018
+ examples:
2019
+ get_not_allowed:
2020
+ summary: Header omitted entirely
2021
+ value:
2022
+ errors:
2023
+ - code: get_not_allowed
2024
+ message: GET resource not allowed for the given model.
2025
+ invalid_header_value:
2026
+ summary: Header malformed (not a 24-char hex id)
2027
+ value:
2028
+ errors:
2029
+ - code: invalid_header_value
2030
+ message: The value provided for request header Integrator-AShareId is invalid.
2031
+ '404':
2032
+ description: |-
2033
+ Integration unknown, or the `integrator-ashareid` references a share whose `sharedWithUser`
2034
+ isn't the bearer token's user (code: `access_restricted`).
2035
+ content:
2036
+ application/json:
2037
+ schema:
2038
+ $ref: '#/components/schemas/Error'
2039
+ examples:
2040
+ access_restricted:
2041
+ value:
2042
+ errors:
2043
+ - code: access_restricted
2044
+ message: Your access to an integrator.io environment or account has been disabled. For more information, contact account administrator.
2045
+ /v1/integrations/{_id}/template:
2046
+ get:
2047
+ x-internal: false
2048
+ operationId: getIntegrationTemplate
2049
+ tags:
2050
+ - Integrations
2051
+ summary: Get a downloadable template for an integration
2052
+ description: |-
2053
+ Packages the integration as an installable template and returns a signed
2054
+ S3 URL where the template `.zip` can be downloaded. The URL is
2055
+ pre-signed and short-lived (it expires shortly after issuance), so fetch
2056
+ the file promptly after calling this endpoint.
2057
+
2058
+ The downloaded `.zip` is the same artifact used to install the integration
2059
+ as a template into another account.
2060
+ parameters:
2061
+ - name: _id
2062
+ in: path
2063
+ required: true
2064
+ description: Integration id.
2065
+ schema:
2066
+ type: string
2067
+ format: objectId
2068
+ x-celigo-refModel: integrations
2069
+ examples:
2070
+ - 6842261335b64c0bcb308e4f
2071
+ responses:
2072
+ '200':
2073
+ description: Signed download URL for the integration template zip.
2074
+ content:
2075
+ application/json:
2076
+ schema:
2077
+ type: object
2078
+ properties:
2079
+ signedURL:
2080
+ type: string
2081
+ description: Pre-signed, short-lived S3 URL to download the template `.zip`.
2082
+ key:
2083
+ type: string
2084
+ description: S3 object key for the generated template `.zip`.
2085
+ examples:
2086
+ default:
2087
+ summary: Signed template download URL
2088
+ value:
2089
+ signedURL: https://integrator-templates.s3.us-east-1.amazonaws.com/6842261335b64c0bcb308e4f.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=b117bf598b5535ed024cdbdfec756172f386fd39ad4e4536e40e5efbbf4ff52a
2090
+ key: 6842261335b64c0bcb308e4f.zip
2091
+ '401':
2092
+ $ref: '#/components/responses/401-unauthorized'
2093
+ '404':
2094
+ $ref: '#/components/responses/404-not-found'
2095
+ /v1/integrations/{_id}/dependencies:
2096
+ get:
2097
+ x-internal: false
2098
+ operationId: listIntegrationDependencies
2099
+ tags:
2100
+ - Integrations
2101
+ summary: List dependencies of an integration
2102
+ description: |-
2103
+ Returns the set of resources that depend on the specified resource.
2104
+ The response is an object whose keys are dependent-resource types
2105
+ (e.g. `flows`, `imports`) and whose values are arrays of dependency
2106
+ entries. An empty object `{}` means no other resources depend on the
2107
+ target (also returned for a well-formatted but nonexistent id).
2108
+ parameters:
2109
+ - name: _id
2110
+ in: path
2111
+ required: true
2112
+ description: Resource ID.
2113
+ schema:
2114
+ type: string
2115
+ format: objectId
2116
+ examples:
2117
+ - 6842261335b64c0bcb308e4f
2118
+ responses:
2119
+ '200':
2120
+ description: |
2121
+ Dependency map. Keys are resource-type strings; values are arrays
2122
+ of dependency entries. Returns `{}` when no dependents exist.
2123
+ content:
2124
+ application/json:
2125
+ schema:
2126
+ $ref: '#/components/schemas/DependencyResponse'
2127
+ examples:
2128
+ no_dependents:
2129
+ summary: No other resources depend on the integration
2130
+ value: {}
2131
+ '401':
2132
+ $ref: '#/components/responses/401-unauthorized'
2133
+ components:
2134
+ securitySchemes:
2135
+ bearerAuth:
2136
+ type: http
2137
+ scheme: bearer
2138
+ parameters:
2139
+ Include:
2140
+ name: include
2141
+ in: query
2142
+ required: false
2143
+ description: |-
2144
+ Comma-separated list of fields to project into each returned record.
2145
+ Triggers summary projection: the response contains a minimal identity
2146
+ set (`_id`, `name`, plus resource-specific fields) with the requested
2147
+ fields added on top. Supports dot notation for nested fields.
2148
+ Mutually exclusive with `exclude`.
2149
+ schema:
2150
+ type: string
2151
+ example: _integrationId,disabled,lastModified
2152
+ Exclude:
2153
+ name: exclude
2154
+ in: query
2155
+ required: false
2156
+ description: |-
2157
+ Comma-separated list of fields to strip from the default response.
2158
+ Unlike `include`, does not trigger summary projection — returns the
2159
+ full record with the named fields removed. Protected identity fields
2160
+ (e.g. `name`) cannot be stripped. Mutually exclusive with `include`.
2161
+ schema:
2162
+ type: string
2163
+ example: createdAt,lastModified
2164
+ schemas:
2165
+ Settings:
2166
+ type: object
2167
+ description: |
2168
+ Configuration settings that can be accessed by hooks, filters, mappings and handlebars templates at runtime.
2169
+
2170
+ It enables customization of the resource's logic, allowing hooks, mappings, filters, and
2171
+ handlebars to access and apply the settings at runtime.
2172
+
2173
+ **Usage**
2174
+
2175
+ The settings object can store arbitrary JSON data that you want to save with the resource.
2176
+ While it's often populated through a form defined in the `settingsForm` field, you can also:
2177
+
2178
+ - Directly provide JSON settings without using a form
2179
+ - Store configuration values used by hooks and templates
2180
+ - Create resource-specific constants and parameters
2181
+ - Maintain lookup tables or mapping structures
2182
+ - Define conditional logic parameters
2183
+
2184
+ **Accessibility**
2185
+
2186
+ Settings are available in:
2187
+ - All handlebars fields for building dynamic payloads
2188
+ - Field mapping expressions
2189
+ - JavaScript hooks via the options object
2190
+ - Filters and transformations
2191
+
2192
+ At runtime, the settings objects in the step's execution chain are gathered into a
2193
+ single `settings` context keyed by fixed scope keys. Flow runs populate the full
2194
+ chain: `settings.integration.*`, `settings.flowGrouping.*` (the flow group the flow
2195
+ belongs to), `settings.flow.*`, `settings.connection.*`, `settings.iClient.*`, and
2196
+ the running step's own scope — `settings.export.*` on exports/lookups,
2197
+ `settings.import.*` on imports (the key matches the step type). Steps executing
2198
+ inside a My API or a Tool receive only the step's own scope plus
2199
+ `settings.connection.*` / `settings.iClient.*`; the integration, flowGrouping, and
2200
+ flow scopes resolve empty there. The scope key is literal — resource display names
2201
+ and settingsForm section labels are never part of the path. The segments after the
2202
+ scope mirror the stored settings JSON key path exactly: a top-level field is
2203
+ `settings.<scope>.<fieldId>`, and nested objects add one segment per JSON key
2204
+ (e.g. `settings.flowGrouping.Customer.region` when the group's settings JSON nests
2205
+ `region` under `Customer`). References without a scope key
2206
+ (e.g. `{{settings.myField}}`) resolve to empty strings.
2207
+
2208
+ **Best practices**
2209
+
2210
+ For non-technical users, create a custom form instead of editing the JSON directly.
2211
+ This provides a user-friendly interface for updating settings without requiring JSON knowledge.
2212
+ additionalProperties: true
2213
+ Form:
2214
+ type: object
2215
+ description: |
2216
+ Configuration for creating user-friendly settings forms that make it easier for less technical users
2217
+ to configure integration resources.
2218
+
2219
+ **Settings form builder**
2220
+
2221
+ The Settings Form Builder allows you to create or edit user-friendly fields that prompt for text entry
2222
+ or selections that will be returned as settings applied to this resource. Your forms can include any
2223
+ field types that you see elsewhere in integrator.io, such as:
2224
+
2225
+ - Text fields
2226
+ - Dropdown selections
2227
+ - Checkboxes
2228
+ - Radio buttons
2229
+ - Date pickers
2230
+ - Multi-select fields
2231
+ - Search fields
2232
+
2233
+ Form fields make it much easier for less technical users to work with your integration settings by:
2234
+
2235
+ - Providing clear labels and help text
2236
+ - Enforcing validation rules
2237
+ - Offering pre-defined selection options
2238
+ - Grouping related settings logically
2239
+ - Supporting conditional visibility
2240
+ - Creating a consistent user experience
2241
+ properties:
2242
+ form:
2243
+ type: object
2244
+ description: |
2245
+ Configuration that defines the structure, fields, and behavior of the settings form.
2246
+
2247
+ This object contains the complete definition of the form's layout, fields, validation rules,
2248
+ and interactive behaviors. The specific structure depends on the form complexity and can include
2249
+ field definitions, sections, conditional display logic, and default values.
2250
+
2251
+ The form configuration is typically created and managed through the visual Form Builder interface
2252
+ rather than edited directly as JSON.
2253
+ properties:
2254
+ fieldMap:
2255
+ type: object
2256
+ description: |
2257
+ A mapping of field identifiers to their configuration objects.
2258
+ Each key in this object represents a unique field ID, and the value contains
2259
+ all the configuration settings for that specific form field.
2260
+ additionalProperties:
2261
+ type: object
2262
+ description: |
2263
+ Configuration for an individual form field.
2264
+ properties:
2265
+ id:
2266
+ type: string
2267
+ description: |
2268
+ Unique identifier for this field within the form.
2269
+ This value typically matches the key in the fieldMap object.
2270
+ examples:
2271
+ - url
2272
+ - mode
2273
+ - body
2274
+ - keyValue
2275
+ - text
2276
+ - multiline
2277
+ name:
2278
+ type: string
2279
+ description: |
2280
+ Name of the field, used as the property name when generating the settings object
2281
+ from the submitted form data.
2282
+ examples:
2283
+ - url
2284
+ - mode
2285
+ - body
2286
+ - keyValue
2287
+ - text
2288
+ - multiline
2289
+ type:
2290
+ type: string
2291
+ description: |
2292
+ The type of form control to render for this field.
2293
+ enum:
2294
+ - text
2295
+ - checkbox
2296
+ - radiogroup
2297
+ - relativeuri
2298
+ - editor
2299
+ - keyvalue
2300
+ - select
2301
+ - multiselect
2302
+ - toggle
2303
+ - datetime
2304
+ - date
2305
+ - exportSelect
2306
+ - staticMap
2307
+ x-enumDescriptions:
2308
+ text: Single-line or multi-line text input field.
2309
+ checkbox: Boolean checkbox control for true/false values.
2310
+ radiogroup: Group of mutually exclusive radio button options.
2311
+ relativeuri: Text input for entering a relative URI path.
2312
+ editor: Code or content editor with syntax highlighting.
2313
+ keyvalue: Dynamic list of key-value pair inputs.
2314
+ select: Dropdown menu for selecting a single option.
2315
+ multiselect: Dropdown menu that allows selecting multiple options.
2316
+ toggle: On/off toggle switch control.
2317
+ datetime: Date and time picker control.
2318
+ date: Date-only picker control without a time component.
2319
+ exportSelect: Dropdown whose options are records returned by an export.
2320
+ staticMap: Static two-column mapping table for pairing source and destination values.
2321
+ examples:
2322
+ - text
2323
+ - checkbox
2324
+ - radiogroup
2325
+ - editor
2326
+ - keyvalue
2327
+ - select
2328
+ - multiselect
2329
+ label:
2330
+ type: string
2331
+ description: |
2332
+ Display label shown next to the field in the form.
2333
+ examples:
2334
+ - Some url with handlebars support.
2335
+ - Mode of operation
2336
+ - Key-value pairs
2337
+ - Text
2338
+ description:
2339
+ type: string
2340
+ description: |
2341
+ Detailed explanation text that appears below the field, providing more context
2342
+ than the label or helpText.
2343
+ examples:
2344
+ - This input is used to collect a set of key-value pairs. The item delete action is optional and set using th showDelete prop. Also note that he key and value names can be configured as well.
2345
+ helpText:
2346
+ type: string
2347
+ description: |
2348
+ Explanatory text that appears when hovering over the help icon next to the field.
2349
+ Used to provide additional guidance on how to use the field.
2350
+ examples:
2351
+ - example of a custom input.
2352
+ - This is the most basic input. It models an http form input
2353
+ required:
2354
+ type: boolean
2355
+ description: |
2356
+ When true, the field must have a value before the form can be submitted.
2357
+ default: false
2358
+ examples:
2359
+ - true
2360
+ - false
2361
+ multiline:
2362
+ type: boolean
2363
+ description: |
2364
+ For text fields, determines whether the input should be a multi-line text area
2365
+ instead of a single-line input.
2366
+ default: false
2367
+ examples:
2368
+ - true
2369
+ - false
2370
+ rowsMax:
2371
+ type: integer
2372
+ description: |
2373
+ For multiline text fields, specifies the maximum number of visible rows.
2374
+ examples:
2375
+ - 5
2376
+ inputType:
2377
+ type: string
2378
+ description: |
2379
+ For text fields, specifies the HTML input type attribute to apply additional
2380
+ validation or specialized input behavior.
2381
+ enum:
2382
+ - text
2383
+ - number
2384
+ - email
2385
+ - password
2386
+ - tel
2387
+ - url
2388
+ x-enumDescriptions:
2389
+ text: Standard text input with no special validation.
2390
+ number: Numeric input that restricts entry to numbers.
2391
+ email: Email address input with email format validation.
2392
+ password: Masked text input that hides the entered characters.
2393
+ tel: Telephone number input optimized for phone number entry.
2394
+ url: URL input with web address format validation.
2395
+ examples:
2396
+ - number
2397
+ delimiter:
2398
+ type: string
2399
+ description: |
2400
+ For text fields, specifies a character to use for splitting the input into an array.
2401
+ Used for collecting multiple values in a single text field.
2402
+ examples:
2403
+ - ','
2404
+ mode:
2405
+ type: string
2406
+ description: |
2407
+ For editor fields, specifies the type of content being edited for syntax highlighting.
2408
+ enum:
2409
+ - json
2410
+ - xml
2411
+ - csv
2412
+ - text
2413
+ x-enumDescriptions:
2414
+ json: JSON syntax highlighting and validation.
2415
+ xml: XML syntax highlighting and validation.
2416
+ csv: CSV format highlighting for comma-separated data.
2417
+ text: Plain text mode with no syntax highlighting.
2418
+ examples:
2419
+ - json
2420
+ keyName:
2421
+ type: string
2422
+ description: |
2423
+ For keyvalue fields, specifies the placeholder and field name for the key input.
2424
+ examples:
2425
+ - theKey
2426
+ valueName:
2427
+ type: string
2428
+ description: |
2429
+ For keyvalue fields, specifies the placeholder and field name for the value input.
2430
+ examples:
2431
+ - theValue
2432
+ showDelete:
2433
+ type: boolean
2434
+ description: |
2435
+ For keyvalue fields, determines whether to show a delete button for each key-value pair.
2436
+ examples:
2437
+ - true
2438
+ - false
2439
+ doNotAllowFutureDates:
2440
+ type: boolean
2441
+ description: |
2442
+ For date and datetime fields, restricts selection to dates not in the future.
2443
+ examples:
2444
+ - true
2445
+ - false
2446
+ skipTimezoneConversion:
2447
+ type: boolean
2448
+ description: |
2449
+ For datetime fields, prevents automatic timezone conversion of the date value.
2450
+ examples:
2451
+ - true
2452
+ - false
2453
+ options:
2454
+ type: array
2455
+ description: |
2456
+ For fields that present choices (select, multiselect, radiogroup, toggle), defines
2457
+ the available options.
2458
+ items:
2459
+ anyOf:
2460
+ - title: Option group
2461
+ type: object
2462
+ required:
2463
+ - items
2464
+ properties:
2465
+ items:
2466
+ type: array
2467
+ items:
2468
+ oneOf:
2469
+ - title: String value
2470
+ type: string
2471
+ - title: Label-value pair
2472
+ type: object
2473
+ properties:
2474
+ label:
2475
+ type: string
2476
+ description: |
2477
+ Display text for the option.
2478
+ examples:
2479
+ - United States
2480
+ - Canada
2481
+ - India
2482
+ value:
2483
+ type: string
2484
+ description: |
2485
+ Value to store when this option is selected.
2486
+ examples:
2487
+ - us
2488
+ - cdn
2489
+ - in
2490
+ description: |
2491
+ Array of option values/labels to display in the selection control.
2492
+ examples:
2493
+ - - Create
2494
+ - Update
2495
+ - Delete
2496
+ - - label: United States
2497
+ value: us
2498
+ - label: Canada
2499
+ value: cdn
2500
+ - title: Label-value pair
2501
+ type: object
2502
+ required:
2503
+ - label
2504
+ properties:
2505
+ label:
2506
+ type: string
2507
+ description: |
2508
+ Display text for the option.
2509
+ examples:
2510
+ - US
2511
+ - Canada
2512
+ - India
2513
+ value:
2514
+ type: string
2515
+ description: |
2516
+ Value to store when this option is selected.
2517
+ examples:
2518
+ - us
2519
+ - cdn
2520
+ - in
2521
+ visibleWhen:
2522
+ type: array
2523
+ description: |
2524
+ Conditional display rules that determine when this field should be visible.
2525
+ If empty or not provided, the field is always visible.
2526
+ items:
2527
+ type: object
2528
+ properties:
2529
+ field:
2530
+ type: string
2531
+ description: |
2532
+ The ID of another field whose value controls the visibility of this field.
2533
+ examples:
2534
+ - mode
2535
+ is:
2536
+ type: array
2537
+ items:
2538
+ type:
2539
+ - string
2540
+ - boolean
2541
+ - number
2542
+ - 'null'
2543
+ description: |
2544
+ Array of values - if the referenced field has any of these values,
2545
+ this field will be visible. Values may be strings, booleans (for
2546
+ checkbox/toggle fields), numbers (for numeric inputs), or null.
2547
+ examples:
2548
+ - - Update
2549
+ - - true
2550
+ layout:
2551
+ type: object
2552
+ description: |
2553
+ Defines how the form fields are arranged and grouped in the UI.
2554
+ The layout can organize fields into columns, sections, or other visual groupings.
2555
+ properties:
2556
+ type:
2557
+ type: string
2558
+ description: |
2559
+ The type of layout to use for the form.
2560
+ enum:
2561
+ - column
2562
+ - collapse
2563
+ - box
2564
+ - indent
2565
+ - tabWithoutSave
2566
+ - verticalTabWithoutSave
2567
+ x-enumDescriptions:
2568
+ column: Arranges form fields in a single vertical column layout.
2569
+ collapse: Groups fields into collapsible/expandable sections.
2570
+ box: Wraps field groups in bordered boxes with headings.
2571
+ indent: Indents field groups to show hierarchy.
2572
+ tabWithoutSave: Organizes field groups into horizontal tabs (no per-tab save).
2573
+ verticalTabWithoutSave: Organizes field groups into vertical tabs (no per-tab save).
2574
+ examples:
2575
+ - column
2576
+ - collapse
2577
+ containers:
2578
+ type: array
2579
+ description: |
2580
+ Array of container objects that group fields or contain nested containers.
2581
+ Each container can represent a column, box, indented section, or collapsible section.
2582
+ items:
2583
+ type: object
2584
+ properties:
2585
+ type:
2586
+ type: string
2587
+ description: |
2588
+ The visual style of the container.
2589
+ enum:
2590
+ - indent
2591
+ - box
2592
+ - collapse
2593
+ x-enumDescriptions:
2594
+ indent: Indents the contained fields to show hierarchy.
2595
+ box: Wraps the contained fields in a bordered box with a heading.
2596
+ collapse: Wraps the contained fields in a collapsible/expandable section.
2597
+ examples:
2598
+ - indent
2599
+ - box
2600
+ - collapse
2601
+ label:
2602
+ type: string
2603
+ description: |
2604
+ The heading text displayed for this container.
2605
+ examples:
2606
+ - Basic fields
2607
+ - Advanced fields
2608
+ - Indented fields
2609
+ - Boxed fields
2610
+ fields:
2611
+ type: array
2612
+ items:
2613
+ type: string
2614
+ description: |
2615
+ Array of field IDs that should be displayed in this container.
2616
+ Each ID must correspond to a key in the fieldMap object.
2617
+ examples:
2618
+ - - A
2619
+ - url
2620
+ - - mode
2621
+ - body
2622
+ - - keyValue
2623
+ - checkbox
2624
+ containers:
2625
+ type: array
2626
+ description: |
2627
+ Nested containers within this container. Allows for hierarchical organization
2628
+ of fields with different visual styles.
2629
+ items:
2630
+ type: object
2631
+ properties:
2632
+ label:
2633
+ type: string
2634
+ description: |
2635
+ The heading text displayed for this nested container.
2636
+ examples:
2637
+ - Indented fields
2638
+ - Boxed fields
2639
+ - Collapsed fields
2640
+ fields:
2641
+ type: array
2642
+ items:
2643
+ type: string
2644
+ description: |
2645
+ Array of field IDs that should be displayed in this nested container.
2646
+ examples:
2647
+ - - keyValue
2648
+ - checkbox
2649
+ additionalProperties: true
2650
+ init:
2651
+ type: object
2652
+ description: |
2653
+ Configuration for custom JavaScript initialization that executes when the form is first loaded.
2654
+
2655
+ This object defines a JavaScript hook that prepares the form for use, sets initial field values,
2656
+ performs validation, or otherwise customizes the form behavior before it is displayed to the user.
2657
+
2658
+ **Function signature**
2659
+
2660
+ The initialization function is invoked with a single 'options' argument containing contextual information:
2661
+ ```javascript
2662
+ function formInit(options) {
2663
+ // Process options and return the form object
2664
+ return options.resource.settingsForm.form;
2665
+ }
2666
+ ```
2667
+
2668
+ **Available context**
2669
+
2670
+ The 'options' argument provides access to:
2671
+ - `options.resource` - The current resource being configured
2672
+ - `options.parentResource` - The parent of the current resource
2673
+ - `options.grandparentResource` - The grandparent of the current resource
2674
+ - `options.license` - For integration apps, the license provisioned to the integration
2675
+ - `options.parentLicense` - For integration apps, the parent of the license
2676
+ - `options.sandbox` - Boolean flag indicating whether the script is running in a sandbox environment
2677
+
2678
+
2679
+ **Common uses**
2680
+
2681
+ - Dynamically generate field options based on resource configuration
2682
+ - Pre-populate default values from related resources
2683
+ - Apply conditional logic that depends on resource properties
2684
+ - Add, remove, or modify form fields based on user permissions or account settings
2685
+ - Fetch external data to populate selection options
2686
+ - Implement complex validation rules that depend on resource context
2687
+ - Create branching form experiences based on user selections
2688
+
2689
+ **Return value**
2690
+
2691
+ The function must return a valid form object that the UI can render.
2692
+ Throwing an exception will signal an error to the user.
2693
+ properties:
2694
+ function:
2695
+ type: string
2696
+ description: |
2697
+ The name of the function to execute within the referenced script.
2698
+
2699
+ This property specifies which function to invoke from the script
2700
+ referenced by _scriptId. The function will be called when the form
2701
+ is initialized and should handle any custom setup logic.
2702
+
2703
+ The function must follow the expected signature and return a valid form object.
2704
+ examples:
2705
+ - initializeForm
2706
+ - setupFormState
2707
+ - prepareFormData
2708
+ _scriptId:
2709
+ type: string
2710
+ description: |
2711
+ Reference to a predefined script resource containing the initialization function.
2712
+
2713
+ The referenced script should contain the function specified in the
2714
+ 'function' property. This script must be accessible within the user's account
2715
+ and have appropriate permissions.
2716
+ examples:
2717
+ - 60a2c4e6f321d800129a1a3c
2718
+ - 5f8d43a1b9e5a80011a35f2c
2719
+ PreSave:
2720
+ type: object
2721
+ description: |
2722
+ Defines a JavaScript hook that executes before the resource is saved.
2723
+
2724
+ This hook allows for programmatic validation, transformation, or enrichment of the
2725
+ resource itself before it is persisted. It can be used to enforce business rules,
2726
+ set derived properties, or implement cross-field validations that can't be expressed
2727
+ through the standard UI.
2728
+
2729
+ **Function signature**
2730
+
2731
+ The preSave function is invoked with a single 'options' argument containing:
2732
+ ```javascript
2733
+ function preSave(options) {
2734
+ // Process options and return the modified resource
2735
+ return options.newResource;
2736
+ }
2737
+ ```
2738
+
2739
+ **Available context**
2740
+
2741
+ The 'options' argument provides access to:
2742
+ - `options.newResource` - The resource being saved (with pending changes)
2743
+ - `options.oldResource` - The previous version of the resource (before changes)
2744
+ - `options.sandbox` - Boolean flag indicating whether the script is running in a sandbox environment
2745
+
2746
+
2747
+ **Common uses**
2748
+
2749
+ - Enforcing complex business rules across multiple fields
2750
+ - Automatically deriving field values based on other configuration
2751
+ - Performing validation that depends on external systems or data
2752
+ - Normalizing or standardizing configuration values
2753
+ - Adding computed or derived properties
2754
+ - Implementing versioning or change tracking
2755
+ - Dynamically looking up data using the Celigo API module to enrich configuration
2756
+
2757
+ **Return value**
2758
+
2759
+ The function must return the newResource object (potentially modified) to be saved.
2760
+ Throwing an exception will prevent saving and signal an error to the user.
2761
+ properties:
2762
+ function:
2763
+ type: string
2764
+ description: |
2765
+ The name of the function to execute within the referenced script.
2766
+
2767
+ This property specifies which function to invoke from the script
2768
+ referenced by _scriptId. The function will be called just before
2769
+ the resource is saved.
2770
+
2771
+ The function must follow the expected signature and return the resource object.
2772
+ examples:
2773
+ - preSave
2774
+ - validateResource
2775
+ - prepareResourceForSave
2776
+ _scriptId:
2777
+ type: string
2778
+ description: |
2779
+ Reference to a predefined script resource containing the preSave function.
2780
+
2781
+ The referenced script should contain the function specified in the
2782
+ 'function' property. This script must be accessible within the user's account
2783
+ and have appropriate permissions.
2784
+ examples:
2785
+ - 60a2c4e6f321d800129a1a3c
2786
+ - 5f8e7d2c1b54e6003a9c7e12
2787
+ IntegrationBase:
2788
+ type: object
2789
+ description: Writable integration fields shared by the request and response schemas.
2790
+ properties:
2791
+ name:
2792
+ type: string
2793
+ minLength: 1
2794
+ maxLength: 100
2795
+ description: |-
2796
+ Human-readable name for the integration.
2797
+
2798
+ Use a short, descriptive label that helps users identify the integration in the UI.
2799
+ examples:
2800
+ - Shopify → NetSuite Orders
2801
+ description:
2802
+ type:
2803
+ - string
2804
+ - 'null'
2805
+ maxLength: 5120
2806
+ description: |-
2807
+ Optional description of the integration's purpose and behavior.
2808
+
2809
+ Helpful for documentation, onboarding, and clarifying what the integration does.
2810
+ readme:
2811
+ type:
2812
+ - string
2813
+ - 'null'
2814
+ maxLength: 51200
2815
+ description: |-
2816
+ Long-form README content for the integration (typically Markdown).
2817
+
2818
+ Use this to provide setup instructions, prerequisites, and operational notes.
2819
+ x-celigo-ai-guidance:
2820
+ - |-
2821
+ Set this ONLY when the user explicitly provides README content or asks you to
2822
+ write one — author it from THEIR wording and intent,
2823
+ not from your own assumptions.
2824
+ Do NOT generate a README on a create/update the user did not ask for;
2825
+ leave it unset.
2826
+ _connectorId:
2827
+ type: string
2828
+ format: objectId
2829
+ x-celigo-refModel: connectors
2830
+ examples:
2831
+ - 5b3c8f9a2e1d4c0011223344
2832
+ description: |-
2833
+ Integration App (connector) identifier when this integration is based on an installed Integration App.
2834
+
2835
+ If you are not working with an Integration App installation, omit this field.
2836
+ _templateId:
2837
+ type: string
2838
+ format: objectId
2839
+ x-celigo-refModel: templates
2840
+ examples:
2841
+ - 5c1a7b8d4f2e6a0011556677
2842
+ description: |-
2843
+ Template identifier used to create/initialize this integration (commonly for Integration Apps).
2844
+
2845
+ Omit unless you are creating/updating an integration from a template.
2846
+ install:
2847
+ type: array
2848
+ description: |-
2849
+ Install "cards" shown during an Integration App installation.
2850
+
2851
+ These are primarily UI/workflow metadata. Unless you are explicitly modeling an Integration App install experience,
2852
+ omit this field.
2853
+ items:
2854
+ type: object
2855
+ additionalProperties: true
2856
+ properties:
2857
+ name:
2858
+ type: string
2859
+ description: Display name for this install card.
2860
+ examples:
2861
+ - Connect to Shopify
2862
+ description:
2863
+ type: string
2864
+ description: Help text shown to the user for this install card.
2865
+ examples:
2866
+ - Authorize access to your Shopify store.
2867
+ imageURL:
2868
+ type: string
2869
+ description: Optional image URL to display for this install card.
2870
+ examples:
2871
+ - https://www.celigo.com/images/shopify.png
2872
+ _connectionId:
2873
+ type: string
2874
+ format: objectId
2875
+ x-celigo-refModel: connections
2876
+ examples:
2877
+ - 626168f90b6ef816b50c82d7
2878
+ description: Connection referenced/created/registered by this card (if applicable).
2879
+ installURL:
2880
+ type: string
2881
+ description: URL to open during install (if the card is URL-based).
2882
+ examples:
2883
+ - https://www.celigo.com/install/shopify
2884
+ completed:
2885
+ type:
2886
+ - boolean
2887
+ - 'null'
2888
+ description: When true, this card has been completed. The server also returns `null` for cards whose completion state was never set.
2889
+ installerFunction:
2890
+ type: string
2891
+ description: Optional function name used by the platform to run install logic for this card.
2892
+ examples:
2893
+ - installShopifyConnection
2894
+ uninstallerFunction:
2895
+ type: string
2896
+ description: Optional function name used by the platform to run uninstall logic for this card.
2897
+ examples:
2898
+ - uninstallShopifyConnection
2899
+ options:
2900
+ type: object
2901
+ description: Free-form options passed to the installer/uninstaller logic.
2902
+ additionalProperties: true
2903
+ sourceConnection:
2904
+ type: object
2905
+ description: Source connection metadata used to prefill or drive install behavior.
2906
+ additionalProperties: true
2907
+ templateZip:
2908
+ type: boolean
2909
+ description: When true, this card uses a template ZIP artifact.
2910
+ _stackId:
2911
+ type: string
2912
+ format: objectId
2913
+ x-celigo-refModel: stacks
2914
+ examples:
2915
+ - 5f2a1b3c4d5e6f0011889900
2916
+ description: Stack identifier used by install logic (if applicable).
2917
+ isClone:
2918
+ type: boolean
2919
+ description: When true, this card is part of a clone workflow.
2920
+ form:
2921
+ type: object
2922
+ description: Inline form definition used by this card (if applicable).
2923
+ additionalProperties: true
2924
+ mode:
2925
+ type: string
2926
+ description: |-
2927
+ Integration App lifecycle mode.
2928
+
2929
+ Use this only when dealing with Integration App lifecycle workflows.
2930
+ enum:
2931
+ - install
2932
+ - settings
2933
+ - uninstall
2934
+ x-enumDescriptions:
2935
+ install: The integration is being installed or is in the install workflow.
2936
+ settings: The integration is in settings configuration mode.
2937
+ uninstall: The integration is being uninstalled.
2938
+ examples:
2939
+ - install
2940
+ settings:
2941
+ description: Integration App settings object for this integration.
2942
+ allOf:
2943
+ - description: |-
2944
+ Integration App settings object for this integration.
2945
+
2946
+ These values are typically collected via `settingsForm` and then stored here. When generating values,
2947
+ prefer setting only the fields required by the form/workflow and omit unknown keys.
2948
+ - $ref: '#/components/schemas/Settings'
2949
+ version:
2950
+ type:
2951
+ - string
2952
+ - 'null'
2953
+ examples:
2954
+ - 1.2.0
2955
+ description: |-
2956
+ Integration App version (or template version) associated with this integration.
2957
+
2958
+ Usually system-managed for Integration App installs; omit unless you are explicitly controlling versions.
2959
+ tag:
2960
+ type:
2961
+ - string
2962
+ - 'null'
2963
+ examples:
2964
+ - instance-2
2965
+ description: |-
2966
+ Legacy field for distinguishing multiple instances of the same Integration App within a single Celigo environment.
2967
+
2968
+ Only set this when a customer is running multiple installations of the same Integration App. Otherwise, omit this field.
2969
+ updateInProgress:
2970
+ type: boolean
2971
+ description: |-
2972
+ When true, an Integration App update workflow is currently running. Settable via the
2973
+ API, but normally managed by the platform's update workflow.
2974
+ x-celigo-ai-guidance:
2975
+ - Typically system-managed; omit unless a workflow explicitly requires setting it.
2976
+ celigoAgentAutoRunMode:
2977
+ type: boolean
2978
+ examples:
2979
+ - false
2980
+ description: |-
2981
+ When true, Celigo Agent actions scoped to this integration are allowed to run automatically
2982
+ without a manual approval step.
2983
+
2984
+ Omit unless you are explicitly configuring Celigo Agent behavior for this integration.
2985
+ resolvedAt:
2986
+ type: string
2987
+ format: date-time
2988
+ examples:
2989
+ - '2026-01-15T09:30:00.000Z'
2990
+ description: |-
2991
+ Timestamp indicating when the most recent install/update workflow was resolved/completed.
2992
+
2993
+ Typically system-managed; omit in normal create/update payloads.
2994
+ settingsForm:
2995
+ description: Settings form definition for the integration.
2996
+ allOf:
2997
+ - description: |-
2998
+ Settings form definition for the integration.
2999
+
3000
+ This controls the UI fields shown to users to collect `settings`.
3001
+ Unless you are authoring/patching an Integration App definition, omit this field.
3002
+ - $ref: '#/components/schemas/Form'
3003
+ preSave:
3004
+ description: Pre-save hook configuration used to validate/transform settings before saving.
3005
+ allOf:
3006
+ - description: |-
3007
+ Pre-save hook configuration used to validate/transform settings before saving.
3008
+
3009
+ Unless you are authoring/patching an Integration App definition, omit this field.
3010
+ - $ref: '#/components/schemas/PreSave'
3011
+ update:
3012
+ type: object
3013
+ description: |-
3014
+ Script reference used by the platform to perform integration update logic (e.g., migration between versions).
3015
+
3016
+ Only include when the update workflow explicitly requires it.
3017
+ properties:
3018
+ _scriptId:
3019
+ type: string
3020
+ format: objectId
3021
+ x-celigo-refModel: scripts
3022
+ examples:
3023
+ - 5d4e3f2a1b0c9d0011223344
3024
+ description: Script ID that contains the update implementation.
3025
+ _stackId:
3026
+ type: string
3027
+ format: objectId
3028
+ x-celigo-refModel: stacks
3029
+ examples:
3030
+ - 5f2a1b3c4d5e6f0011889900
3031
+ description: Stack ID that provides runtime context for the update script (if applicable).
3032
+ function:
3033
+ type: string
3034
+ examples:
3035
+ - updateIntegration
3036
+ description: Function name within the script to invoke for updates.
3037
+ installSteps:
3038
+ type: array
3039
+ description: |-
3040
+ Ordered list of lifecycle steps used by the Integration App installer.
3041
+
3042
+ This is primarily Integration App workflow metadata. Omit unless you are working with Integration Apps.
3043
+ items:
3044
+ type: object
3045
+ additionalProperties: true
3046
+ required:
3047
+ - name
3048
+ - type
3049
+ properties:
3050
+ name:
3051
+ type: string
3052
+ description: Display name for the step.
3053
+ examples:
3054
+ - Connect to NetSuite
3055
+ description:
3056
+ type: string
3057
+ description: Help text shown to the user for the step.
3058
+ examples:
3059
+ - Authorize access to your NetSuite account.
3060
+ imageUrl:
3061
+ type: string
3062
+ description: Optional image URL for the step.
3063
+ examples:
3064
+ - https://www.celigo.com/images/netsuite.png
3065
+ completed:
3066
+ type: boolean
3067
+ description: When true, this step has been completed.
3068
+ type:
3069
+ type: string
3070
+ description: Step type.
3071
+ x-celigo-ai-guidance:
3072
+ - |-
3073
+ Choose the type that matches the step payload:
3074
+ - `connection`: step uses `_connectionId`
3075
+ - `url`: step uses `url` or `getUrlFunction`
3076
+ - `form`: step uses `form` or `initFormFunction`
3077
+ - `hidden`: step runs silently without user interaction (no payload)
3078
+ - `template_zip`: step uses `templateZip`
3079
+ - `stack`: step uses `_stackId`
3080
+ - `edition`: step participates in license/edition changes
3081
+ enum:
3082
+ - connection
3083
+ - url
3084
+ - form
3085
+ - hidden
3086
+ - template_zip
3087
+ - stack
3088
+ - edition
3089
+ x-enumDescriptions:
3090
+ connection: Step that registers or creates a connection resource.
3091
+ url: Step that opens an external URL during the install workflow.
3092
+ form: Step that collects user input via an inline or dynamic form.
3093
+ hidden: Step that runs silently without user interaction.
3094
+ template_zip: Step that provisions resources from a template ZIP artifact.
3095
+ stack: Step that registers or creates a stack resource.
3096
+ edition: Step that participates in license or edition changes.
3097
+ url:
3098
+ type: string
3099
+ description: 'URL to open (for `type: url`).'
3100
+ examples:
3101
+ - https://www.celigo.com/install/netsuite
3102
+ form:
3103
+ type: object
3104
+ description: 'Inline form definition (for `type: form`).'
3105
+ additionalProperties: true
3106
+ function:
3107
+ type: string
3108
+ description: Function name to run for this step (script-based behavior).
3109
+ examples:
3110
+ - runInstallStep
3111
+ initFormFunction:
3112
+ type: string
3113
+ description: 'Function name used to initialize form data (for `type: form`).'
3114
+ examples:
3115
+ - initSettingsForm
3116
+ _scriptId:
3117
+ type: string
3118
+ format: objectId
3119
+ x-celigo-refModel: scripts
3120
+ examples:
3121
+ - 5d4e3f2a1b0c9d0011223344
3122
+ description: Script that contains `function`, `initFormFunction`, or `getUrlFunction`.
3123
+ sourceConnection:
3124
+ type: object
3125
+ description: Source connection metadata used to drive install behavior.
3126
+ additionalProperties: true
3127
+ templateZip:
3128
+ type: boolean
3129
+ description: When true, this step uses a template ZIP artifact.
3130
+ _connectionId:
3131
+ type: string
3132
+ format: objectId
3133
+ x-celigo-refModel: connections
3134
+ examples:
3135
+ - 6553ebdeda62bb22e7fa81ff
3136
+ description: 'Connection referenced/created by this step (for `type: connection`).'
3137
+ _stackId:
3138
+ type: string
3139
+ format: objectId
3140
+ x-celigo-refModel: stacks
3141
+ examples:
3142
+ - 5f2a1b3c4d5e6f0011889900
3143
+ description: 'Stack referenced/created by this step (for `type: stack`).'
3144
+ isClone:
3145
+ type: boolean
3146
+ description: When true, this step is being applied in a clone workflow.
3147
+ getUrlFunction:
3148
+ type: string
3149
+ description: 'Function name used to compute a URL dynamically (for `type: url`).'
3150
+ examples:
3151
+ - computeInstallURL
3152
+ options:
3153
+ type: object
3154
+ description: Free-form options used by installer logic for this step.
3155
+ additionalProperties: true
3156
+ uninstallSteps:
3157
+ type: array
3158
+ description: Ordered list of lifecycle steps used by the Integration App uninstaller.
3159
+ items:
3160
+ type: object
3161
+ additionalProperties: true
3162
+ required:
3163
+ - name
3164
+ - type
3165
+ properties:
3166
+ name:
3167
+ type: string
3168
+ description: Display name for the step.
3169
+ examples:
3170
+ - Connect to NetSuite
3171
+ description:
3172
+ type: string
3173
+ description: Help text shown to the user for the step.
3174
+ examples:
3175
+ - Authorize access to your NetSuite account.
3176
+ imageUrl:
3177
+ type: string
3178
+ description: Optional image URL for the step.
3179
+ examples:
3180
+ - https://www.celigo.com/images/netsuite.png
3181
+ completed:
3182
+ type: boolean
3183
+ description: When true, this step has been completed.
3184
+ type:
3185
+ type: string
3186
+ description: Step type.
3187
+ x-celigo-ai-guidance:
3188
+ - |-
3189
+ Choose the type that matches the step payload:
3190
+ - `connection`: step uses `_connectionId`
3191
+ - `url`: step uses `url` or `getUrlFunction`
3192
+ - `form`: step uses `form` or `initFormFunction`
3193
+ - `hidden`: step runs silently without user interaction (no payload)
3194
+ - `template_zip`: step uses `templateZip`
3195
+ - `stack`: step uses `_stackId`
3196
+ - `edition`: step participates in license/edition changes
3197
+ enum:
3198
+ - connection
3199
+ - url
3200
+ - form
3201
+ - hidden
3202
+ - template_zip
3203
+ - stack
3204
+ - edition
3205
+ x-enumDescriptions:
3206
+ connection: Step that registers or creates a connection resource.
3207
+ url: Step that opens an external URL during the uninstall workflow.
3208
+ form: Step that collects user input via an inline or dynamic form.
3209
+ hidden: Step that runs silently without user interaction.
3210
+ template_zip: Step that provisions resources from a template ZIP artifact.
3211
+ stack: Step that registers or creates a stack resource.
3212
+ edition: Step that participates in license or edition changes.
3213
+ url:
3214
+ type: string
3215
+ description: 'URL to open (for `type: url`).'
3216
+ examples:
3217
+ - https://www.celigo.com/install/netsuite
3218
+ form:
3219
+ type: object
3220
+ description: 'Inline form definition (for `type: form`).'
3221
+ additionalProperties: true
3222
+ function:
3223
+ type: string
3224
+ description: Function name to run for this step (script-based behavior).
3225
+ examples:
3226
+ - runInstallStep
3227
+ initFormFunction:
3228
+ type: string
3229
+ description: 'Function name used to initialize form data (for `type: form`).'
3230
+ examples:
3231
+ - initSettingsForm
3232
+ _scriptId:
3233
+ type: string
3234
+ format: objectId
3235
+ x-celigo-refModel: scripts
3236
+ examples:
3237
+ - 5d4e3f2a1b0c9d0011223344
3238
+ description: Script that contains `function`, `initFormFunction`, or `getUrlFunction`.
3239
+ sourceConnection:
3240
+ type: object
3241
+ description: Source connection metadata used to drive install behavior.
3242
+ additionalProperties: true
3243
+ templateZip:
3244
+ type: boolean
3245
+ description: When true, this step uses a template ZIP artifact.
3246
+ _connectionId:
3247
+ type: string
3248
+ format: objectId
3249
+ x-celigo-refModel: connections
3250
+ examples:
3251
+ - 6553ebdeda62bb22e7fa81ff
3252
+ description: 'Connection referenced/created by this step (for `type: connection`).'
3253
+ _stackId:
3254
+ type: string
3255
+ format: objectId
3256
+ x-celigo-refModel: stacks
3257
+ examples:
3258
+ - 5f2a1b3c4d5e6f0011889900
3259
+ description: 'Stack referenced/created by this step (for `type: stack`).'
3260
+ isClone:
3261
+ type: boolean
3262
+ description: When true, this step is being applied in a clone workflow.
3263
+ getUrlFunction:
3264
+ type: string
3265
+ description: 'Function name used to compute a URL dynamically (for `type: url`).'
3266
+ examples:
3267
+ - computeInstallURL
3268
+ options:
3269
+ type: object
3270
+ description: Free-form options used by installer logic for this step.
3271
+ additionalProperties: true
3272
+ changeEditionSteps:
3273
+ type: array
3274
+ description: Ordered list of steps used when changing the integration's edition/license.
3275
+ items:
3276
+ type: object
3277
+ additionalProperties: true
3278
+ required:
3279
+ - name
3280
+ - type
3281
+ properties:
3282
+ name:
3283
+ type: string
3284
+ description: Display name for the step.
3285
+ examples:
3286
+ - Connect to NetSuite
3287
+ description:
3288
+ type: string
3289
+ description: Help text shown to the user for the step.
3290
+ examples:
3291
+ - Authorize access to your NetSuite account.
3292
+ imageUrl:
3293
+ type: string
3294
+ description: Optional image URL for the step.
3295
+ examples:
3296
+ - https://www.celigo.com/images/netsuite.png
3297
+ completed:
3298
+ type: boolean
3299
+ description: When true, this step has been completed.
3300
+ type:
3301
+ type: string
3302
+ description: Step type.
3303
+ x-celigo-ai-guidance:
3304
+ - |-
3305
+ Choose the type that matches the step payload:
3306
+ - `connection`: step uses `_connectionId`
3307
+ - `url`: step uses `url` or `getUrlFunction`
3308
+ - `form`: step uses `form` or `initFormFunction`
3309
+ - `hidden`: step runs silently without user interaction (no payload)
3310
+ - `template_zip`: step uses `templateZip`
3311
+ - `stack`: step uses `_stackId`
3312
+ - `edition`: step participates in license/edition changes
3313
+ enum:
3314
+ - connection
3315
+ - url
3316
+ - form
3317
+ - hidden
3318
+ - template_zip
3319
+ - stack
3320
+ - edition
3321
+ x-enumDescriptions:
3322
+ connection: Step that registers or creates a connection resource.
3323
+ url: Step that opens an external URL during the edition change workflow.
3324
+ form: Step that collects user input via an inline or dynamic form.
3325
+ hidden: Step that runs silently without user interaction.
3326
+ template_zip: Step that provisions resources from a template ZIP artifact.
3327
+ stack: Step that registers or creates a stack resource.
3328
+ edition: Step that participates in license or edition changes.
3329
+ url:
3330
+ type: string
3331
+ description: 'URL to open (for `type: url`).'
3332
+ examples:
3333
+ - https://www.celigo.com/install/netsuite
3334
+ form:
3335
+ type: object
3336
+ description: 'Inline form definition (for `type: form`).'
3337
+ additionalProperties: true
3338
+ function:
3339
+ type: string
3340
+ description: Function name to run for this step (script-based behavior).
3341
+ examples:
3342
+ - runInstallStep
3343
+ initFormFunction:
3344
+ type: string
3345
+ description: 'Function name used to initialize form data (for `type: form`).'
3346
+ examples:
3347
+ - initSettingsForm
3348
+ _scriptId:
3349
+ type: string
3350
+ format: objectId
3351
+ x-celigo-refModel: scripts
3352
+ examples:
3353
+ - 5d4e3f2a1b0c9d0011223344
3354
+ description: Script that contains `function`, `initFormFunction`, or `getUrlFunction`.
3355
+ sourceConnection:
3356
+ type: object
3357
+ description: Source connection metadata used to drive install behavior.
3358
+ additionalProperties: true
3359
+ templateZip:
3360
+ type: boolean
3361
+ description: When true, this step uses a template ZIP artifact.
3362
+ _connectionId:
3363
+ type: string
3364
+ format: objectId
3365
+ x-celigo-refModel: connections
3366
+ examples:
3367
+ - 6553ebdeda62bb22e7fa81ff
3368
+ description: 'Connection referenced/created by this step (for `type: connection`).'
3369
+ _stackId:
3370
+ type: string
3371
+ format: objectId
3372
+ x-celigo-refModel: stacks
3373
+ examples:
3374
+ - 5f2a1b3c4d5e6f0011889900
3375
+ description: 'Stack referenced/created by this step (for `type: stack`).'
3376
+ isClone:
3377
+ type: boolean
3378
+ description: When true, this step is being applied in a clone workflow.
3379
+ getUrlFunction:
3380
+ type: string
3381
+ description: 'Function name used to compute a URL dynamically (for `type: url`).'
3382
+ examples:
3383
+ - computeInstallURL
3384
+ options:
3385
+ type: object
3386
+ description: Free-form options used by installer logic for this step.
3387
+ additionalProperties: true
3388
+ pendingLicense:
3389
+ type:
3390
+ - object
3391
+ - 'null'
3392
+ description: |-
3393
+ Pending license/edition change information for the integration.
3394
+
3395
+ The server returns `null` when no license/edition change is pending (rather than omitting the field).
3396
+ Only include when a license/edition change workflow explicitly requires it.
3397
+ properties:
3398
+ opts:
3399
+ type: object
3400
+ description: Free-form license options/payload.
3401
+ additionalProperties: true
3402
+ _editionId:
3403
+ type:
3404
+ - string
3405
+ - 'null'
3406
+ format: objectId
3407
+ examples:
3408
+ - 5e6f7a8b9c0d1e0011334455
3409
+ description: Target edition ID for the pending license change, or `null` when cleared.
3410
+ _parentId:
3411
+ type: string
3412
+ format: objectId
3413
+ x-celigo-refModel: integrations
3414
+ examples:
3415
+ - 6842261335b64c0bcb308e4f
3416
+ description: |-
3417
+ Parent integration ID when this integration was created as a child of another integration.
3418
+ Invalid ids are silently dropped by the server. Omit unless creating/updating child integrations.
3419
+ childDisplayName:
3420
+ type: string
3421
+ examples:
3422
+ - West region store
3423
+ description: |-
3424
+ Display name used for a child integration created during installation.
3425
+
3426
+ Omit unless creating/updating child integrations.
3427
+ initChild:
3428
+ type: object
3429
+ description: |-
3430
+ Script reference used to initialize a child integration during installation.
3431
+
3432
+ Only include when the child initialization workflow explicitly requires it.
3433
+ properties:
3434
+ function:
3435
+ type: string
3436
+ examples:
3437
+ - initChildIntegration
3438
+ description: Function name to invoke to initialize the child integration.
3439
+ _scriptId:
3440
+ type: string
3441
+ format: objectId
3442
+ x-celigo-refModel: scripts
3443
+ examples:
3444
+ - 5d4e3f2a1b0c9d0011223344
3445
+ description: Script ID that contains the initChild function.
3446
+ _stackId:
3447
+ type: string
3448
+ format: objectId
3449
+ x-celigo-refModel: stacks
3450
+ examples:
3451
+ - 5f2a1b3c4d5e6f0011889900
3452
+ description: Stack ID that provides runtime context for initChild (if applicable).
3453
+ flowGroupings:
3454
+ type: array
3455
+ description: |-
3456
+ UI grouping configuration that groups an integration's flows into named
3457
+ sections. Works on ANY integration — this is NOT an Integration-App-only
3458
+ feature; a plain integration can define flow groupings too.
3459
+
3460
+ Omit unless you are explicitly configuring flow grouping behavior.
3461
+ x-celigo-ai-guidance:
3462
+ - |-
3463
+ Set this ONLY when the user explicitly asks to group flows into named sections (e.g.
3464
+ "create the integration with flow groups Order Intake and Fulfillment").
3465
+ Otherwise omit it — do not synthesize groupings the user did not ask for.
3466
+ items:
3467
+ type: object
3468
+ additionalProperties: true
3469
+ required:
3470
+ - name
3471
+ properties:
3472
+ _id:
3473
+ type: string
3474
+ format: objectId
3475
+ readOnly: true
3476
+ description: Server-assigned grouping id.
3477
+ name:
3478
+ type: string
3479
+ description: Display name for the flow grouping section.
3480
+ examples:
3481
+ - Order sync
3482
+ settings:
3483
+ type: object
3484
+ description: |-
3485
+ Group-level settings for flows in this group. At runtime, flows in the
3486
+ group read these values under the fixed scope key `flowGrouping` — e.g.
3487
+ the Handlebars expression `{{{settings.flowGrouping.salesOrganization}}}`
3488
+ or the Mapper 2.0 envelope path `$.settings.flowGrouping.salesOrganization`.
3489
+ additionalProperties: true
3490
+ x-celigo-ai-guidance:
3491
+ - |-
3492
+ Segments after the `flowGrouping` scope key mirror the stored settings JSON
3493
+ key path exactly — nested objects add one segment per JSON key. E.g. when
3494
+ the grouping's settings JSON is `{"Customer": {"region": "west"}}`, the
3495
+ runtime reference is `{{{settings.flowGrouping.Customer.region}}}`
3496
+ (`Customer` is a JSON key here, not a settingsForm section label).
3497
+ - |-
3498
+ The runtime reference path always uses the literal scope key `flowGrouping`,
3499
+ never the grouping's `name` or any settingsForm section label. Both
3500
+ `{{settings.<fieldId>}}` (scope key missing) and paths built from UI labels
3501
+ (e.g. `{{settings.<groupName>.<sectionLabel>.<fieldId>}}`) silently resolve
3502
+ to empty strings at runtime.
3503
+ settingsForm:
3504
+ description: Form definition for this flow grouping's settings UI.
3505
+ allOf:
3506
+ - description: Form definition for this flow grouping's settings UI.
3507
+ - $ref: '#/components/schemas/Form'
3508
+ apiGroupings:
3509
+ type: array
3510
+ description: |-
3511
+ UI grouping configuration for APIs within the integration.
3512
+
3513
+ Used to group APIs into named sections with their own settings/settingsForm.
3514
+ Works identically to `flowGroupings` but for API resources. Create groupings here,
3515
+ then assign APIs to them via `PUT /v1/apis/updateApiGrouping`.
3516
+ items:
3517
+ type: object
3518
+ additionalProperties: true
3519
+ required:
3520
+ - name
3521
+ properties:
3522
+ _id:
3523
+ type: string
3524
+ format: objectId
3525
+ readOnly: true
3526
+ description: Server-assigned grouping id.
3527
+ name:
3528
+ type: string
3529
+ description: Display name for the API grouping section.
3530
+ examples:
3531
+ - Inventory APIs
3532
+ settings:
3533
+ type: object
3534
+ description: Group-level settings for APIs in this group.
3535
+ additionalProperties: true
3536
+ x-celigo-ai-guidance:
3537
+ - |-
3538
+ Unlike `flowGroupings[].settings`, this object does not round-trip through the
3539
+ public API: `settings` values sent on POST/PATCH/PUT are silently discarded and
3540
+ the persisted grouping keeps only `_id` and `name`. API executions also receive
3541
+ no integration-document-level settings in their runtime `settings` context, so
3542
+ grouping values could not be referenced from grouped APIs' steps in any case.
3543
+ For values an API's steps must read at runtime, define them in the step
3544
+ resource's own `settings`.
3545
+ settingsForm:
3546
+ description: Form definition for this API grouping's settings UI.
3547
+ allOf:
3548
+ - description: Form definition for this API grouping's settings UI.
3549
+ - $ref: '#/components/schemas/Form'
3550
+ netSuiteDistributedAdaptor:
3551
+ type: object
3552
+ description: |-
3553
+ NetSuite distributed adaptor metadata (platform feature).
3554
+
3555
+ Only include if you are explicitly configuring distributed NetSuite adaptor behavior.
3556
+ properties:
3557
+ accountId:
3558
+ type: string
3559
+ examples:
3560
+ - TSTDRV1234567
3561
+ description: NetSuite account identifier.
3562
+ environment:
3563
+ type: string
3564
+ description: NetSuite environment.
3565
+ enum:
3566
+ - production
3567
+ - beta
3568
+ - sandbox
3569
+ x-enumDescriptions:
3570
+ production: The NetSuite production environment.
3571
+ beta: The NetSuite beta/release-preview environment.
3572
+ sandbox: A dedicated NetSuite sandbox account environment.
3573
+ integrationId:
3574
+ type: string
3575
+ examples:
3576
+ - celigo_integration_app
3577
+ description: Identifier used by the distributed adaptor for this integration.
3578
+ _sourceId:
3579
+ type: string
3580
+ format: objectId
3581
+ examples:
3582
+ - 6842261335b64c0bcb308e4f
3583
+ description: |-
3584
+ System-assigned source identifier for the integration.
3585
+
3586
+ Typically system-managed; omit in normal create/update payloads.
3587
+ sampleIntegration:
3588
+ type: boolean
3589
+ description: |-
3590
+ Indicates this integration is a sample/demo integration (used for templates/examples).
3591
+
3592
+ Typically system-managed.
3593
+ syncs:
3594
+ type: boolean
3595
+ description: |-
3596
+ Indicates whether this integration uses Sync resources.
3597
+
3598
+ Typically system-managed.
3599
+ aliases:
3600
+ type: array
3601
+ description: Named aliases that map to specific resources within the integration.
3602
+ items:
3603
+ type: object
3604
+ properties:
3605
+ alias:
3606
+ type: string
3607
+ description: Alias name for the resource reference.
3608
+ examples:
3609
+ - ordersExport
3610
+ description:
3611
+ type: string
3612
+ description: Description of what this alias represents.
3613
+ examples:
3614
+ - Shopify orders export used across flows.
3615
+ _exportId:
3616
+ type: string
3617
+ format: objectId
3618
+ x-celigo-refModel: exports
3619
+ examples:
3620
+ - 69f54d6a3469e3f5597848a1
3621
+ description: Export referenced by this alias.
3622
+ _importId:
3623
+ type: string
3624
+ format: objectId
3625
+ x-celigo-refModel: imports
3626
+ examples:
3627
+ - 69f54d6c1e7f3a22cc7848b2
3628
+ description: Import referenced by this alias.
3629
+ _flowId:
3630
+ type: string
3631
+ format: objectId
3632
+ x-celigo-refModel: flows
3633
+ examples:
3634
+ - 69f54d6b7009ea11abad707a
3635
+ description: Flow referenced by this alias.
3636
+ _connectionId:
3637
+ type: string
3638
+ format: objectId
3639
+ x-celigo-refModel: connections
3640
+ examples:
3641
+ - 626168f90b6ef816b50c82d7
3642
+ description: Connection referenced by this alias.
3643
+ _lookupCacheId:
3644
+ type: string
3645
+ format: objectId
3646
+ x-celigo-refModel: lookupcaches
3647
+ examples:
3648
+ - 68680d7111d1437fbcbce534
3649
+ description: |-
3650
+ Lookup cache referenced by this alias. Added automatically when the
3651
+ cache is registered to the integration (the alias is a slug of the
3652
+ cache name), and must be removed before the cache can be deregistered.
3653
+ iLMIgnore:
3654
+ type: object
3655
+ description: Configuration to exclude specific resources from integration lifecycle management.
3656
+ additionalProperties: true
3657
+ ResourceResponse:
3658
+ type: object
3659
+ description: Response
3660
+ x-celigo-ai-guidance:
3661
+ - Core response fields shared by all Celigo resources
3662
+ properties:
3663
+ _id:
3664
+ type: string
3665
+ format: objectId
3666
+ readOnly: true
3667
+ description: Unique identifier for the resource. Format is a 24-character hexadecimal string.
3668
+ x-celigo-ai-guidance:
3669
+ - |-
3670
+ The _id is used in:
3671
+ - API endpoints that operate on a specific resource (e.g., GET, PUT, DELETE)
3672
+ - References from other resources (e.g., flows that use this resource)
3673
+ - Job history and error tracking
3674
+ examples:
3675
+ - 5f8d43a1b9e5a80011a35f2c
3676
+ createdAt:
3677
+ type: string
3678
+ format: date-time
3679
+ readOnly: true
3680
+ description: Timestamp when the resource was created. Set automatically and cannot be modified.
3681
+ x-celigo-ai-guidance:
3682
+ - Recorded in ISO 8601 with a UTC timezone (Z suffix).
3683
+ examples:
3684
+ - '2023-04-01T09:15:32Z'
3685
+ lastModified:
3686
+ type: string
3687
+ format: date-time
3688
+ readOnly: true
3689
+ description: Timestamp when the resource was last updated. Changes whenever any property is modified.
3690
+ x-celigo-ai-guidance:
3691
+ - Recorded in ISO 8601 with a UTC timezone (Z suffix); always equal to or later than `createdAt`.
3692
+ examples:
3693
+ - '2023-04-15T14:30:15Z'
3694
+ deletedAt:
3695
+ type:
3696
+ - string
3697
+ - 'null'
3698
+ format: date-time
3699
+ readOnly: true
3700
+ description: Timestamp when the resource was soft-deleted. When null or absent, the resource is active.
3701
+ x-celigo-ai-guidance:
3702
+ - Non-null means the resource is soft-deleted (in the recycle bin) — recoverable within the retention period before permanent removal.
3703
+ examples:
3704
+ - '2023-05-20T11:45:32Z'
3705
+ required:
3706
+ - _id
3707
+ Integration:
3708
+ type: object
3709
+ description: Integration object as returned by the API.
3710
+ required:
3711
+ - _id
3712
+ - name
3713
+ - createdAt
3714
+ - lastModified
3715
+ - install
3716
+ - installSteps
3717
+ - uninstallSteps
3718
+ - changeEditionSteps
3719
+ - flowGroupings
3720
+ - apiGroupings
3721
+ - _registeredConnectionIds
3722
+ allOf:
3723
+ - $ref: '#/components/schemas/IntegrationBase'
3724
+ - $ref: '#/components/schemas/ResourceResponse'
3725
+ - type: object
3726
+ properties:
3727
+ _registeredConnectionIds:
3728
+ type: array
3729
+ readOnly: true
3730
+ description: |-
3731
+ Connections registered to this integration. Managed by the platform when users
3732
+ register connections through the UI or the integration's registerConnection
3733
+ operation; client-sent values are ignored (PUT-verified).
3734
+ items:
3735
+ type: string
3736
+ format: objectId
3737
+ x-celigo-refModel: connections
3738
+ x-celigo-ai-guidance:
3739
+ - |-
3740
+ This is managed by the platform when users register connections through the UI or when using the
3741
+ Integration “registerConnection” API operation. It is not set via normal integration create/update requests.
3742
+ _registeredLookupCacheIds:
3743
+ type: array
3744
+ readOnly: true
3745
+ description: Lookup caches registered to this integration, managed by the platform.
3746
+ items:
3747
+ type: string
3748
+ format: objectId
3749
+ x-celigo-refModel: lookupcaches
3750
+ Request:
3751
+ type: object
3752
+ description: Fields that can be sent when creating or updating an integration.
3753
+ required:
3754
+ - name
3755
+ allOf:
3756
+ - $ref: '#/components/schemas/IntegrationBase'
3757
+ Error:
3758
+ type: object
3759
+ description: Standard error response envelope returned by integrator.io APIs.
3760
+ properties:
3761
+ errors:
3762
+ type: array
3763
+ description: List of errors that occurred while processing the request.
3764
+ items:
3765
+ type: object
3766
+ properties:
3767
+ code:
3768
+ oneOf:
3769
+ - type: string
3770
+ - type: integer
3771
+ description: |-
3772
+ Machine-readable error code. Usually a string like
3773
+ `invalid_ref`, `missing_required_field`, or `unauthorized`;
3774
+ may be an **integer** when the error mirrors an upstream HTTP
3775
+ status (e.g. `500`) — most commonly returned by connection-ping
3776
+ and adaptor-proxy responses.
3777
+ message:
3778
+ type: string
3779
+ description: Human-readable description of the error.
3780
+ field:
3781
+ type: string
3782
+ description: |-
3783
+ Optional pointer to the document field that caused the error.
3784
+ Used by structural validation errors (`missing_required_field`,
3785
+ `invalid_ref`) to indicate which field is at fault
3786
+ (e.g. `_id`, `type`, `http.baseURI`).
3787
+ source:
3788
+ type: string
3789
+ description: |-
3790
+ Optional origin layer for the error — e.g. `application` when
3791
+ the error came from the remote system the adaptor called,
3792
+ `connector` when the adaptor itself rejected the request.
3793
+ required:
3794
+ - message
3795
+ required:
3796
+ - errors
3797
+ JsonPatchOperation:
3798
+ type: object
3799
+ description: A single JSON Patch operation (RFC 6902).
3800
+ required:
3801
+ - op
3802
+ - path
3803
+ properties:
3804
+ op:
3805
+ type: string
3806
+ enum:
3807
+ - replace
3808
+ - add
3809
+ - remove
3810
+ x-enumDescriptions:
3811
+ replace: Replaces the value at the specified path.
3812
+ add: Sets the value at the specified path.
3813
+ remove: Removes the value at the specified path.
3814
+ description: The operation to perform.
3815
+ path:
3816
+ type: string
3817
+ description: |-
3818
+ JSON Pointer (RFC 6901) to the field to patch. Only
3819
+ whitelisted paths are accepted — unlisted paths return
3820
+ `422` with `"<path> is not a whitelisted property"`.
3821
+ value:
3822
+ description: The new value to set. Required for `replace` and `add`, omit for `remove`.
3823
+ JsonPatchRequest:
3824
+ type: array
3825
+ description: |-
3826
+ A JSON Patch document (RFC 6902). Send an array of patch
3827
+ operations on whitelisted fields — all other paths are rejected
3828
+ with 422.
3829
+ minItems: 1
3830
+ items:
3831
+ $ref: '#/components/schemas/JsonPatchOperation'
3832
+ CloneRequest:
3833
+ type: object
3834
+ description: Request body for cloning an integration.
3835
+ required:
3836
+ - connectionMap
3837
+ properties:
3838
+ name:
3839
+ type: string
3840
+ description: Name for the cloned integration. If omitted, the server generates "Clone - <original name>".
3841
+ examples:
3842
+ - Clone - Integration 1
3843
+ description:
3844
+ type: string
3845
+ description: Description for the cloned integration.
3846
+ examples:
3847
+ - Cloned copy of the Shopify to NetSuite orders integration.
3848
+ _envId:
3849
+ type: string
3850
+ format: objectId
3851
+ x-celigo-refModel: environments
3852
+ description: |
3853
+ Target environment _id. When provided, the clone is created in the
3854
+ specified environment instead of the current one. Use
3855
+ GET /v1/environments to list available environments and their _ids.
3856
+ Omit to clone within the same environment.
3857
+ examples:
3858
+ - 67b123456789abcdef012345
3859
+ connectionMap:
3860
+ type: object
3861
+ description: |
3862
+ Mapping of original connection _ids to replacement connection _ids.
3863
+ Keys are source connection _ids on the original integration; values
3864
+ are target connection _ids in the destination environment.
3865
+ additionalProperties:
3866
+ type: string
3867
+ example:
3868
+ 5f7c579b6411271af4e7cefa: 64a1234567890abcdef12345
3869
+ 5f7c579b6411271af4e7cefb: 64a1234567890abcdef12346
3870
+ additionalProperties: true
3871
+ CloneResponse:
3872
+ description: Response body for a clone operation. Some clone endpoints return the cloned resource, while others may return a list of related created resources.
3873
+ oneOf:
3874
+ - title: integration
3875
+ $ref: '#/components/schemas/Integration'
3876
+ - title: resource list
3877
+ type: array
3878
+ items:
3879
+ type: object
3880
+ properties:
3881
+ model:
3882
+ type: string
3883
+ description: Model name of the created resource (e.g., Flow, Export, Import).
3884
+ examples:
3885
+ - Flow
3886
+ _id:
3887
+ type: string
3888
+ format: objectId
3889
+ description: Unique id of the created resource.
3890
+ examples:
3891
+ - 68f52162f00a35a1b26eaafb
3892
+ name:
3893
+ type: string
3894
+ description: Optional name of the created resource.
3895
+ examples:
3896
+ - Clone - Shopify orders → NetSuite
3897
+ required:
3898
+ - _id
3899
+ ClonePreviewResponse:
3900
+ type: object
3901
+ description: |
3902
+ Preview of the resources that would be created by a clone operation.
3903
+ Each object in the `objects` array represents a resource that will be
3904
+ cloned, including the target resource and all transitive dependencies
3905
+ (connections, scripts, exports, imports, etc.).
3906
+ properties:
3907
+ objects:
3908
+ type: array
3909
+ description: |
3910
+ List of resources that would be created by the clone. Always includes
3911
+ the target resource and may include transitive dependencies such as
3912
+ connections, scripts, exports, imports, async helpers, and lookup caches.
3913
+ items:
3914
+ type: object
3915
+ properties:
3916
+ model:
3917
+ type: string
3918
+ description: |
3919
+ The model type of the resource. Observed values include
3920
+ AsyncHelper, Connection, Export, Flow, Import, Integration,
3921
+ LookupCache, Script, and Tool.
3922
+ examples:
3923
+ - Flow
3924
+ doc:
3925
+ type: object
3926
+ description: The full resource document that would be created by the clone.
3927
+ additionalProperties: true
3928
+ stackRequired:
3929
+ type: boolean
3930
+ description: Whether the clone requires a stack (connector-level) environment to proceed.
3931
+ _stackId:
3932
+ type:
3933
+ - string
3934
+ - 'null'
3935
+ description: The stack id associated with the resource, or null if no stack is involved.
3936
+ examples:
3937
+ - 5f8d43a1b9e5a80011a35f2c
3938
+ Revision:
3939
+ type: object
3940
+ description: |-
3941
+ Integration Lifecycle Management (ILM) revision entry. Revisions capture point-in-time state of an
3942
+ integration and drive snapshot, pull, and revert workflows across environments.
3943
+ properties:
3944
+ _id:
3945
+ type: string
3946
+ format: objectId
3947
+ description: Revision id.
3948
+ examples:
3949
+ - 6a28d2af6d42eb08f8e863e7
3950
+ _integrationId:
3951
+ type: string
3952
+ format: objectId
3953
+ description: Id of the integration this revision belongs to.
3954
+ x-celigo-refModel: integrations
3955
+ examples:
3956
+ - 6842261335b64c0bcb308e4f
3957
+ _fromIntegrationId:
3958
+ type: string
3959
+ format: objectId
3960
+ description: |-
3961
+ For `pull` / `revert` revisions, the id of the source integration the changes originated from.
3962
+ For `snapshot` revisions this equals `_integrationId`.
3963
+ x-celigo-refModel: integrations
3964
+ examples:
3965
+ - 6842261335b64c0bcb308e4f
3966
+ _fromIntegrationEnvId:
3967
+ type: string
3968
+ format: objectId
3969
+ description: Environment id of the source integration.
3970
+ examples:
3971
+ - 67b123456789abcdef012345
3972
+ fromIntegrationName:
3973
+ type: string
3974
+ description: Display name of the source integration at revision time (frozen copy).
3975
+ examples:
3976
+ - Shopify → NetSuite Orders
3977
+ type:
3978
+ type: string
3979
+ description: Revision kind.
3980
+ enum:
3981
+ - snapshot
3982
+ - pull
3983
+ - revert
3984
+ x-enumDescriptions:
3985
+ snapshot: Point-in-time capture of the current integration state.
3986
+ pull: Changes pulled in from a related integration in another environment or clone.
3987
+ revert: Restoration of the integration to a prior revision state.
3988
+ status:
3989
+ type: string
3990
+ description: |-
3991
+ Lifecycle status. `completed` revisions are terminal; `inprogress` (pull/revert) revisions can
3992
+ be diffed and either applied or canceled. `failed` revisions surfaced an error mid-process;
3993
+ `canceled` revisions were aborted before apply.
3994
+ enum:
3995
+ - inprogress
3996
+ - completed
3997
+ - failed
3998
+ - canceled
3999
+ x-enumDescriptions:
4000
+ inprogress: The revision is currently being prepared and can be diffed, applied, or canceled.
4001
+ completed: The revision has been finalized and applied successfully.
4002
+ failed: The revision encountered an error during processing.
4003
+ canceled: The revision was aborted before being applied.
4004
+ description:
4005
+ type: string
4006
+ description: Human-entered label describing what the revision captures.
4007
+ examples:
4008
+ - Stable baseline before deploying v2
4009
+ beforeRevisionHash:
4010
+ type: string
4011
+ description: Content hash of the integration state prior to this revision.
4012
+ examples:
4013
+ - 34b7ae8d56563e242bc0bd42fd28874442657e58
4014
+ transactionHash:
4015
+ type: string
4016
+ description: |-
4017
+ Transaction hash of the revision write. Present on `pull` and `revert` revisions; absent on
4018
+ plain snapshots.
4019
+ examples:
4020
+ - a1f3c7e90b2d4856ff19c0e7a3b5d28f4c6e0179
4021
+ afterRevisionHash:
4022
+ type: string
4023
+ description: |-
4024
+ Content hash of the integration state after the revision was applied. Present on `pull` and
4025
+ `revert` revisions.
4026
+ examples:
4027
+ - 7d9e2b4a1c3f5068ab82d4e0fc16937255ab8c40
4028
+ _revertToRevisionId:
4029
+ type: string
4030
+ format: objectId
4031
+ description: For `revert` revisions, the id of the target revision being reverted to.
4032
+ examples:
4033
+ - 6a28d2af6d42eb08f8e863e7
4034
+ revertToRevisionHash:
4035
+ type: string
4036
+ description: |-
4037
+ Content hash of the revision being reverted to — echoes `beforeRevisionHash` of the
4038
+ `_revertToRevisionId` revision.
4039
+ examples:
4040
+ - 34b7ae8d56563e242bc0bd42fd28874442657e58
4041
+ _createdByUserId:
4042
+ type: string
4043
+ format: objectId
4044
+ x-celigo-refModel: users
4045
+ examples:
4046
+ - 624774a6a7574d3ed9f9a5cc
4047
+ description: User id of the creator.
4048
+ installSteps:
4049
+ type: array
4050
+ description: |-
4051
+ Install steps associated with the revision (empty for normal snapshots; populated when the
4052
+ revision is part of a pull/revert that requires user-facing install actions).
4053
+ items:
4054
+ type: object
4055
+ additionalProperties: true
4056
+ createdAt:
4057
+ type: string
4058
+ format: date-time
4059
+ description: When the revision was created.
4060
+ examples:
4061
+ - '2026-06-10T02:57:51.483Z'
4062
+ lastModified:
4063
+ type: string
4064
+ format: date-time
4065
+ description: Last update time of the revision record.
4066
+ examples:
4067
+ - '2026-06-10T02:57:51.483Z'
4068
+ RevisionsResponse:
4069
+ type: array
4070
+ description: |-
4071
+ List of revisions for an integration, newest first. Empty history returns
4072
+ an empty response rather than `[]`.
4073
+ items:
4074
+ $ref: '#/components/schemas/Revision'
4075
+ RevisionCreateRequest:
4076
+ type: object
4077
+ description: |-
4078
+ Request body for `POST /v1/integrations/{_id}/revisions/create`. Creates a `snapshot` revision of
4079
+ the integration's current state.
4080
+ properties:
4081
+ description:
4082
+ type: string
4083
+ minLength: 1
4084
+ examples:
4085
+ - Stable baseline before deploying v2
4086
+ description: |-
4087
+ Human-readable label shown in the Revisions tab. Required — the UI enforces a non-empty value
4088
+ and so does the API.
4089
+ required:
4090
+ - description
4091
+ RevisionDiffResponse:
4092
+ type: object
4093
+ description: |-
4094
+ Structured before/after diff for a revision. Only available while the revision is in a `pending`
4095
+ state (e.g. a queued `pull` or `revert`). Completed snapshot revisions are read-only and return
4096
+ HTTP 400 `invalid_revision_state` — the diff is computed during the apply window, not retained.
4097
+
4098
+ Shape is the platform's internal diff document — a map of resource type → per-resource
4099
+ before/after blocks. Treated as an opaque envelope here; specific field layout is not guaranteed
4100
+ stable across platform versions.
4101
+ additionalProperties: true
4102
+ IntegrationErrorsResponse:
4103
+ type: array
4104
+ description: |-
4105
+ Per-flow open-error summary for an integration. One entry per flow in the integration; flows with
4106
+ zero open errors still appear so callers see the full roster. Empty integrations (no flows) return
4107
+ HTTP 204 with no body.
4108
+ items:
4109
+ type: object
4110
+ properties:
4111
+ _flowId:
4112
+ type: string
4113
+ format: objectId
4114
+ description: Id of the flow these counts apply to.
4115
+ x-celigo-refModel: flows
4116
+ examples:
4117
+ - 69497fc443fc1f9a03d31bd9
4118
+ numError:
4119
+ type: integer
4120
+ minimum: 0
4121
+ description: |-
4122
+ Count of currently open (unresolved) errors on this flow. Only
4123
+ errors within the account's data-retention window are counted —
4124
+ older open errors are excluded.
4125
+ examples:
4126
+ - 2
4127
+ lastErrorAt:
4128
+ type: string
4129
+ format: date-time
4130
+ description: |-
4131
+ Timestamp of the most recent open error on this flow, scoped to
4132
+ the account's data-retention window. Omitted when `numError` is 0.
4133
+ examples:
4134
+ - '2026-04-12T21:51:39.257Z'
4135
+ IntegrationErrorsAssignRequest:
4136
+ type: object
4137
+ description: |-
4138
+ Request body for `PUT /v1/integrations/{_id}/errors/assign`. Assigns a batch of open errors —
4139
+ across any flow in the integration — to a user by email. Errors remain open; only the assignee
4140
+ tag changes.
4141
+ properties:
4142
+ errorIds:
4143
+ type: array
4144
+ description: |-
4145
+ Ids of open errors to assign. Obtain from the per-step endpoint
4146
+ `GET /v1/flows/{_flowId}/{_stepId}/errors` → each entry's `errorId`. The integration-level
4147
+ `GET /v1/integrations/{_id}/errors` only returns per-flow *aggregates* (no individual error
4148
+ ids), so the error ids must come from the per-step endpoint. Platform caps batch size around
4149
+ ~1000; chunk larger sets client-side.
4150
+ minItems: 1
4151
+ items:
4152
+ type: string
4153
+ examples:
4154
+ - '6044134138'
4155
+ email:
4156
+ type: string
4157
+ format: email
4158
+ examples:
4159
+ - user@example.com
4160
+ description: |-
4161
+ Email of the account user to assign the errors to. Must match an existing user with access to
4162
+ the account; the API does not create users implicitly and rejects unknown emails.
4163
+ required:
4164
+ - errorIds
4165
+ - email
4166
+ IntegrationErrorsAssignResponse:
4167
+ type: object
4168
+ description: |-
4169
+ Echo of the mutation — ids of errors that were reassigned. Mirrors the shape of the per-step
4170
+ `PUT /v1/flows/{_id}/{_stepId}/errors/assign` response.
4171
+ properties:
4172
+ errorsToReturn:
4173
+ type: array
4174
+ description: Error ids that were affected by the mutation.
4175
+ items:
4176
+ type: string
4177
+ examples:
4178
+ - '6044134138'
4179
+ CloneFamilyResponse:
4180
+ type: array
4181
+ description: |-
4182
+ Members of an integration's clone family — the original integration plus every clone (including
4183
+ clones of clones, across environments). Used by ILM to decide which integrations can pull from or
4184
+ push to the current one.
4185
+ items:
4186
+ type: object
4187
+ description: One integration in the clone family.
4188
+ properties:
4189
+ _id:
4190
+ type: string
4191
+ format: objectId
4192
+ description: Integration id.
4193
+ x-celigo-refModel: integrations
4194
+ examples:
4195
+ - 6842261335b64c0bcb308e4f
4196
+ name:
4197
+ type: string
4198
+ description: Display name of the integration.
4199
+ examples:
4200
+ - Shopify → NetSuite Orders
4201
+ _envId:
4202
+ type: string
4203
+ format: objectId
4204
+ x-celigo-refModel: environments
4205
+ examples:
4206
+ - 67b123456789abcdef012345
4207
+ description: Environment id the integration belongs to.
4208
+ additionalProperties: true
4209
+ ILMIgnoreResponse:
4210
+ type: object
4211
+ description: |-
4212
+ Catalog of resource-type → field-path lists that are *available* to be ignored during ILM pulls
4213
+ and reverts. This is the full menu of what can be configured — to see the current ignore
4214
+ configuration, read the `iLMIgnore` field on the integration itself via
4215
+ `GET /v1/integrations/{_id}`.
4216
+
4217
+ Keys are lowercase resource type names (e.g. `integration`, `flow`, `export`, `import`,
4218
+ `connection`, `script`). Each value is an array of dot-path strings naming fields that can be
4219
+ excluded. Only resource types that have configurable ignores appear as keys.
4220
+ additionalProperties:
4221
+ type: array
4222
+ description: Field paths (dotted) that can be ignored for this resource type.
4223
+ items:
4224
+ type: string
4225
+ example:
4226
+ integration:
4227
+ - settings.general.description
4228
+ - settings.general.name
4229
+ flow:
4230
+ - scheduling.startTime
4231
+ - disabled
4232
+ export:
4233
+ - http.relativeURI
4234
+ - delta.dateField
4235
+ import:
4236
+ - http.relativeURI
4237
+ - mapping
4238
+ connection:
4239
+ - http.baseURI
4240
+ - http.auth.token.token
4241
+ DependencyEntry:
4242
+ type: object
4243
+ description: A single resource that depends on the queried resource.
4244
+ properties:
4245
+ id:
4246
+ type: string
4247
+ description: Unique identifier of the dependent resource.
4248
+ examples:
4249
+ - 61f92026dd053843b5d72350
4250
+ name:
4251
+ type: string
4252
+ description: Display name of the dependent resource.
4253
+ examples:
4254
+ - Import Orders to NetSuite
4255
+ paths:
4256
+ type: array
4257
+ description: |-
4258
+ Dot-notation paths within the dependent resource that reference
4259
+ the target resource. `[*]` denotes array elements.
4260
+ items:
4261
+ type: string
4262
+ examples:
4263
+ - - hooks.preSavePage._scriptId
4264
+ accessLevel:
4265
+ type: string
4266
+ description: The caller's access level on the dependent resource.
4267
+ examples:
4268
+ - manage
4269
+ dependencyIds:
4270
+ type: object
4271
+ description: |-
4272
+ Map of resource types to arrays of IDs that this dependent
4273
+ resource references on the target. Keys are singular or plural
4274
+ resource type strings; values are arrays of ID strings.
4275
+ additionalProperties:
4276
+ type: array
4277
+ items:
4278
+ type: string
4279
+ example:
4280
+ script:
4281
+ - 64ff4b21612a134bd2f45531
4282
+ required:
4283
+ - id
4284
+ - name
4285
+ - paths
4286
+ - accessLevel
4287
+ - dependencyIds
4288
+ DependencyResponse:
4289
+ type: object
4290
+ description: |
4291
+ Map of dependent-resource types to arrays of dependency entries.
4292
+ Keys are plural resource type strings (e.g. `flows`, `imports`,
4293
+ `connections`). An empty object `{}` means no dependents.
4294
+ additionalProperties:
4295
+ type: array
4296
+ items:
4297
+ $ref: '#/components/schemas/DependencyEntry'
4298
+ example:
4299
+ exports:
4300
+ - id: 64ff4b21612a134bd2f45534
4301
+ name: Bank FTP Export
4302
+ paths:
4303
+ - hooks.preSavePage._scriptId
4304
+ accessLevel: manage
4305
+ dependencyIds:
4306
+ script:
4307
+ - 64ff4b21612a134bd2f45531
4308
+ flows:
4309
+ - id: 64ff4b22612a134bd2f45538
4310
+ name: CAMT-053 to Celigo CAM Format
4311
+ paths:
4312
+ - pageGenerators[*]._exportId
4313
+ accessLevel: manage
4314
+ dependencyIds:
4315
+ export:
4316
+ - 64ff4b21612a134bd2f45534
4317
+ responses:
4318
+ 401-unauthorized:
4319
+ description: |-
4320
+ Unauthorized. The request lacks a valid bearer token, or the provided token
4321
+ failed to authenticate.
4322
+
4323
+ Note: the 401 response is produced by the auth middleware **before** the
4324
+ request reaches the endpoint handler, so it does **not** follow the
4325
+ standard `{errors: [...]}` envelope. Instead the body is a bare
4326
+ `{message: string}` object with no `code`, no `errors` array. Callers
4327
+ handling 401s should key off the HTTP status and the `message` string,
4328
+ not try to destructure an `errors[]`.
4329
+ content:
4330
+ application/json:
4331
+ schema:
4332
+ type: object
4333
+ properties:
4334
+ message:
4335
+ type: string
4336
+ description: |-
4337
+ Human-readable description of the auth failure. Known values:
4338
+ - `"Unauthorized"` — no `Authorization` header on the request.
4339
+ - `"Bearer Authentication Failed"` — header present but token
4340
+ is invalid, revoked, or expired.
4341
+ required:
4342
+ - message
4343
+ examples:
4344
+ missing_token:
4345
+ summary: No Authorization header sent
4346
+ value:
4347
+ message: Unauthorized
4348
+ invalid_token:
4349
+ summary: Bearer token invalid or revoked
4350
+ value:
4351
+ message: Bearer Authentication Failed
4352
+ 400-bad-request:
4353
+ description: |
4354
+ Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
4355
+ content:
4356
+ application/json:
4357
+ schema:
4358
+ $ref: '#/components/schemas/Error'
4359
+ examples:
4360
+ default:
4361
+ value:
4362
+ errors:
4363
+ - code: invalid_request
4364
+ message: The request body failed validation.
4365
+ 422-unprocessable-entity:
4366
+ description: |
4367
+ Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
4368
+ content:
4369
+ application/json:
4370
+ schema:
4371
+ $ref: '#/components/schemas/Error'
4372
+ examples:
4373
+ default:
4374
+ value:
4375
+ errors:
4376
+ - code: unprocessable_entity
4377
+ message: The request could not be processed due to a semantic error.
4378
+ 404-not-found:
4379
+ description: |
4380
+ Not found. The requested resource does not exist or is not visible to the caller.
4381
+ content:
4382
+ application/json:
4383
+ schema:
4384
+ $ref: '#/components/schemas/Error'
4385
+ examples:
4386
+ default:
4387
+ value:
4388
+ errors:
4389
+ - code: not_found
4390
+ message: The requested resource was not found.
4391
+ 422-dependency-conflict:
4392
+ description: |-
4393
+ The resource has dependents that must be deleted first. Each entry
4394
+ in the `errors` array names one blocking resource.
4395
+ content:
4396
+ application/json:
4397
+ schema:
4398
+ $ref: '#/components/schemas/Error'
4399
+ examples:
4400
+ default:
4401
+ value:
4402
+ errors:
4403
+ - code: dependencies_not_deleted
4404
+ message: export 6902d88c10b42b2eaac9b2a1 must be deleted before you can delete connection 6398ddf316be761fb16a6523
4405
+ x-enable-proxy: true
4406
+ x-internal: false