@celigo/api-specs 0.2.213 → 0.2.215

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.
@@ -0,0 +1,1026 @@
1
+ openapi: 3.2.0
2
+ info:
3
+ version: 1.0.0
4
+ title: On-premise agent groups
5
+ description: 'API for managing Celigo on-premise agent groups: sets of agents that can serve the same connection, so one host failing does not stop your flows.'
6
+ x-celigo-ai-guidance:
7
+ - |-
8
+ API for managing on-premise agent groups in Celigo.
9
+ An on-premise agent group is an ordered set of on-premise agents
10
+ (locally installed tunnel software, not AI agents). A connection binds
11
+ either a single `_agentId` or an `_agentGroupId`, never both. When a
12
+ connection is bound to a group, the platform picks a healthy member for
13
+ every dispatch.
14
+ servers:
15
+ - url: https://api.integrator.io
16
+ description: Production (US / default region)
17
+ - url: https://api.eu.integrator.io
18
+ description: Production (EU region)
19
+ - url: https://api.au.integrator.io
20
+ description: Production (AU region)
21
+ - url: https://api.ca.integrator.io
22
+ description: Production (CA region)
23
+ security:
24
+ - bearerAuth: []
25
+ tags:
26
+ - name: On-premise agent groups
27
+ description: |-
28
+ An on-premise agent group is an ordered set of agents that can each reach
29
+ the same systems. A connection binds either `_agentId` (one agent) or
30
+ `_agentGroupId` (a group) — never both.
31
+
32
+ When a connection is bound to a group, the platform resolves a healthy
33
+ member on every dispatch. Per the eligibility rule the platform
34
+ implements, a member stops receiving new work when it goes offline, when
35
+ its heartbeat goes stale, or when its local worker reports unhealthy, and
36
+ the connection stays online while any member can still serve (source-only:
37
+ read from the platform's dispatch code; not yet observed on an entitled
38
+ account).
39
+
40
+ Agents themselves are unaware of grouping — a group is N ordinary agents,
41
+ each with its own tunnel. Use the On-premise Agents API to install,
42
+ configure, and monitor the members.
43
+
44
+ ## Ordering
45
+
46
+ `members` order is failover priority. `members[0]` is preferred and is
47
+ used whenever it is eligible. Reordering takes effect on the next
48
+ dispatch and does not interrupt work in flight (source-only, as above).
49
+
50
+ ## Health
51
+
52
+ Health is not embedded in these responses. Read `offline` and
53
+ `lastHeartbeatAt` from `GET /v1/agents` for each `members[]._agentId` to
54
+ compose a live view of the group.
55
+
56
+ ## On-premise agent group schema
57
+
58
+ {% openapi-schemas spec="agentgroup" schemas="AgentGroup" grouped="true" %}
59
+ paths:
60
+ /v1/agentgroups:
61
+ get:
62
+ x-internal: false
63
+ summary: List agent groups
64
+ description: |-
65
+ Returns all on-premise agent groups configured in the environment. Member
66
+ health is not included — fetch `GET /v1/agents` and match on
67
+ `members[]._agentId` to show which members are currently eligible.
68
+ operationId: listAgentGroups
69
+ tags:
70
+ - On-premise agent groups
71
+ parameters:
72
+ - $ref: '#/components/parameters/Include'
73
+ - $ref: '#/components/parameters/Exclude'
74
+ - name: limit
75
+ in: query
76
+ required: false
77
+ description: Maximum number of agent groups to return per page.
78
+ schema:
79
+ type: integer
80
+ minimum: 1
81
+ maximum: 1000
82
+ default: 1000
83
+ examples:
84
+ - 100
85
+ - name: sort_by
86
+ in: query
87
+ required: false
88
+ description: Field to sort the agent group list by (for example `name`).
89
+ schema:
90
+ type: string
91
+ examples:
92
+ - name
93
+ - name: after
94
+ in: query
95
+ required: false
96
+ description: |-
97
+ Opaque pagination cursor from a previous page's `Link` header;
98
+ returns results after that position. Invalid cursor values return
99
+ 400 `invalid_query_param`.
100
+ schema:
101
+ type: string
102
+ - name: before
103
+ in: query
104
+ required: false
105
+ description: |-
106
+ Opaque pagination cursor from a previous page's `Link` header;
107
+ returns results before that position. Invalid cursor values return
108
+ 400 `invalid_query_param`.
109
+ schema:
110
+ type: string
111
+ - name: permissions
112
+ in: query
113
+ required: false
114
+ description: |-
115
+ When true, each returned agent group additionally carries
116
+ `_accessLevel` — the calling user's effective access to that group.
117
+ schema:
118
+ type: boolean
119
+ examples:
120
+ - true
121
+ responses:
122
+ '200':
123
+ description: Array of agent group objects.
124
+ x-celigo-ai-guidance:
125
+ - Successfully retrieved list of agent groups
126
+ headers:
127
+ Link:
128
+ description: |-
129
+ RFC 5988 pagination links. Includes `<...>; rel="next"` when more
130
+ pages remain; absent on the final page.
131
+ schema:
132
+ type: string
133
+ content:
134
+ application/json:
135
+ schema:
136
+ type: array
137
+ items:
138
+ $ref: '#/components/schemas/AgentGroup'
139
+ examples:
140
+ default:
141
+ value:
142
+ - _id: 6512ab7939dc306a3806eab5
143
+ name: Production ERP agents
144
+ description: Two hosts in separate racks, both reach the prod Oracle instance.
145
+ members:
146
+ - _agentId: 62e1387939dc306a3806eab5
147
+ - _agentId: 5ecd2c3ce1ec9c4fcaf60b10
148
+ routingPolicy: failover
149
+ createdAt: '2026-07-02T10:30:00.000Z'
150
+ lastModified: '2026-08-14T01:52:12.086Z'
151
+ - _id: 6512ab7939dc306a3806eac1
152
+ name: Warehouse SFTP agents
153
+ members:
154
+ - _agentId: 6398ddf316be761fb16a6523
155
+ routingPolicy: failover
156
+ createdAt: '2026-07-20T08:00:00.000Z'
157
+ lastModified: '2026-07-20T08:00:00.000Z'
158
+ '204':
159
+ description: No agent groups exist in this environment.
160
+ '400':
161
+ description: Invalid pagination cursor in `after` or `before`.
162
+ content:
163
+ application/json:
164
+ schema:
165
+ $ref: '#/components/schemas/Error'
166
+ examples:
167
+ invalid_cursor:
168
+ value:
169
+ errors:
170
+ - code: invalid_query_param
171
+ message: Please provide a valid cursor(i.e after or before query param) to encode or decode.
172
+ '401':
173
+ $ref: '#/components/responses/401-unauthorized'
174
+ '422':
175
+ description: '`limit` is outside the accepted range.'
176
+ content:
177
+ application/json:
178
+ schema:
179
+ $ref: '#/components/schemas/Error'
180
+ examples:
181
+ invalid_limit:
182
+ value:
183
+ errors:
184
+ - code: invalid_query_param
185
+ message: The query parameter "limit" has invalid value.
186
+ post:
187
+ x-internal: false
188
+ summary: Create an agent group
189
+ operationId: createAgentGroup
190
+ tags:
191
+ - On-premise agent groups
192
+ description: |-
193
+ Creates an on-premise agent group. Every member must be an existing agent
194
+ in the same environment. `members` order is failover priority.
195
+
196
+ The service does not reject a group whose members share one agent
197
+ extension (source-only — agent extension placement is not
198
+ customer-controllable), but such a group is not highly available: that
199
+ host is a single point of failure in front of the group.
200
+
201
+ Requires the agent groups entitlement. Only the `name` check runs before
202
+ it, so an account without the entitlement gets 403 `feature_not_entitled`
203
+ for any request that has a `name`, whatever its `members` or
204
+ `routingPolicy` (live-verified with `members` absent, `[]`, a non-array,
205
+ a nonexistent agent id, and four repeats of one id, and with
206
+ `routingPolicy: balanced` — every shape answered 403). Reads, updates and
207
+ deletes do not check the entitlement — on the same account, list and get
208
+ answer normally and `PUT` / `DELETE` on an unknown id answer 404, not 403
209
+ (live-verified).
210
+ requestBody:
211
+ required: true
212
+ content:
213
+ application/json:
214
+ schema:
215
+ $ref: '#/components/schemas/Request'
216
+ examples:
217
+ two-members:
218
+ summary: Two-member failover group
219
+ value:
220
+ name: Production ERP agents
221
+ description: Two hosts in separate racks, both reach the prod Oracle instance.
222
+ members:
223
+ - _agentId: 62e1387939dc306a3806eab5
224
+ - _agentId: 5ecd2c3ce1ec9c4fcaf60b10
225
+ routingPolicy: failover
226
+ minimal:
227
+ summary: Minimal request
228
+ value:
229
+ name: Warehouse SFTP agents
230
+ members:
231
+ - _agentId: 6398ddf316be761fb16a6523
232
+ responses:
233
+ '201':
234
+ description: Created agent group.
235
+ content:
236
+ application/json:
237
+ schema:
238
+ $ref: '#/components/schemas/AgentGroup'
239
+ examples:
240
+ created:
241
+ value:
242
+ _id: 6512ab7939dc306a3806eab5
243
+ name: Production ERP agents
244
+ description: Two hosts in separate racks, both reach the prod Oracle instance.
245
+ members:
246
+ - _agentId: 62e1387939dc306a3806eab5
247
+ - _agentId: 5ecd2c3ce1ec9c4fcaf60b10
248
+ routingPolicy: failover
249
+ createdAt: '2026-07-02T10:30:00.000Z'
250
+ lastModified: '2026-07-02T10:30:00.000Z'
251
+ '401':
252
+ $ref: '#/components/responses/401-unauthorized'
253
+ '403':
254
+ description: The account is not entitled to on-premise agent groups.
255
+ content:
256
+ application/json:
257
+ schema:
258
+ $ref: '#/components/schemas/Error'
259
+ examples:
260
+ not-entitled:
261
+ summary: Account not entitled to agent groups
262
+ value:
263
+ errors:
264
+ - code: feature_not_entitled
265
+ message: On-premise agent groups are not enabled for this account.
266
+ source: resource
267
+ '422':
268
+ description: |-
269
+ Validation failed. A missing, blank or non-string `name` answers
270
+ `required_field_missing` before the entitlement check (live-verified).
271
+ The rules below are read from the agent management service's validation
272
+ and are source-only until an entitled account confirms them — the probe
273
+ account is not entitled to agent groups. On an entitled account, a
274
+ non-array `members` answers `invalid_field_type`, and these rules answer
275
+ with `field` set to the path at fault: more than 3 members
276
+ (`max_members_exceeded`), a repeated `_agentId` (`duplicate_member`), an
277
+ agent that does not exist (`invalid_ref`), an agent in another
278
+ environment (`agent_group_member_environment_mismatch`),
279
+ `routingPolicy: balanced` (`invalid_routing_policy`), or a `name` over
280
+ 100 characters (`size_limit_exceeded`).
281
+ content:
282
+ application/json:
283
+ schema:
284
+ $ref: '#/components/schemas/Error'
285
+ examples:
286
+ missing-name:
287
+ value:
288
+ errors:
289
+ - code: required_field_missing
290
+ message: 'required field: name is missing'
291
+ too-many-members:
292
+ summary: More than 3 members
293
+ value:
294
+ errors:
295
+ - field: members
296
+ code: max_members_exceeded
297
+ message: An on-premise agent group cannot have more than 3 members.
298
+ duplicate-member:
299
+ summary: Same agent listed twice
300
+ value:
301
+ errors:
302
+ - field: members
303
+ code: duplicate_member
304
+ message: On-premise agent 62e1387939dc306a3806eab5 is listed more than once in this group.
305
+ environment-mismatch:
306
+ summary: Member in a different environment
307
+ value:
308
+ errors:
309
+ - field: members
310
+ code: agent_group_member_environment_mismatch
311
+ message: On-premise agent 62e1387939dc306a3806eab5 belongs to a different environment than this group.
312
+ balanced-not-supported:
313
+ summary: Routing policy reserved for a later release
314
+ value:
315
+ errors:
316
+ - field: routingPolicy
317
+ code: invalid_routing_policy
318
+ message: Routing policy balanced is not supported.
319
+ /v1/agentgroups/{_id}:
320
+ get:
321
+ x-internal: false
322
+ summary: Get an agent group
323
+ operationId: getAgentGroup
324
+ tags:
325
+ - On-premise agent groups
326
+ description: |-
327
+ Returns a single on-premise agent group. Member health is not embedded —
328
+ read `GET /v1/agents` for each `members[]._agentId` to show live
329
+ eligibility.
330
+ parameters:
331
+ - name: _id
332
+ in: path
333
+ required: true
334
+ description: Agent group resource ID.
335
+ schema:
336
+ type: string
337
+ format: objectId
338
+ x-celigo-refModel: agentgroups
339
+ responses:
340
+ '200':
341
+ description: Agent group object.
342
+ content:
343
+ application/json:
344
+ schema:
345
+ $ref: '#/components/schemas/AgentGroup'
346
+ examples:
347
+ two-members:
348
+ summary: Two-member failover group
349
+ value:
350
+ _id: 6512ab7939dc306a3806eab5
351
+ name: Production ERP agents
352
+ description: Two hosts in separate racks, both reach the prod Oracle instance.
353
+ members:
354
+ - _agentId: 62e1387939dc306a3806eab5
355
+ - _agentId: 5ecd2c3ce1ec9c4fcaf60b10
356
+ routingPolicy: failover
357
+ createdAt: '2026-07-02T10:30:00.000Z'
358
+ lastModified: '2026-08-14T01:52:12.086Z'
359
+ '400':
360
+ description: '`_id` is not a valid ObjectId.'
361
+ content:
362
+ application/json:
363
+ schema:
364
+ $ref: '#/components/schemas/Error'
365
+ examples:
366
+ malformed-id:
367
+ value:
368
+ errors:
369
+ - code: invalid_ref
370
+ message: Please provide a valid _id.
371
+ '401':
372
+ $ref: '#/components/responses/401-unauthorized'
373
+ '404':
374
+ description: |-
375
+ No agent group has this id in the environment. A group in the recycle
376
+ bin answers with the recycle-bin message instead (source-only: no group
377
+ could be created on the probe account to put one there).
378
+ content:
379
+ application/json:
380
+ schema:
381
+ $ref: '#/components/schemas/Error'
382
+ examples:
383
+ not-found:
384
+ value:
385
+ errors:
386
+ - code: invalid_ref
387
+ message: On-premise agent group not found for the given id.
388
+ in-recycle-bin:
389
+ value:
390
+ errors:
391
+ - code: invalid_ref
392
+ message: You are trying to access an on-premise agent group that is already in the Recycle Bin. Please restore it from the Recycle Bin and try your request again.
393
+ put:
394
+ x-internal: false
395
+ summary: Update an agent group
396
+ operationId: updateAgentGroup
397
+ tags:
398
+ - On-premise agent groups
399
+ description: |-
400
+ Replaces an on-premise agent group. Send the complete desired document:
401
+ the service's update handler treats the body as a **full replace, not a
402
+ merge** — omitting `members` clears the membership list, and omitting
403
+ `description` or `routingPolicy` clears those fields (source-only: read
404
+ from the handler, not yet confirmed on an entitled account; sending the
405
+ whole document is correct under either behaviour). There is no PATCH on
406
+ this resource (live-verified: `PATCH` answers 404 `resource_not_found`).
407
+
408
+ Reordering `members` changes failover priority and, per the dispatch
409
+ rule the service implements, takes effect on the next dispatch without
410
+ interrupting work already in flight (source-only).
411
+ parameters:
412
+ - name: _id
413
+ in: path
414
+ required: true
415
+ description: Agent group resource ID.
416
+ schema:
417
+ type: string
418
+ format: objectId
419
+ x-celigo-refModel: agentgroups
420
+ requestBody:
421
+ required: true
422
+ content:
423
+ application/json:
424
+ schema:
425
+ $ref: '#/components/schemas/Request'
426
+ examples:
427
+ add-member:
428
+ summary: Add a third member
429
+ value:
430
+ name: Production ERP agents
431
+ description: Two hosts in separate racks, both reach the prod Oracle instance.
432
+ members:
433
+ - _agentId: 62e1387939dc306a3806eab5
434
+ - _agentId: 5ecd2c3ce1ec9c4fcaf60b10
435
+ - _agentId: 6398ddf316be761fb16a6523
436
+ routingPolicy: failover
437
+ reprioritize:
438
+ summary: Promote the second host to preferred
439
+ value:
440
+ name: Production ERP agents
441
+ members:
442
+ - _agentId: 5ecd2c3ce1ec9c4fcaf60b10
443
+ - _agentId: 62e1387939dc306a3806eab5
444
+ responses:
445
+ '200':
446
+ description: Updated agent group.
447
+ content:
448
+ application/json:
449
+ schema:
450
+ $ref: '#/components/schemas/AgentGroup'
451
+ examples:
452
+ updated:
453
+ value:
454
+ _id: 6512ab7939dc306a3806eab5
455
+ name: Production ERP agents
456
+ description: Two hosts in separate racks, both reach the prod Oracle instance.
457
+ members:
458
+ - _agentId: 62e1387939dc306a3806eab5
459
+ - _agentId: 5ecd2c3ce1ec9c4fcaf60b10
460
+ - _agentId: 6398ddf316be761fb16a6523
461
+ routingPolicy: failover
462
+ createdAt: '2026-07-02T10:30:00.000Z'
463
+ lastModified: '2026-08-21T11:04:55.120Z'
464
+ '400':
465
+ description: The body is not a JSON object, or `_id` is not a valid ObjectId.
466
+ content:
467
+ application/json:
468
+ schema:
469
+ $ref: '#/components/schemas/Error'
470
+ examples:
471
+ body-not-object:
472
+ value:
473
+ errors:
474
+ - code: invalid_request
475
+ message: AgentGroup document should be a JSON object.
476
+ malformed-id:
477
+ value:
478
+ errors:
479
+ - code: invalid_ref
480
+ message: Please provide a valid _id.
481
+ '401':
482
+ $ref: '#/components/responses/401-unauthorized'
483
+ '403':
484
+ $ref: '#/components/responses/403-forbidden'
485
+ '404':
486
+ description: |-
487
+ No agent group has this id in the environment (live-verified). A group
488
+ in the recycle bin answers with the recycle-bin message instead
489
+ (source-only, as on GET). The lookup runs after the `name` check — an
490
+ empty body on an unknown id answers 422 `required_field_missing`, not
491
+ 404 (live-verified) — and before any member rule.
492
+ content:
493
+ application/json:
494
+ schema:
495
+ $ref: '#/components/schemas/Error'
496
+ examples:
497
+ not-found:
498
+ value:
499
+ errors:
500
+ - code: invalid_ref
501
+ message: On-premise agent group not found for the given id.
502
+ in-recycle-bin:
503
+ value:
504
+ errors:
505
+ - code: invalid_ref
506
+ message: You are trying to access an on-premise agent group that is already in the Recycle Bin. Please restore it from the Recycle Bin and try your request again.
507
+ '422':
508
+ description: |-
509
+ Validation failed. A missing, blank or non-string `name` answers
510
+ `required_field_missing` (live-verified). The member and routing rules
511
+ answer as on create — source-only until an entitled account confirms
512
+ them: `invalid_field_type` for a non-array `members`, and
513
+ `max_members_exceeded`, `duplicate_member`, `invalid_ref`,
514
+ `agent_group_member_environment_mismatch`, `invalid_routing_policy` or
515
+ `size_limit_exceeded` with `field` set to the path at fault.
516
+ content:
517
+ application/json:
518
+ schema:
519
+ $ref: '#/components/schemas/Error'
520
+ examples:
521
+ missing-name:
522
+ value:
523
+ errors:
524
+ - code: required_field_missing
525
+ message: 'required field: name is missing'
526
+ delete:
527
+ x-internal: false
528
+ summary: Delete an agent group
529
+ operationId: deleteAgentGroup
530
+ tags:
531
+ - On-premise agent groups
532
+ description: |-
533
+ Deletes an on-premise agent group. Soft-deleted and retained in the
534
+ recycle bin for 30 days. Member agents are not deleted or uninstalled —
535
+ only the grouping is removed.
536
+
537
+ The service refuses the delete with 409 `agent_group_in_use` while any
538
+ connection is still bound to this group (source-only: no group could be
539
+ created on the probe account to bind one). Re-point those connections to
540
+ a single `_agentId`, or to another group, first, and check
541
+ `GET /v1/agentgroups/{_id}/dependencies` before deleting.
542
+ parameters:
543
+ - name: _id
544
+ in: path
545
+ required: true
546
+ description: Agent group resource ID.
547
+ schema:
548
+ type: string
549
+ format: objectId
550
+ x-celigo-refModel: agentgroups
551
+ responses:
552
+ '204':
553
+ description: Agent group deleted.
554
+ '400':
555
+ description: '`_id` is not a valid ObjectId.'
556
+ content:
557
+ application/json:
558
+ schema:
559
+ $ref: '#/components/schemas/Error'
560
+ examples:
561
+ malformed-id:
562
+ value:
563
+ errors:
564
+ - code: invalid_ref
565
+ message: Please provide a valid _id.
566
+ '401':
567
+ $ref: '#/components/responses/401-unauthorized'
568
+ '404':
569
+ description: |-
570
+ No active agent group has this id. An unknown id answers with the
571
+ recycle-bin message (live-verified); a group already in the recycle bin
572
+ answers the same way (source-only).
573
+ content:
574
+ application/json:
575
+ schema:
576
+ $ref: '#/components/schemas/Error'
577
+ examples:
578
+ not-active:
579
+ value:
580
+ errors:
581
+ - code: invalid_ref
582
+ message: You are trying to access an on-premise agent group that is already in the Recycle Bin. Please restore it from the Recycle Bin and try your request again.
583
+ '409':
584
+ description: |-
585
+ The agent group is still bound to at least one connection (source-only:
586
+ read from the service's delete guard, not yet confirmed on an entitled
587
+ account).
588
+ content:
589
+ application/json:
590
+ schema:
591
+ $ref: '#/components/schemas/Error'
592
+ examples:
593
+ in-use:
594
+ value:
595
+ errors:
596
+ - code: agent_group_in_use
597
+ message: This on-premise agent group is used by one or more connections and cannot be deleted.
598
+ /v1/agentgroups/{_id}/dependencies:
599
+ get:
600
+ x-internal: false
601
+ operationId: listAgentGroupDependencies
602
+ tags:
603
+ - On-premise agent groups
604
+ summary: List dependencies of an agent group
605
+ description: |-
606
+ Returns resources that depend on this on-premise agent group. Keys are
607
+ resource types (`connections`); values are arrays of dependency entries.
608
+
609
+ Check dependencies before deleting — the service refuses DELETE with 409
610
+ `agent_group_in_use` while any connection is still bound (source-only until
611
+ an entitled account confirms it). Returns `{}` for both zero-dependency and
612
+ nonexistent IDs (live-verified for a nonexistent id).
613
+ parameters:
614
+ - name: _id
615
+ in: path
616
+ required: true
617
+ description: Agent group resource ID.
618
+ schema:
619
+ type: string
620
+ format: objectId
621
+ x-celigo-refModel: agentgroups
622
+ responses:
623
+ '200':
624
+ description: |
625
+ Dependency map. Keys are resource-type strings; values are arrays
626
+ of dependency entries. Returns `{}` when no dependents exist.
627
+ content:
628
+ application/json:
629
+ schema:
630
+ $ref: '#/components/schemas/DependencyResponse'
631
+ examples:
632
+ none:
633
+ summary: No dependents (also returned for a nonexistent ID)
634
+ value: {}
635
+ '400':
636
+ description: '`_id` is not a valid ObjectId.'
637
+ content:
638
+ application/json:
639
+ schema:
640
+ $ref: '#/components/schemas/Error'
641
+ examples:
642
+ malformed-id:
643
+ value:
644
+ errors:
645
+ - code: invalid_ref
646
+ message: Please provide a valid _id.
647
+ '401':
648
+ $ref: '#/components/responses/401-unauthorized'
649
+ components:
650
+ securitySchemes:
651
+ bearerAuth:
652
+ type: http
653
+ scheme: bearer
654
+ parameters:
655
+ Include:
656
+ name: include
657
+ in: query
658
+ required: false
659
+ description: |-
660
+ Comma-separated list of fields to project into each returned record.
661
+ Triggers summary projection: the response contains a minimal identity
662
+ set (`_id`, `name`, plus resource-specific fields) with the requested
663
+ fields added on top. Supports dot notation for nested fields.
664
+ Mutually exclusive with `exclude`.
665
+ schema:
666
+ type: string
667
+ example: _integrationId,disabled,lastModified
668
+ Exclude:
669
+ name: exclude
670
+ in: query
671
+ required: false
672
+ description: |-
673
+ Comma-separated list of fields to strip from the default response.
674
+ Unlike `include`, does not trigger summary projection — returns the
675
+ full record with the named fields removed. Protected identity fields
676
+ (e.g. `name`) cannot be stripped. Mutually exclusive with `include`.
677
+ schema:
678
+ type: string
679
+ example: createdAt,lastModified
680
+ schemas:
681
+ AgentGroupBase:
682
+ type: object
683
+ description: Fields for creating or updating an on-premise agent group.
684
+ properties:
685
+ name:
686
+ type: string
687
+ maxLength: 100
688
+ description: |-
689
+ Display name identifying the group of on-premise agents. The server caps
690
+ it at 100 characters (`size_limit_exceeded`) — a cap read from the model's
691
+ size limit, enforced by the same plugin that caps agent names (verified
692
+ live there), not yet confirmed on an agent group.
693
+ x-celigo-ai-guidance:
694
+ - |-
695
+ Name the group after the systems its members reach, not after a single host —
696
+ the point of a group is that any member can serve the work.
697
+ examples:
698
+ - Production ERP agents
699
+ description:
700
+ type: string
701
+ maxLength: 5120
702
+ description: |-
703
+ Optional note about the group's purpose or the hosts it spans; capped at
704
+ 5,120 characters by the same model size limit as `name` (source-only).
705
+ examples:
706
+ - Two hosts in separate racks, both reach the prod Oracle instance.
707
+ members:
708
+ type: array
709
+ maxItems: 3
710
+ description: |-
711
+ Ordered list of member on-premise agents. **Array order is failover priority** —
712
+ `members[0]` is the preferred member and is used whenever it is eligible.
713
+ The service's validation allows at most 3 members, rejects a repeated
714
+ `_agentId`, and requires every member to belong to the same environment
715
+ as the group (rules read from the service — source-only until an
716
+ entitled account confirms them; the matching 422 codes are on the
717
+ create and update operations).
718
+ x-celigo-ai-guidance:
719
+ - |-
720
+ Order matters. The platform picks the first eligible member in this array,
721
+ so put the preferred host first.
722
+ - |-
723
+ Place members on different hosts. Two members behind the same agent
724
+ extension share a failure domain, which defeats the purpose of the group.
725
+ items:
726
+ type: object
727
+ required:
728
+ - _agentId
729
+ properties:
730
+ _agentId:
731
+ type: string
732
+ format: objectId
733
+ description: Reference to a member on-premise agent.
734
+ x-celigo-refModel: agents
735
+ examples:
736
+ - 62e1387939dc306a3806eab5
737
+ examples:
738
+ - - _agentId: 62e1387939dc306a3806eab5
739
+ - _agentId: 5ecd2c3ce1ec9c4fcaf60b10
740
+ routingPolicy:
741
+ type: string
742
+ enum:
743
+ - failover
744
+ - balanced
745
+ default: failover
746
+ x-enumDescriptions:
747
+ failover: Always dispatch to the first eligible member in `members`; later members only take over when earlier ones are unavailable.
748
+ balanced: Reserved for a later release; the service's validation rejects it with 422 `invalid_routing_policy` (source-only until an entitled account confirms it)
749
+ description: |-
750
+ How the platform picks a member for each dispatch. Leave it at
751
+ `failover` (the only accepted value today); member order in `members`
752
+ is the priority order.
753
+
754
+ Absent is treated as `failover`.
755
+ examples:
756
+ - failover
757
+ ResourceResponse:
758
+ type: object
759
+ description: Response
760
+ x-celigo-ai-guidance:
761
+ - Core response fields shared by all Celigo resources
762
+ properties:
763
+ _id:
764
+ type: string
765
+ format: objectId
766
+ readOnly: true
767
+ description: Unique identifier for the resource. Format is a 24-character hexadecimal string.
768
+ x-celigo-ai-guidance:
769
+ - |-
770
+ The _id is used in:
771
+ - API endpoints that operate on a specific resource (e.g., GET, PUT, DELETE)
772
+ - References from other resources (e.g., flows that use this resource)
773
+ - Job history and error tracking
774
+ examples:
775
+ - 5f8d43a1b9e5a80011a35f2c
776
+ createdAt:
777
+ type: string
778
+ format: date-time
779
+ readOnly: true
780
+ description: Timestamp when the resource was created. Set automatically and cannot be modified.
781
+ x-celigo-ai-guidance:
782
+ - Recorded in ISO 8601 with a UTC timezone (Z suffix).
783
+ examples:
784
+ - '2023-04-01T09:15:32Z'
785
+ lastModified:
786
+ type: string
787
+ format: date-time
788
+ readOnly: true
789
+ description: Timestamp when the resource was last updated. Changes whenever any property is modified.
790
+ x-celigo-ai-guidance:
791
+ - Recorded in ISO 8601 with a UTC timezone (Z suffix); always equal to or later than `createdAt`.
792
+ - |-
793
+ Records that something was written, not what — a settings edit, a flag flip, or a
794
+ platform workflow all move it. What changed and when is in the audit log: the
795
+ per-resource route `GET /v1/{resourceType}/{_id}/audit` for the types its
796
+ `resourceType` enum lists, or the account-wide
797
+ `GET /v1/audit?resourceType=<singular>&_resourceId={_id}` for the further types that
798
+ endpoint's enum accepts (users, environments, notifications among them). A type absent
799
+ from both enums — jobs, connectors, templates — has only this timestamp.
800
+ examples:
801
+ - '2023-04-15T14:30:15Z'
802
+ deletedAt:
803
+ type:
804
+ - string
805
+ - 'null'
806
+ format: date-time
807
+ readOnly: true
808
+ description: Timestamp when the resource was soft-deleted. When null or absent, the resource is active.
809
+ x-celigo-ai-guidance:
810
+ - Non-null means the resource is soft-deleted (in the recycle bin) — recoverable within the retention period before permanent removal.
811
+ examples:
812
+ - '2023-05-20T11:45:32Z'
813
+ required:
814
+ - _id
815
+ AgentGroup:
816
+ type: object
817
+ required:
818
+ - _id
819
+ - name
820
+ - createdAt
821
+ - lastModified
822
+ description: |-
823
+ On-premise agent group object as returned by the API. Member health is
824
+ **not** embedded — read `offline` and `lastHeartbeatAt` from
825
+ `GET /v1/agents` for each `_agentId` to compose a live view of the group.
826
+ allOf:
827
+ - $ref: '#/components/schemas/AgentGroupBase'
828
+ - $ref: '#/components/schemas/ResourceResponse'
829
+ - type: object
830
+ properties:
831
+ _accessLevel:
832
+ type: string
833
+ readOnly: true
834
+ description: |-
835
+ The calling user's effective access level for this group.
836
+ Present only when the list request sets `permissions=true`.
837
+ examples:
838
+ - manage
839
+ Error:
840
+ type: object
841
+ description: Standard error response envelope returned by integrator.io APIs.
842
+ properties:
843
+ errors:
844
+ type: array
845
+ description: List of errors that occurred while processing the request.
846
+ items:
847
+ type: object
848
+ properties:
849
+ code:
850
+ oneOf:
851
+ - type: string
852
+ - type: integer
853
+ description: |-
854
+ Machine-readable error code. Usually a string like
855
+ `invalid_ref`, `missing_required_field`, or `unauthorized`;
856
+ may be an **integer** when the error mirrors an upstream HTTP
857
+ status (e.g. `500`) — most commonly returned by connection-ping
858
+ and adaptor-proxy responses.
859
+ message:
860
+ type: string
861
+ description: Human-readable description of the error.
862
+ field:
863
+ type: string
864
+ description: |-
865
+ Optional pointer to the document field that caused the error.
866
+ Used by structural validation errors (`missing_required_field`,
867
+ `invalid_ref`) to indicate which field is at fault
868
+ (e.g. `_id`, `type`, `http.baseURI`).
869
+ source:
870
+ type: string
871
+ description: |-
872
+ Optional origin layer for the error — e.g. `application` when
873
+ the error came from the remote system the adaptor called,
874
+ `connector` when the adaptor itself rejected the request.
875
+ required:
876
+ - message
877
+ required:
878
+ - errors
879
+ Request:
880
+ type: object
881
+ description: Fields for creating or updating an on-premise agent group.
882
+ x-celigo-ai-guidance:
883
+ - Fields that can be sent when creating or updating an on-premise agent group
884
+ - |-
885
+ Send the complete desired document on every PUT — `name`, `members`,
886
+ and any `description` or `routingPolicy` you want kept. The update
887
+ operation documents a full replace in which an omitted `members` clears
888
+ the list; sending the whole document is correct whether or not that
889
+ holds on a given account.
890
+ required:
891
+ - name
892
+ allOf:
893
+ - $ref: '#/components/schemas/AgentGroupBase'
894
+ DependencyEntry:
895
+ type: object
896
+ description: A single resource that depends on the queried resource.
897
+ properties:
898
+ id:
899
+ type: string
900
+ description: Unique identifier of the dependent resource.
901
+ examples:
902
+ - 61f92026dd053843b5d72350
903
+ name:
904
+ type: string
905
+ description: Display name of the dependent resource.
906
+ examples:
907
+ - Import Orders to NetSuite
908
+ type:
909
+ type: string
910
+ description: |-
911
+ Sub-type of the dependent resource when its collection distinguishes one, such as
912
+ `stream` for a listener export. Only present for resource types that carry a `type`.
913
+ examples:
914
+ - stream
915
+ paths:
916
+ type: array
917
+ description: |-
918
+ Dot-notation paths within the dependent resource that reference
919
+ the target resource. `[*]` denotes array elements.
920
+ items:
921
+ type: string
922
+ examples:
923
+ - - hooks.preSavePage._scriptId
924
+ accessLevel:
925
+ type: string
926
+ description: The caller's access level on the dependent resource.
927
+ examples:
928
+ - manage
929
+ dependencyIds:
930
+ type: object
931
+ description: |-
932
+ Map of resource types to arrays of IDs that this dependent
933
+ resource references on the target. Keys are singular or plural
934
+ resource type strings; values are arrays of ID strings.
935
+ additionalProperties:
936
+ type: array
937
+ items:
938
+ type: string
939
+ example:
940
+ script:
941
+ - 64ff4b21612a134bd2f45531
942
+ required:
943
+ - id
944
+ - name
945
+ - paths
946
+ - accessLevel
947
+ - dependencyIds
948
+ DependencyResponse:
949
+ type: object
950
+ description: |
951
+ Map of dependent-resource types to arrays of dependency entries.
952
+ Keys are plural resource type strings (e.g. `flows`, `imports`,
953
+ `connections`). An empty object `{}` means no dependents.
954
+ additionalProperties:
955
+ type: array
956
+ items:
957
+ $ref: '#/components/schemas/DependencyEntry'
958
+ example:
959
+ exports:
960
+ - id: 64ff4b21612a134bd2f45534
961
+ name: Bank FTP Export
962
+ paths:
963
+ - hooks.preSavePage._scriptId
964
+ accessLevel: manage
965
+ dependencyIds:
966
+ script:
967
+ - 64ff4b21612a134bd2f45531
968
+ flows:
969
+ - id: 64ff4b22612a134bd2f45538
970
+ name: CAMT-053 to Celigo CAM Format
971
+ paths:
972
+ - pageGenerators[*]._exportId
973
+ accessLevel: manage
974
+ dependencyIds:
975
+ export:
976
+ - 64ff4b21612a134bd2f45534
977
+ responses:
978
+ 401-unauthorized:
979
+ description: |-
980
+ Unauthorized. The request lacks a valid bearer token, or the provided token
981
+ failed to authenticate.
982
+
983
+ Note: the 401 response is produced by the auth middleware **before** the
984
+ request reaches the endpoint handler, so it does **not** follow the
985
+ standard `{errors: [...]}` envelope. Instead the body is a bare
986
+ `{message: string}` object with no `code`, no `errors` array. Callers
987
+ handling 401s should key off the HTTP status and the `message` string,
988
+ not try to destructure an `errors[]`.
989
+ content:
990
+ application/json:
991
+ schema:
992
+ type: object
993
+ properties:
994
+ message:
995
+ type: string
996
+ description: |-
997
+ Human-readable description of the auth failure. Known values:
998
+ - `"Unauthorized"` — no `Authorization` header on the request.
999
+ - `"Bearer Authentication Failed"` — header present but token
1000
+ is invalid, revoked, or expired.
1001
+ required:
1002
+ - message
1003
+ examples:
1004
+ missing_token:
1005
+ summary: No Authorization header sent
1006
+ value:
1007
+ message: Unauthorized
1008
+ invalid_token:
1009
+ summary: Bearer token invalid or revoked
1010
+ value:
1011
+ message: Bearer Authentication Failed
1012
+ 403-forbidden:
1013
+ description: |
1014
+ Forbidden. The authenticated caller does not have permission to perform this operation.
1015
+ content:
1016
+ application/json:
1017
+ schema:
1018
+ $ref: '#/components/schemas/Error'
1019
+ examples:
1020
+ default:
1021
+ value:
1022
+ errors:
1023
+ - code: forbidden
1024
+ message: You do not have permission to access this resource.
1025
+ x-enable-proxy: true
1026
+ x-internal: false