@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
package/dist/api.yml ADDED
@@ -0,0 +1,4140 @@
1
+ openapi: 3.2.0
2
+ info:
3
+ version: 1.0.0
4
+ title: APIs
5
+ description: API for managing Celigo custom APIs — HTTP endpoints that expose integration logic to external systems.
6
+ x-celigo-ai-guidance:
7
+ - |-
8
+ API for managing APIs in Celigo. APIs allow you to expose integration logic as RESTful
9
+ endpoints that can be invoked by external systems or applications.
10
+
11
+ APIs can be configured in two modes:
12
+ - **Builder Mode**: Visual configuration with request/response mapping, transformations, and routing logic
13
+ - **Script Mode**: Custom JavaScript functions for complete control over API behavior
14
+
15
+ Builder mode APIs support:
16
+ - Custom HTTP methods (GET, POST, PUT, PATCH, DELETE)
17
+ - Path parameters, query parameters, headers, and request bodies
18
+ - Request transformations before processing
19
+ - Conditional response routing based on processing results
20
+ - Response mapping with lookups and transformations
21
+ - Multiple response configurations for different scenarios
22
+ - Mock requests and responses for testing
23
+
24
+ Script mode APIs provide:
25
+ - Direct access to request/response objects
26
+ - Full JavaScript flexibility for complex logic
27
+ - Integration with existing script libraries
28
+ servers:
29
+ - url: https://api.integrator.io
30
+ description: Production (US / default region)
31
+ - url: https://api.eu.integrator.io
32
+ description: Production (EU region)
33
+ - url: https://api.au.integrator.io
34
+ description: Production (AU region)
35
+ - url: https://api.ca.integrator.io
36
+ description: Production (CA region)
37
+ security:
38
+ - bearerAuth: []
39
+ tags:
40
+ - name: APIs
41
+ description: |-
42
+ APIs expose integration logic as HTTP endpoints that external systems can invoke.
43
+
44
+ Two modes:
45
+ - **Builder** — visual configuration with request/response mapping, routing, and transformations
46
+ - **Script** — custom JavaScript handler function for full control
47
+
48
+ Each API gets a public URL: `https://api.integrator.io/apis/{version}/{relativeURI}`
49
+
50
+ ## API schema
51
+
52
+ {% openapi-schemas spec="api" schemas="API" grouped="true" %}
53
+ paths:
54
+ /v1/apis:
55
+ get:
56
+ x-internal: false
57
+ summary: List APIs
58
+ description: |-
59
+ Returns all APIs configured in the account. No pagination -- every API is returned in a single
60
+ response. Legacy script-mode APIs (created before the builder/script distinction) may omit
61
+ `type`, `version`, and `disabled`. A 204 response means the account has zero APIs.
62
+ operationId: listApis
63
+ tags:
64
+ - APIs
65
+ parameters:
66
+ - name: limit
67
+ in: query
68
+ description: Maximum number of records to return per page.
69
+ schema:
70
+ type: integer
71
+ minimum: 1
72
+ examples:
73
+ - 100
74
+ - name: name
75
+ in: query
76
+ description: |-
77
+ Filter by name — a substring match, not an exact match. An empty
78
+ value is ignored.
79
+ schema:
80
+ type: string
81
+ examples:
82
+ - Order
83
+ - name: disabled
84
+ in: query
85
+ description: Filter by the `disabled` flag.
86
+ schema:
87
+ type: boolean
88
+ - $ref: '#/components/parameters/After'
89
+ - $ref: '#/components/parameters/Include'
90
+ - $ref: '#/components/parameters/Exclude'
91
+ responses:
92
+ '200':
93
+ description: Successfully retrieved list of APIs.
94
+ headers:
95
+ Link:
96
+ description: |-
97
+ RFC-5988 pagination links. When more pages remain, includes a `<...>; rel="next"` entry;
98
+ absent on the final page.
99
+ schema:
100
+ type: string
101
+ content:
102
+ application/json:
103
+ schema:
104
+ type: array
105
+ items:
106
+ $ref: '#/components/schemas/API'
107
+ examples:
108
+ mixed:
109
+ summary: Builder and script APIs
110
+ value:
111
+ - _id: 68ae4264b5f755d2dd3796b4
112
+ name: Order Webhook
113
+ type: builder
114
+ version: v1
115
+ disabled: false
116
+ createdAt: '2025-08-26T23:25:24.107Z'
117
+ lastModified: '2026-04-07T03:48:20.795Z'
118
+ - _id: 689212abe5118c1cabfb43b3
119
+ name: Custom Handler
120
+ type: script
121
+ version: v1
122
+ disabled: false
123
+ _scriptId: 689212a2c42d988978e27a11
124
+ function: handleRequest
125
+ createdAt: '2025-08-05T14:18:19.583Z'
126
+ lastModified: '2025-08-05T14:18:42.626Z'
127
+ '204':
128
+ description: No APIs exist in the account.
129
+ '401':
130
+ $ref: '#/components/responses/401-unauthorized'
131
+ x-celigo-ai-guidance:
132
+ - |-
133
+ Returns a list of all APIs configured in the account.
134
+ If no APIs exist in the account, a 204 response with no body will be returned.
135
+ post:
136
+ x-internal: false
137
+ summary: Create an API
138
+ description: |-
139
+ Creates a new API. For `script` mode, include `script._scriptId` and `script.function` (the
140
+ server also copies these to the top level in the response). For `builder` mode,
141
+ `builder.request` is required (at minimum `relativeURI` and `method`).
142
+
143
+ Builder-mode APIs are created with `logging: {"mode": "basic"}` when the account license
144
+ has logging enabled -- the request body cannot override this (`logging` is ignored on POST
145
+ and PUT; change it afterwards with `PATCH /v1/apis/{_id}`).
146
+ operationId: createApi
147
+ tags:
148
+ - APIs
149
+ requestBody:
150
+ required: true
151
+ content:
152
+ application/json:
153
+ schema:
154
+ $ref: '#/components/schemas/Request'
155
+ examples:
156
+ script:
157
+ summary: Script-mode API
158
+ value:
159
+ name: Custom Handler
160
+ type: script
161
+ script:
162
+ _scriptId: 689212a2c42d988978e27a11
163
+ function: handleRequest
164
+ builder:
165
+ summary: Builder-mode API
166
+ value:
167
+ name: Order Webhook
168
+ type: builder
169
+ builder:
170
+ request:
171
+ name: Receive Order
172
+ method: POST
173
+ relativeURI: /orders
174
+ responses:
175
+ - id: success
176
+ name: Success
177
+ type: success
178
+ statusCode: 200
179
+ - id: fail
180
+ name: Error
181
+ type: fail
182
+ statusCode: 500
183
+ responseRouter:
184
+ id: apiRouter
185
+ routeRecordsUsing: input_filters
186
+ responses:
187
+ '201':
188
+ description: API created successfully
189
+ content:
190
+ application/json:
191
+ schema:
192
+ $ref: '#/components/schemas/API'
193
+ examples:
194
+ script:
195
+ summary: Created script-mode API (server copies script config to top level)
196
+ value:
197
+ _id: 689212abe5118c1cabfb43b3
198
+ name: Custom Handler
199
+ type: script
200
+ version: v1
201
+ disabled: false
202
+ script:
203
+ _scriptId: 689212a2c42d988978e27a11
204
+ function: handleRequest
205
+ _scriptId: 689212a2c42d988978e27a11
206
+ function: handleRequest
207
+ createdAt: '2025-08-05T14:18:19.583Z'
208
+ lastModified: '2025-08-05T14:18:19.583Z'
209
+ '400':
210
+ $ref: '#/components/responses/400-bad-request'
211
+ '401':
212
+ $ref: '#/components/responses/401-unauthorized'
213
+ '422':
214
+ $ref: '#/components/responses/422-unprocessable-entity'
215
+ /v1/apis/usage:
216
+ get:
217
+ x-internal: false
218
+ operationId: listApisUsage
219
+ tags:
220
+ - APIs
221
+ summary: List month-to-date API invocation counts
222
+ description: |-
223
+ Returns one invocation-counter record per resource + method + relativeURI in the current month.
224
+ Counts API-style invocations across every resource type that exposes an HTTP-callable endpoint:
225
+ custom APIs (builder and script), individual exports/imports called via `/invoke`, virtual
226
+ imports, and APIM-fronted invocations.
227
+
228
+ The endpoint aggregates -- it does not return one record per individual call. Each entry rolls
229
+ up every invocation of that (resource, method, URI) triple in the current month. Counters reset
230
+ on the 1st of each month; there is no pagination and no historical-months filter on this path.
231
+
232
+ `ioInvocationCount` bills against the Celigo subscription; `apimInvocationCount` is billed
233
+ separately for external APIM passthrough. To find the resource behind a row, read
234
+ `metadata._resourceId` (present for exports/imports) or parse the resource id out of
235
+ `relativeURI`.
236
+ parameters:
237
+ - $ref: '#/components/parameters/Include'
238
+ - $ref: '#/components/parameters/Exclude'
239
+ responses:
240
+ '200':
241
+ description: Usage breakdown for the current month. `usages[]` is empty when no endpoints have been invoked yet.
242
+ content:
243
+ application/json:
244
+ schema:
245
+ $ref: '#/components/schemas/ApisUsageResponse'
246
+ examples:
247
+ default:
248
+ value:
249
+ usages:
250
+ - _id: 69d054b9be4ce14fb4112827
251
+ method: POST
252
+ relativeURI: /v1/exports/6878f4a43bc01652c09cdccc/invoke
253
+ metadata:
254
+ _resourceId: 6878f4a43bc01652c09cdccc
255
+ name: Get Contacts
256
+ type: export
257
+ month: 4
258
+ year: 2026
259
+ ioInvocationCount: 29
260
+ apimInvocationCount: 0
261
+ createdAt: '2026-04-04T00:00:57.285Z'
262
+ '401':
263
+ $ref: '#/components/responses/401-unauthorized'
264
+ /v1/apis/{_id}:
265
+ get:
266
+ x-internal: false
267
+ summary: Get an API
268
+ description: Returns the complete configuration of a specific API.
269
+ operationId: getApiById
270
+ tags:
271
+ - APIs
272
+ parameters:
273
+ - name: _id
274
+ in: path
275
+ description: The unique identifier of the API
276
+ required: true
277
+ schema:
278
+ type: string
279
+ format: objectId
280
+ x-celigo-refModel: apis
281
+ examples:
282
+ - 5f8d43a1b9e5a80011a35f2c
283
+ responses:
284
+ '200':
285
+ description: API retrieved successfully.
286
+ content:
287
+ application/json:
288
+ schema:
289
+ $ref: '#/components/schemas/API'
290
+ examples:
291
+ script:
292
+ summary: Script-mode API
293
+ value:
294
+ _id: 689212abe5118c1cabfb43b3
295
+ name: Custom Handler
296
+ type: script
297
+ version: v1
298
+ disabled: false
299
+ script:
300
+ _scriptId: 689212a2c42d988978e27a11
301
+ function: handleRequest
302
+ _scriptId: 689212a2c42d988978e27a11
303
+ function: handleRequest
304
+ createdAt: '2025-08-05T14:18:19.583Z'
305
+ lastModified: '2025-08-05T14:18:42.626Z'
306
+ '401':
307
+ $ref: '#/components/responses/401-unauthorized'
308
+ '404':
309
+ $ref: '#/components/responses/404-not-found'
310
+ put:
311
+ x-internal: false
312
+ summary: Update an API
313
+ description: |-
314
+ Replaces the full API configuration. Send the complete object -- omitted fields revert to
315
+ defaults, not their prior values. Read-only fields (`_id`, `createdAt`, `lastModified`) in
316
+ the request body are ignored.
317
+
318
+ `logging` is also ignored -- silently: a PUT that includes `logging` succeeds with the
319
+ stored value unchanged, and no error reveals that the change was dropped. Use
320
+ `PATCH /v1/apis/{_id}` (paths `/logging/mode`, `/logging/debugUntil`) to change logging
321
+ settings.
322
+ operationId: updateApi
323
+ tags:
324
+ - APIs
325
+ parameters:
326
+ - name: _id
327
+ in: path
328
+ description: The unique identifier of the API
329
+ required: true
330
+ schema:
331
+ type: string
332
+ format: objectId
333
+ x-celigo-refModel: apis
334
+ examples:
335
+ - 5f8d43a1b9e5a80011a35f2c
336
+ requestBody:
337
+ required: true
338
+ content:
339
+ application/json:
340
+ schema:
341
+ $ref: '#/components/schemas/Request'
342
+ examples:
343
+ rename-script:
344
+ summary: Rename a script-mode API
345
+ value:
346
+ name: Custom Handler v2
347
+ type: script
348
+ script:
349
+ _scriptId: 689212a2c42d988978e27a11
350
+ function: handleRequest
351
+ responses:
352
+ '200':
353
+ description: API updated successfully
354
+ content:
355
+ application/json:
356
+ schema:
357
+ $ref: '#/components/schemas/API'
358
+ examples:
359
+ renamed:
360
+ summary: Script-mode API with updated name
361
+ value:
362
+ _id: 689212abe5118c1cabfb43b3
363
+ name: Custom Handler v2
364
+ type: script
365
+ version: v1
366
+ disabled: false
367
+ script:
368
+ _scriptId: 689212a2c42d988978e27a11
369
+ function: handleRequest
370
+ _scriptId: 689212a2c42d988978e27a11
371
+ function: handleRequest
372
+ createdAt: '2025-08-05T14:18:19.583Z'
373
+ lastModified: '2025-08-05T14:18:42.626Z'
374
+ '400':
375
+ $ref: '#/components/responses/400-bad-request'
376
+ '401':
377
+ $ref: '#/components/responses/401-unauthorized'
378
+ '404':
379
+ $ref: '#/components/responses/404-not-found'
380
+ '422':
381
+ $ref: '#/components/responses/422-unprocessable-entity'
382
+ x-celigo-ai-guidance:
383
+ - |-
384
+ Updates an existing API with the provided configuration.
385
+ This is used for major updates to an API's structure or behavior.
386
+ patch:
387
+ x-internal: false
388
+ summary: Patch an API
389
+ description: |-
390
+ Partially updates an API using a JSON Patch document (RFC 6902).
391
+ The `replace` operation is supported on the following whitelisted
392
+ paths (`/logging/debugUntil` also accepts `remove`, which clears an
393
+ active debug window early):
394
+
395
+ | Path | Description |
396
+ |------|-------------|
397
+ | `/name` | API display name |
398
+ | `/description` | API description |
399
+ | `/disabled` | Enable or disable the API (boolean) |
400
+ | `/timeoutPeriod` | Request-timeout override in seconds |
401
+ | `/pagination/enabled` | Enable or disable the cursor-pagination envelope (boolean) |
402
+ | `/logging/mode` | Logging level for requests handled by this API |
403
+ | `/logging/debugUntil` | End of a temporary full-debug capture window |
404
+ | `/traceKeyTemplate` | Handlebars template that computes each request's trace key |
405
+
406
+ All other paths are rejected with `422`. This is the only way to change
407
+ `logging` -- PUT silently ignores that field.
408
+
409
+ Logging changes are validated against account entitlements: setting
410
+ `/logging/mode` to a payload-capturing mode (`standard`, `detailed`)
411
+ fails with `422` (code `payload_storage_required`) when the account
412
+ does not have payload storage enabled, and `/logging/debugUntil` has
413
+ the same payload-storage requirement. Accounts whose license does not
414
+ include logging, or whose license caps the maximum logging mode below
415
+ the requested one, are also rejected with `422`.
416
+ operationId: patchApi
417
+ tags:
418
+ - APIs
419
+ parameters:
420
+ - name: _id
421
+ in: path
422
+ description: The unique identifier of the API
423
+ required: true
424
+ schema:
425
+ type: string
426
+ format: objectId
427
+ x-celigo-refModel: apis
428
+ examples:
429
+ - 5f8d43a1b9e5a80011a35f2c
430
+ requestBody:
431
+ required: true
432
+ content:
433
+ application/json:
434
+ schema:
435
+ $ref: '#/components/schemas/JsonPatchRequest'
436
+ examples:
437
+ disable_api:
438
+ summary: Disable an API
439
+ value:
440
+ - op: replace
441
+ path: /disabled
442
+ value: true
443
+ rename:
444
+ summary: Rename an API
445
+ value:
446
+ - op: replace
447
+ path: /name
448
+ value: Order Webhook v2
449
+ responses:
450
+ '204':
451
+ description: API patched successfully
452
+ '401':
453
+ $ref: '#/components/responses/401-unauthorized'
454
+ '404':
455
+ $ref: '#/components/responses/404-not-found'
456
+ '422':
457
+ $ref: '#/components/responses/422-unprocessable-entity'
458
+ delete:
459
+ x-internal: false
460
+ summary: Delete an API
461
+ description: |-
462
+ Deletes an API. Soft-deleted and retained in the recycle bin for 30 days. The public endpoint
463
+ stops responding immediately. The delete succeeds even with dependents, but those resources
464
+ will break -- check `GET /v1/apis/{_id}/dependencies` first.
465
+ operationId: deleteApi
466
+ tags:
467
+ - APIs
468
+ parameters:
469
+ - name: _id
470
+ in: path
471
+ description: The unique identifier of the API
472
+ required: true
473
+ schema:
474
+ type: string
475
+ format: objectId
476
+ x-celigo-refModel: apis
477
+ examples:
478
+ - 5f8d43a1b9e5a80011a35f2c
479
+ responses:
480
+ '204':
481
+ description: API deleted successfully
482
+ '401':
483
+ $ref: '#/components/responses/401-unauthorized'
484
+ '404':
485
+ $ref: '#/components/responses/404-not-found'
486
+ x-celigo-ai-guidance:
487
+ - |-
488
+ Deletes an API configuration. This will remove the endpoint from the system and
489
+ it will no longer be accessible for invocation.
490
+ /v1/apis/schema:
491
+ put:
492
+ x-internal: false
493
+ operationId: convertJsonToSchema
494
+ tags:
495
+ - APIs
496
+ summary: Convert a JSON object to JSON Schema
497
+ description: |-
498
+ Accepts a sample JSON object and returns its inferred JSON Schema definition.
499
+ Useful for bootstrapping `bodySchema` in builder-mode APIs from real payload samples.
500
+ Input must be a non-empty JSON object -- arrays and primitives are rejected.
501
+ The generated schema is shallow (one level of `properties`); nested objects become
502
+ `type: "object"` without further property inference.
503
+ requestBody:
504
+ required: true
505
+ content:
506
+ application/json:
507
+ schema:
508
+ type: object
509
+ additionalProperties: true
510
+ description: Any sample JSON object to convert into JSON Schema.
511
+ example:
512
+ name: Acme Corp
513
+ active: true
514
+ count: 42
515
+ responses:
516
+ '200':
517
+ description: JSON Schema generated successfully.
518
+ content:
519
+ application/json:
520
+ schema:
521
+ type: object
522
+ properties:
523
+ type:
524
+ type: string
525
+ example: object
526
+ properties:
527
+ type: object
528
+ additionalProperties: true
529
+ additionalProperties: true
530
+ example:
531
+ type: object
532
+ properties:
533
+ name:
534
+ type: string
535
+ active:
536
+ type: boolean
537
+ count:
538
+ type: number
539
+ '400':
540
+ $ref: '#/components/responses/400-bad-request'
541
+ '401':
542
+ $ref: '#/components/responses/401-unauthorized'
543
+ '422':
544
+ $ref: '#/components/responses/422-unprocessable-entity'
545
+ /v1/apis/updateApiGrouping:
546
+ put:
547
+ x-internal: false
548
+ operationId: updateApiGrouping
549
+ tags:
550
+ - APIs
551
+ summary: Update the grouping for one or more APIs
552
+ description: |-
553
+ Assigns or removes an API grouping for the specified API resources. Pass
554
+ `_apiGroupingId: null` to ungroup. Nonexistent API IDs are silently accepted.
555
+ requestBody:
556
+ required: true
557
+ content:
558
+ application/json:
559
+ schema:
560
+ type: object
561
+ required:
562
+ - _apiIds
563
+ properties:
564
+ _apiIds:
565
+ type: array
566
+ items:
567
+ type: string
568
+ format: objectId
569
+ x-celigo-refModel: apis
570
+ examples:
571
+ - 5f8d43a1b9e5a80011a35f2c
572
+ description: List of API resource IDs to update.
573
+ _apiGroupingId:
574
+ type:
575
+ - string
576
+ - 'null'
577
+ format: objectId
578
+ description: |-
579
+ The grouping ID to assign. Pass `null` or omit to remove the
580
+ current grouping from the specified APIs.
581
+ examples:
582
+ - 60a1b2c3d4e5f60012345678
583
+ example:
584
+ _apiIds:
585
+ - 5f8d43a1b9e5a80011a35f2c
586
+ - 5f8d43a1b9e5a80011a35f2d
587
+ _apiGroupingId: 60a1b2c3d4e5f60012345678
588
+ responses:
589
+ '204':
590
+ description: API grouping updated successfully (no body returned).
591
+ '400':
592
+ $ref: '#/components/responses/400-bad-request'
593
+ '401':
594
+ $ref: '#/components/responses/401-unauthorized'
595
+ /v1/apis/{_id}/logs:
596
+ get:
597
+ x-internal: false
598
+ operationId: listApiLogs
599
+ tags:
600
+ - APIs
601
+ summary: List recent request/response logs for an API
602
+ description: |-
603
+ Returns the recent invocation traces captured for the named API. Each entry is a decoded
604
+ request/response pair — masked for credentials — that the runtime stored when the API was
605
+ called via its public endpoint. Use this to audit what the API has handled and to triage
606
+ errors without re-invoking the API.
607
+
608
+ Traces are **file-backed** with server-controlled retention and capture scope; an empty
609
+ `requests[]` simply means nothing is currently stored for this API. Two invocation sources do
610
+ **not** populate this log:
611
+ - Test-runs via `POST /v1/apis/{_id}/test/run` never surface here.
612
+ - Script-mode API invocations via `POST /v1/apis/{_id}/request` also do not surface here
613
+ despite counting toward `/v1/apis/usage`. Only **builder-mode** invocations against the
614
+ public endpoint (`https://api.integrator.io/apis/{version}{relativeURI}`) populate logs.
615
+
616
+ List entries are **summaries** (`key`, `time`, `method`, `statusCode`) — to see the decoded
617
+ request/response payload, follow up with `GET /v1/apis/{_id}/logs/{key}`.
618
+
619
+ `statusCode` is returned as a string in list entries but as an integer on the detail endpoint.
620
+ Credential values are masked as `********` before storage and are not recoverable.
621
+ parameters:
622
+ - name: _id
623
+ in: path
624
+ required: true
625
+ description: The API id.
626
+ schema:
627
+ type: string
628
+ format: objectId
629
+ x-celigo-refModel: apis
630
+ examples:
631
+ - 68ae4264b5f755d2dd3796b4
632
+ responses:
633
+ '200':
634
+ description: Trace envelope. `requests[]` is empty when no invocations are currently stored.
635
+ content:
636
+ application/json:
637
+ schema:
638
+ $ref: '#/components/schemas/ApiLogsResponse'
639
+ examples:
640
+ empty:
641
+ value:
642
+ requests: []
643
+ populated:
644
+ value:
645
+ requests:
646
+ - key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
647
+ time: 1776917346304
648
+ method: POST
649
+ statusCode: '200'
650
+ '401':
651
+ $ref: '#/components/responses/401-unauthorized'
652
+ '404':
653
+ $ref: '#/components/responses/404-not-found'
654
+ /v1/apis/{_id}/logs/{key}:
655
+ get:
656
+ x-internal: false
657
+ operationId: getApiLogByKey
658
+ tags:
659
+ - APIs
660
+ summary: Get one request/response log entry by key
661
+ description: |-
662
+ Returns the full decoded request/response envelope for one API invocation, looked up by the
663
+ opaque `key` values surfaced in `GET /v1/apis/{_id}/logs`. Matches the exact entry whose key is
664
+ provided — there is no partial-match or range query on this endpoint.
665
+
666
+ Unlike the parent list (which only carries `{key, time, method, statusCode}`), this endpoint
667
+ returns the complete payload: request method/url/headers/body/queryParams/clientAddress,
668
+ response status/headers/body/responseTime, and (for builder-mode APIs) the
669
+ `inputToResponseBubble` snapshot of what the response-mapper saw. Sensitive header values
670
+ (`authorization`, OAuth bearer tokens) are masked as `********` before storage.
671
+
672
+ For builder APIs where the response mapper didn't produce the expected output, inspect
673
+ `inputToResponseBubble.sourceRecord` to see what the response stage actually received.
674
+ `response.statusCode` is an integer here but the sibling list endpoint returns it as a
675
+ string. A 404 `file_not_found` means the key has expired from retention or was never
676
+ captured.
677
+ parameters:
678
+ - name: _id
679
+ in: path
680
+ required: true
681
+ description: The API id.
682
+ schema:
683
+ type: string
684
+ format: objectId
685
+ x-celigo-refModel: apis
686
+ examples:
687
+ - 68ae4264b5f755d2dd3796b4
688
+ - name: key
689
+ in: path
690
+ required: true
691
+ description: |-
692
+ Opaque log key from the parent `GET /v1/apis/{_id}/logs` listing. Encodes status + method
693
+ (e.g. `…-200-POST`) — use the `key` exactly as returned; do not construct one manually.
694
+ schema:
695
+ type: string
696
+ examples:
697
+ - 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
698
+ responses:
699
+ '200':
700
+ description: The decoded request/response envelope.
701
+ content:
702
+ application/json:
703
+ schema:
704
+ $ref: '#/components/schemas/ApiLogDetail'
705
+ examples:
706
+ builder-success:
707
+ summary: Successful builder-mode invocation (credentials masked)
708
+ value:
709
+ time: 1776917346304
710
+ request:
711
+ method: POST
712
+ url: /apis/v1/orders
713
+ httpVersion: '1.1'
714
+ headers:
715
+ content-type: application/json
716
+ authorization: '********'
717
+ accept: application/json
718
+ host: api.integrator.io
719
+ queryParams: {}
720
+ body: '{"orderId":"SO-1042","total":129.99}'
721
+ clientAddress: ::ffff:127.0.0.6
722
+ size: 0
723
+ response:
724
+ statusCode: 200
725
+ statusMessage: OK
726
+ headers:
727
+ content-type: application/json
728
+ x-request-id: abc123def456
729
+ body: '{"orderId":"SO-1042"}'
730
+ size: 21
731
+ responseTime: 312
732
+ inputToResponseBubble:
733
+ sourceRecord:
734
+ - orderId: SO-1042
735
+ total: 129.99
736
+ executionErrors: []
737
+ configurationErrors: []
738
+ key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
739
+ id: a10af1ade8fe477a847771c1e3716e36
740
+ '401':
741
+ $ref: '#/components/responses/401-unauthorized'
742
+ '404':
743
+ $ref: '#/components/responses/404-not-found'
744
+ /v1/apis/{_id}/requests:
745
+ get:
746
+ x-internal: false
747
+ operationId: listApiRequests
748
+ tags:
749
+ - APIs
750
+ summary: List API request run history (defaults to last 5 minutes)
751
+ description: |-
752
+ Returns the logged request executions for an API — one entry per inbound
753
+ request captured while the API's `logging.mode` was anything other than
754
+ `noLogging`. Distinct from `GET /v1/apis/{_id}/logs`, which returns the
755
+ legacy file-backed request/response envelopes: use `/requests` for run
756
+ history and trace drill-down, `/logs` for the raw decoded request and
757
+ response of a single call.
758
+
759
+ Whether requests are captured into run history depends on server-side
760
+ enablement of the capture pipeline, which is separate from this read
761
+ API. On accounts where capture is not active, this endpoint responds
762
+ normally (including filter validation) but `requests` is empty
763
+ regardless of the API's `logging.mode` — even for requests that the
764
+ legacy `GET /v1/apis/{_id}/logs` (an independent capture path) does
765
+ record.
766
+
767
+ Results are cursor-paginated (`next`/`prev`). When `time_gte` / `time_lte`
768
+ are omitted, only the last 5 minutes are returned — pass an explicit window
769
+ for a broader history. Use the `executionId` from a list entry with
770
+ `GET /v1/apis/{_id}/requests/{executionId}` to open the trace view for
771
+ requests logged in `detailed` or `debug` mode.
772
+ parameters:
773
+ - name: _id
774
+ in: path
775
+ required: true
776
+ description: The API id.
777
+ schema:
778
+ type: string
779
+ format: objectId
780
+ x-celigo-refModel: apis
781
+ examples:
782
+ - 685021eda02a61042cee80ab
783
+ - name: statusCode
784
+ in: query
785
+ description: |-
786
+ Filter by HTTP response status code — a single value or a
787
+ comma-separated list. Every value must be an integer.
788
+ schema:
789
+ type: string
790
+ pattern: ^\d+(,\d+)*$
791
+ examples:
792
+ - 200,404
793
+ - name: method
794
+ in: query
795
+ description: Filter by HTTP method (case-insensitive; normalized to uppercase).
796
+ schema:
797
+ type: string
798
+ enum:
799
+ - GET
800
+ - POST
801
+ - PUT
802
+ - PATCH
803
+ - DELETE
804
+ - HEAD
805
+ - OPTIONS
806
+ examples:
807
+ - GET
808
+ - name: traceKey
809
+ in: query
810
+ description: Prefix filter on the request trace key.
811
+ schema:
812
+ type: string
813
+ examples:
814
+ - trace-abc
815
+ - name: remoteIP
816
+ in: query
817
+ description: Prefix filter on the client IP address.
818
+ schema:
819
+ type: string
820
+ examples:
821
+ - 192.168.1.
822
+ - name: relativeURI
823
+ in: query
824
+ description: Prefix filter on the request relative URI.
825
+ schema:
826
+ type: string
827
+ examples:
828
+ - /orders
829
+ - name: searchKey
830
+ in: query
831
+ description: |-
832
+ Free-text search, OR-matched across `traceKey` (prefix), `remoteIP`
833
+ (prefix), and `relativeURI` (substring). When provided, the individual
834
+ `traceKey`/`remoteIP`/`relativeURI` filters are ignored. Values shorter
835
+ than 3 characters are rejected with 400.
836
+ schema:
837
+ type: string
838
+ minLength: 3
839
+ maxLength: 500
840
+ examples:
841
+ - order-123
842
+ - name: pageSize
843
+ in: query
844
+ description: |-
845
+ Number of entries per page. Values above the documented maximum are
846
+ not rejected — the server accepts them silently, so treat the
847
+ maximum as the supported contract rather than an enforced limit.
848
+ schema:
849
+ type: integer
850
+ minimum: 1
851
+ maximum: 100
852
+ default: 50
853
+ examples:
854
+ - 50
855
+ - name: sortOrder
856
+ in: query
857
+ description: Sort direction by request time.
858
+ schema:
859
+ type: string
860
+ enum:
861
+ - asc
862
+ - desc
863
+ x-enumDescriptions:
864
+ asc: Oldest requests first
865
+ desc: Newest requests first
866
+ default: desc
867
+ - name: next
868
+ in: query
869
+ description: |-
870
+ ISO 8601 timestamp cursor for the next page (from `nextPageUrl`).
871
+ Mutually exclusive with `prev`; requires `cursorExecutionId`.
872
+ schema:
873
+ type: string
874
+ format: date-time
875
+ - name: prev
876
+ in: query
877
+ description: |-
878
+ ISO 8601 timestamp cursor for the previous page (from `prevPageUrl`).
879
+ Mutually exclusive with `next`; requires `cursorExecutionId`.
880
+ schema:
881
+ type: string
882
+ format: date-time
883
+ - name: cursorExecutionId
884
+ in: query
885
+ description: Tie-breaker execution id, required when paging with `next`/`prev`.
886
+ schema:
887
+ type: string
888
+ - name: time_gte
889
+ in: query
890
+ description: Include requests at or after this ISO timestamp.
891
+ schema:
892
+ type: string
893
+ format: date-time
894
+ - name: time_lte
895
+ in: query
896
+ description: Include requests at or before this ISO timestamp.
897
+ schema:
898
+ type: string
899
+ format: date-time
900
+ responses:
901
+ '200':
902
+ description: Paginated run history. `requests[]` is empty when nothing matches.
903
+ content:
904
+ application/json:
905
+ schema:
906
+ $ref: '#/components/schemas/ApiRunHistoryResponse'
907
+ examples:
908
+ default:
909
+ value:
910
+ requests:
911
+ - executionId: a1b2c3d4e5f678901234
912
+ time: '2026-05-15T13:42:11.234Z'
913
+ method: POST
914
+ relativeURI: /orders
915
+ statusCode: 200
916
+ traceKey: trace-abc-123
917
+ remoteIP: 192.168.1.5
918
+ timeTaken: 142.7
919
+ logMode: detailed
920
+ nextPageUrl: null
921
+ prevPageUrl: null
922
+ '400':
923
+ $ref: '#/components/responses/400-bad-request'
924
+ '401':
925
+ $ref: '#/components/responses/401-unauthorized'
926
+ '403':
927
+ $ref: '#/components/responses/403-forbidden'
928
+ '404':
929
+ $ref: '#/components/responses/404-not-found'
930
+ delete:
931
+ x-internal: false
932
+ operationId: deleteApiRequestLogs
933
+ tags:
934
+ - APIs
935
+ summary: Delete API request logs in a date range
936
+ description: |-
937
+ Queues asynchronous deletion of stored request log payloads for the API
938
+ within `[startedAt, endAt]`. Returns `202 Accepted`; cleanup runs in the
939
+ background. Requires manage access for log deletion — monitor-level users
940
+ receive `403`.
941
+ parameters:
942
+ - name: _id
943
+ in: path
944
+ required: true
945
+ description: The API id.
946
+ schema:
947
+ type: string
948
+ format: objectId
949
+ x-celigo-refModel: apis
950
+ examples:
951
+ - 685021eda02a61042cee80ab
952
+ - name: startedAt
953
+ in: query
954
+ required: true
955
+ description: Start of the deletion range, inclusive (ISO 8601). Must be before `endAt`.
956
+ schema:
957
+ type: string
958
+ format: date-time
959
+ examples:
960
+ - '2026-01-01T00:00:00.000Z'
961
+ - name: endAt
962
+ in: query
963
+ required: true
964
+ description: End of the deletion range, inclusive (ISO 8601). Must not be in the future.
965
+ schema:
966
+ type: string
967
+ format: date-time
968
+ examples:
969
+ - '2026-01-31T23:59:59.999Z'
970
+ responses:
971
+ '202':
972
+ description: Deletion request accepted for asynchronous processing.
973
+ '400':
974
+ $ref: '#/components/responses/400-bad-request'
975
+ '401':
976
+ $ref: '#/components/responses/401-unauthorized'
977
+ '403':
978
+ $ref: '#/components/responses/403-forbidden'
979
+ '404':
980
+ $ref: '#/components/responses/404-not-found'
981
+ /v1/apis/{_id}/requests/{executionId}:
982
+ get:
983
+ x-internal: false
984
+ operationId: getApiRequestTrace
985
+ tags:
986
+ - APIs
987
+ summary: Get trace metadata for an API request execution
988
+ description: |-
989
+ Returns the top-level execution steps for the trace view of one API
990
+ request. Trace data is only available for requests that were logged in
991
+ `detailed` or `debug` mode (see `logMode` on the run-history entry), and
992
+ only when the run-history capture pipeline is active for the account
993
+ (see `GET /v1/apis/{_id}/requests`) — otherwise `steps` is empty for
994
+ every execution id.
995
+
996
+ A malformed `executionId` returns `422`; an unknown API `_id` returns `404`.
997
+ parameters:
998
+ - name: _id
999
+ in: path
1000
+ required: true
1001
+ description: The API id.
1002
+ schema:
1003
+ type: string
1004
+ format: objectId
1005
+ x-celigo-refModel: apis
1006
+ examples:
1007
+ - 685021eda02a61042cee80ab
1008
+ - name: executionId
1009
+ in: path
1010
+ required: true
1011
+ description: The execution id (20-character lowercase hex).
1012
+ schema:
1013
+ type: string
1014
+ pattern: ^[0-9a-f]{20}$
1015
+ examples:
1016
+ - a1b2c3d4e5f678901234
1017
+ responses:
1018
+ '200':
1019
+ description: Top-level trace steps for the request execution.
1020
+ content:
1021
+ application/json:
1022
+ schema:
1023
+ $ref: '#/components/schemas/ApiTraceMetadataResponse'
1024
+ examples:
1025
+ default:
1026
+ value:
1027
+ steps:
1028
+ - _expOrImpId: 67ee026136f4d1eeb529ad63
1029
+ status: success
1030
+ timeTaken: 142
1031
+ groupId: 6449f2
1032
+ recordId: 4a8e5c
1033
+ time: '2026-05-15T13:42:11.234Z'
1034
+ '400':
1035
+ $ref: '#/components/responses/400-bad-request'
1036
+ '401':
1037
+ $ref: '#/components/responses/401-unauthorized'
1038
+ '403':
1039
+ $ref: '#/components/responses/403-forbidden'
1040
+ '404':
1041
+ $ref: '#/components/responses/404-not-found'
1042
+ '422':
1043
+ $ref: '#/components/responses/422-unprocessable-entity'
1044
+ /v1/apis/{_id}/requests/{executionId}/{_expOrImpId}/logs/{parentRecordId}/children:
1045
+ get:
1046
+ x-internal: false
1047
+ operationId: listApiRequestChildren
1048
+ tags:
1049
+ - APIs
1050
+ summary: List child records under an API trace step
1051
+ description: |-
1052
+ Returns the child records under a parent record within an API request
1053
+ trace (lookup / one-to-many expansions). Results are cursor-paginated
1054
+ (`next`/`prev`).
1055
+ parameters:
1056
+ - name: _id
1057
+ in: path
1058
+ required: true
1059
+ description: The API id.
1060
+ schema:
1061
+ type: string
1062
+ format: objectId
1063
+ x-celigo-refModel: apis
1064
+ examples:
1065
+ - 685021eda02a61042cee80ab
1066
+ - name: executionId
1067
+ in: path
1068
+ required: true
1069
+ description: The execution id (20-character lowercase hex).
1070
+ schema:
1071
+ type: string
1072
+ pattern: ^[0-9a-f]{20}$
1073
+ examples:
1074
+ - a1b2c3d4e5f678901234
1075
+ - name: _expOrImpId
1076
+ in: path
1077
+ required: true
1078
+ description: Export, import, or builder resource-step identifier for the step.
1079
+ schema:
1080
+ type: string
1081
+ examples:
1082
+ - 67ee026136f4d1eeb529ad63
1083
+ - name: parentRecordId
1084
+ in: path
1085
+ required: true
1086
+ description: The parent record id whose children are returned.
1087
+ schema:
1088
+ type: string
1089
+ examples:
1090
+ - a1b2c3
1091
+ - name: status
1092
+ in: query
1093
+ description: |-
1094
+ Filter children by processing outcome — a single value or a
1095
+ comma-separated list of `success`, `error`, `ignore`.
1096
+ schema:
1097
+ type: string
1098
+ pattern: ^(success|error|ignore)(,(success|error|ignore))*$
1099
+ examples:
1100
+ - success,error
1101
+ - name: pageSize
1102
+ in: query
1103
+ description: Number of entries per page.
1104
+ schema:
1105
+ type: integer
1106
+ minimum: 1
1107
+ maximum: 100
1108
+ default: 50
1109
+ examples:
1110
+ - 50
1111
+ - name: sortOrder
1112
+ in: query
1113
+ description: Sort direction by step time.
1114
+ schema:
1115
+ type: string
1116
+ enum:
1117
+ - asc
1118
+ - desc
1119
+ x-enumDescriptions:
1120
+ asc: Oldest child records first
1121
+ desc: Newest child records first
1122
+ default: desc
1123
+ - name: next
1124
+ in: query
1125
+ description: |-
1126
+ ISO 8601 timestamp cursor for the next page (from `nextPageUrl`).
1127
+ Mutually exclusive with `prev`; requires `cursorRecordId`.
1128
+ schema:
1129
+ type: string
1130
+ format: date-time
1131
+ - name: prev
1132
+ in: query
1133
+ description: |-
1134
+ ISO 8601 timestamp cursor for the previous page (from `prevPageUrl`).
1135
+ Mutually exclusive with `next`; requires `cursorRecordId`.
1136
+ schema:
1137
+ type: string
1138
+ format: date-time
1139
+ - name: cursorRecordId
1140
+ in: query
1141
+ description: Tie-breaker record id, required when paging with `next`/`prev`.
1142
+ schema:
1143
+ type: string
1144
+ responses:
1145
+ '200':
1146
+ description: Paginated child step records.
1147
+ content:
1148
+ application/json:
1149
+ schema:
1150
+ $ref: '#/components/schemas/ApiRequestChildrenResponse'
1151
+ examples:
1152
+ default:
1153
+ value:
1154
+ children:
1155
+ - _expOrImpId: 67ee026136f4d1eeb529ad63
1156
+ status: success
1157
+ timeTaken: 12
1158
+ groupId: 6449f2
1159
+ recordId: child-1
1160
+ parentRecordId: a1b2c3
1161
+ time: '2026-05-15T13:42:11.234Z'
1162
+ nextPageUrl: null
1163
+ prevPageUrl: null
1164
+ '400':
1165
+ $ref: '#/components/responses/400-bad-request'
1166
+ '401':
1167
+ $ref: '#/components/responses/401-unauthorized'
1168
+ '403':
1169
+ $ref: '#/components/responses/403-forbidden'
1170
+ '404':
1171
+ $ref: '#/components/responses/404-not-found'
1172
+ '422':
1173
+ $ref: '#/components/responses/422-unprocessable-entity'
1174
+ /v1/apis/{_id}/requests/{executionId}/logs/data/query:
1175
+ post:
1176
+ x-internal: false
1177
+ operationId: queryApiRequestLogData
1178
+ tags:
1179
+ - APIs
1180
+ summary: Query decoded log data for an API trace step
1181
+ description: |-
1182
+ Returns the decoded request/response payload and error metadata for a
1183
+ record/stage within an API request execution, identified by
1184
+ `_expOrImpId`, `stage`, `groupId`, and `recordId`. If the log content
1185
+ exceeds inline limits or is stored externally, an `externalReference`
1186
+ with an S3 key (and optional byte range) is returned — download it via
1187
+ the signed-URL endpoint. The response may be gzip-compressed.
1188
+ parameters:
1189
+ - name: _id
1190
+ in: path
1191
+ required: true
1192
+ description: The API id.
1193
+ schema:
1194
+ type: string
1195
+ format: objectId
1196
+ x-celigo-refModel: apis
1197
+ examples:
1198
+ - 685021eda02a61042cee80ab
1199
+ - name: executionId
1200
+ in: path
1201
+ required: true
1202
+ description: The execution id (20-character lowercase hex).
1203
+ schema:
1204
+ type: string
1205
+ pattern: ^[0-9a-f]{20}$
1206
+ examples:
1207
+ - a1b2c3d4e5f678901234
1208
+ requestBody:
1209
+ required: true
1210
+ content:
1211
+ application/json:
1212
+ schema:
1213
+ $ref: '#/components/schemas/ApiLogDataRequest'
1214
+ examples:
1215
+ minimal:
1216
+ value:
1217
+ _expOrImpId: 67ee026136f4d1eeb529ad63
1218
+ stage: mapping
1219
+ groupId: grp-001
1220
+ recordId: rec-123
1221
+ responses:
1222
+ '200':
1223
+ description: Log data (and/or external references) plus error metadata.
1224
+ headers:
1225
+ Content-Encoding:
1226
+ description: May be `gzip` to reduce transfer time for large responses.
1227
+ schema:
1228
+ type: string
1229
+ enum:
1230
+ - gzip
1231
+ content:
1232
+ application/json:
1233
+ schema:
1234
+ $ref: '#/components/schemas/ApiLogDataResponse'
1235
+ examples:
1236
+ default:
1237
+ value:
1238
+ logs: []
1239
+ errors: []
1240
+ '400':
1241
+ $ref: '#/components/responses/400-bad-request'
1242
+ '401':
1243
+ $ref: '#/components/responses/401-unauthorized'
1244
+ '403':
1245
+ $ref: '#/components/responses/403-forbidden'
1246
+ '404':
1247
+ $ref: '#/components/responses/404-not-found'
1248
+ '422':
1249
+ $ref: '#/components/responses/422-unprocessable-entity'
1250
+ /v1/apis/{_id}/requests/{executionId}/logs/signedURL:
1251
+ get:
1252
+ x-internal: false
1253
+ operationId: getApiRequestLogSignedUrl
1254
+ tags:
1255
+ - APIs
1256
+ summary: Get a signed URL for a stored API request log payload
1257
+ description: |-
1258
+ Returns a short-lived signed S3 URL (about 120 seconds expiry) for the
1259
+ provided `s3Key` suffix, taken from an `externalReference` returned by the
1260
+ log-data query endpoint. The full S3 key is resolved under the execution's
1261
+ own log prefix, so callers can only access logs for this API and execution.
1262
+ parameters:
1263
+ - name: _id
1264
+ in: path
1265
+ required: true
1266
+ description: The API id.
1267
+ schema:
1268
+ type: string
1269
+ format: objectId
1270
+ x-celigo-refModel: apis
1271
+ examples:
1272
+ - 685021eda02a61042cee80ab
1273
+ - name: executionId
1274
+ in: path
1275
+ required: true
1276
+ description: The execution id (20-character lowercase hex).
1277
+ schema:
1278
+ type: string
1279
+ pattern: ^[0-9a-f]{20}$
1280
+ examples:
1281
+ - a1b2c3d4e5f678901234
1282
+ - name: s3Key
1283
+ in: query
1284
+ required: true
1285
+ description: |-
1286
+ S3 object key suffix relative to the execution's log prefix, typically
1287
+ returned in a prior log-data query `externalReference`.
1288
+ schema:
1289
+ type: string
1290
+ examples:
1291
+ - 67ee026136f4d1eeb529ad63/grp-001/part.log
1292
+ responses:
1293
+ '200':
1294
+ description: Signed URL for the requested object.
1295
+ content:
1296
+ application/json:
1297
+ schema:
1298
+ $ref: '#/components/schemas/ApiSignedUrlResponse'
1299
+ examples:
1300
+ default:
1301
+ value:
1302
+ signedURL: https://integrator-userdata-delete-30.s3.amazonaws.com/api-execution-logs/user/api/exec/group/file.log?Expires=1754046196&Signature=...
1303
+ '400':
1304
+ $ref: '#/components/responses/400-bad-request'
1305
+ '401':
1306
+ $ref: '#/components/responses/401-unauthorized'
1307
+ '403':
1308
+ $ref: '#/components/responses/403-forbidden'
1309
+ '404':
1310
+ $ref: '#/components/responses/404-not-found'
1311
+ '422':
1312
+ $ref: '#/components/responses/422-unprocessable-entity'
1313
+ /v1/apis/{_id}/dependencies:
1314
+ get:
1315
+ x-internal: false
1316
+ operationId: listApiDependencies
1317
+ tags:
1318
+ - APIs
1319
+ summary: List dependencies of an API
1320
+ description: |-
1321
+ Returns the set of resources that depend on the specified resource.
1322
+ The response is an object whose keys are dependent-resource types
1323
+ (e.g. `flows`, `imports`) and whose values are arrays of dependency
1324
+ entries. An empty object `{}` means no other resources depend on the
1325
+ target -- this is also returned for a well-formatted but nonexistent id.
1326
+ parameters:
1327
+ - name: _id
1328
+ in: path
1329
+ required: true
1330
+ description: Resource ID.
1331
+ schema:
1332
+ type: string
1333
+ format: objectId
1334
+ x-celigo-refModel: apis
1335
+ examples:
1336
+ - 5f8d43a1b9e5a80011a35f2c
1337
+ responses:
1338
+ '200':
1339
+ description: |
1340
+ Dependency map. Keys are resource-type strings; values are arrays
1341
+ of dependency entries. Returns `{}` when no dependents exist.
1342
+ content:
1343
+ application/json:
1344
+ schema:
1345
+ $ref: '#/components/schemas/DependencyResponse'
1346
+ examples:
1347
+ none:
1348
+ summary: No dependents (also returned for a nonexistent ID)
1349
+ value: {}
1350
+ '401':
1351
+ $ref: '#/components/responses/401-unauthorized'
1352
+ /v1/apis/{_id}/test/run:
1353
+ post:
1354
+ x-internal: false
1355
+ operationId: testRunApi
1356
+ tags:
1357
+ - APIs
1358
+ summary: Test-run an API
1359
+ description: |-
1360
+ Executes the API once in a sandboxed test harness without invoking its public endpoint, and
1361
+ returns the job tree produced by the run. Use this to validate a builder-mode API's request
1362
+ parsing, routing, and response mapping before exposing it externally.
1363
+
1364
+ The response carries a `metadata` map keyed by step id (each value is the ordered list of
1365
+ stage names that ran for that step), the parent `flowJob`, and the per-step `childJobs[]`.
1366
+ Inspect a specific step's stages with `GET /v1/apis/{_id}/test/run/{runId}/{_stepId}`, where
1367
+ `runId` is the parent `flowJob._id`.
1368
+
1369
+ Test-run invocations do **not** surface in `GET /v1/apis/{_id}/logs`.
1370
+ parameters:
1371
+ - name: _id
1372
+ in: path
1373
+ required: true
1374
+ description: The API id.
1375
+ schema:
1376
+ type: string
1377
+ format: objectId
1378
+ x-celigo-refModel: apis
1379
+ examples:
1380
+ - 68ae4264b5f755d2dd3796b4
1381
+ requestBody:
1382
+ required: false
1383
+ content:
1384
+ application/json:
1385
+ schema:
1386
+ type: object
1387
+ description: |-
1388
+ Optional test request for the run. When the body is empty or
1389
+ omitted, the run replays the API's saved
1390
+ `builder.request.mockRequest`.
1391
+ properties:
1392
+ mockRequest:
1393
+ type: object
1394
+ description: |-
1395
+ The simulated request to run instead of the saved
1396
+ `builder.request.mockRequest`.
1397
+ properties:
1398
+ body:
1399
+ type: object
1400
+ description: Request body for the simulated call.
1401
+ pathParams:
1402
+ type: object
1403
+ description: Path parameter values for the simulated call.
1404
+ queryParams:
1405
+ type: object
1406
+ description: Query parameter values for the simulated call.
1407
+ headers:
1408
+ type: object
1409
+ description: Request headers for the simulated call.
1410
+ additionalProperties: true
1411
+ x-celigo-ai-guidance:
1412
+ - Send explicit test input under the mockRequest key ({body, pathParams, queryParams, headers}); with no body the run replays the saved builder.request.mockRequest.
1413
+ examples:
1414
+ default:
1415
+ summary: Run with no overrides
1416
+ value: {}
1417
+ withMockRequest:
1418
+ summary: Run with an explicit test request
1419
+ value:
1420
+ mockRequest:
1421
+ queryParams:
1422
+ sku: SKU-001
1423
+ responses:
1424
+ '200':
1425
+ description: The job tree produced by the test run.
1426
+ content:
1427
+ application/json:
1428
+ schema:
1429
+ type: object
1430
+ properties:
1431
+ metadata:
1432
+ type: object
1433
+ description: |-
1434
+ Map keyed by step id; each value is the ordered list of stage names that ran for
1435
+ that step.
1436
+ additionalProperties:
1437
+ type: array
1438
+ items:
1439
+ type: string
1440
+ flowJob:
1441
+ type: object
1442
+ description: The parent job for the test run. Its `_id` is the `runId`.
1443
+ childJobs:
1444
+ type: array
1445
+ description: Per-step child jobs produced during the run.
1446
+ items:
1447
+ type: object
1448
+ examples:
1449
+ default:
1450
+ value:
1451
+ metadata:
1452
+ 68ae4264b5f755d2dd3796b4:
1453
+ - request
1454
+ - parse
1455
+ main:
1456
+ - router
1457
+ flowJob:
1458
+ _id: 6a2e23bbcf5b64ca6b93b757
1459
+ type: flow
1460
+ _integrationId: 68ed772471086fb1a76686de
1461
+ status: completed
1462
+ numError: 1
1463
+ numSuccess: 1
1464
+ startedAt: '2026-06-14T03:44:59.577Z'
1465
+ endedAt: '2026-06-14T03:44:59.947Z'
1466
+ childJobs:
1467
+ - _id: 6a2e23bbcf5b64ca6b93b774
1468
+ type: export
1469
+ _parentJobId: 6a2e23bbcf5b64ca6b93b757
1470
+ status: completed
1471
+ numSuccess: 1
1472
+ '400':
1473
+ $ref: '#/components/responses/400-bad-request'
1474
+ '401':
1475
+ $ref: '#/components/responses/401-unauthorized'
1476
+ '404':
1477
+ $ref: '#/components/responses/404-not-found'
1478
+ '422':
1479
+ $ref: '#/components/responses/422-unprocessable-entity'
1480
+ /v1/apis/{_id}/test/run/{runId}/{_stepId}:
1481
+ get:
1482
+ x-internal: false
1483
+ operationId: getApiTestRunStep
1484
+ tags:
1485
+ - APIs
1486
+ summary: Get a step's stages from an API test run
1487
+ description: |-
1488
+ Returns the per-stage execution detail for a single step of a completed API test run. `runId`
1489
+ is the parent `flowJob._id` returned by `POST /v1/apis/{_id}/test/run`, and `_stepId` is the
1490
+ step id surfaced in that run's `metadata` map.
1491
+
1492
+ Each entry in `stages[]` carries the stage `name` (e.g. `request`, `parse`, `router`) plus its
1493
+ `input`, `output`, and `errors`. Stages that did not produce data for a given direction return
1494
+ `null` for that field. Top-level `errors` aggregates step-level errors.
1495
+ parameters:
1496
+ - name: _id
1497
+ in: path
1498
+ required: true
1499
+ description: The API id.
1500
+ schema:
1501
+ type: string
1502
+ format: objectId
1503
+ x-celigo-refModel: apis
1504
+ examples:
1505
+ - 68ae4264b5f755d2dd3796b4
1506
+ - name: runId
1507
+ in: path
1508
+ required: true
1509
+ description: The parent job id (`flowJob._id`) returned by the test-run request.
1510
+ schema:
1511
+ type: string
1512
+ examples:
1513
+ - 6a2e23bbcf5b64ca6b93b757
1514
+ - name: _stepId
1515
+ in: path
1516
+ required: true
1517
+ description: The step id, as surfaced in the test run's `metadata` map.
1518
+ schema:
1519
+ type: string
1520
+ examples:
1521
+ - 68ae4264b5f755d2dd3796b4
1522
+ responses:
1523
+ '200':
1524
+ description: Per-stage execution detail for the requested step.
1525
+ content:
1526
+ application/json:
1527
+ schema:
1528
+ type: object
1529
+ properties:
1530
+ stages:
1531
+ type: array
1532
+ description: Ordered stages that ran for this step.
1533
+ items:
1534
+ type: object
1535
+ properties:
1536
+ name:
1537
+ type: string
1538
+ description: Stage name (e.g. `request`, `parse`, `router`).
1539
+ errors:
1540
+ description: Stage-level errors, or `null` when none.
1541
+ input:
1542
+ description: Input records the stage received, or `null`.
1543
+ output:
1544
+ description: Output records the stage produced, or `null`.
1545
+ errors:
1546
+ type: array
1547
+ description: Aggregated step-level errors.
1548
+ items:
1549
+ type: object
1550
+ examples:
1551
+ default:
1552
+ value:
1553
+ stages:
1554
+ - name: request
1555
+ errors: null
1556
+ output: null
1557
+ input:
1558
+ - record:
1559
+ page:
1560
+ _userId: 624cb0346309dc3a543733a2
1561
+ data:
1562
+ - {}
1563
+ errors: []
1564
+ traceKey: null
1565
+ - name: parse
1566
+ errors: null
1567
+ input: null
1568
+ output:
1569
+ - record: {}
1570
+ errors: []
1571
+ traceKey: null
1572
+ errors: []
1573
+ '400':
1574
+ $ref: '#/components/responses/400-bad-request'
1575
+ '401':
1576
+ $ref: '#/components/responses/401-unauthorized'
1577
+ '404':
1578
+ $ref: '#/components/responses/404-not-found'
1579
+ /v1/apis/{_id}/test/run/{runId}/{_stepId}/logs/requestAndResponse:
1580
+ get:
1581
+ x-internal: false
1582
+ operationId: getApiTestRunStepLogs
1583
+ tags:
1584
+ - APIs
1585
+ summary: Get request/response captures for an API test-run step
1586
+ description: |-
1587
+ Returns the request/response captures recorded for a single export or import step of an API
1588
+ test run. `runId` is the parent `flowJob._id` from `POST /v1/apis/{_id}/test/run`, and
1589
+ `_stepId` is the step id from that run's `metadata` map.
1590
+
1591
+ Each entry in `requests[]` is a summary identified by an opaque `key`; fetch the full decoded
1592
+ request/response envelope with `GET /v1/apis/{_id}/{_stepId}/requests/{key}`. A step id that
1593
+ is not an export or import (such as a router) returns a 400 `invalid_ref`, and a step that
1594
+ captured no request/response data returns a 404 `req_res_logs_not_found`.
1595
+ parameters:
1596
+ - name: _id
1597
+ in: path
1598
+ required: true
1599
+ description: The API id.
1600
+ schema:
1601
+ type: string
1602
+ format: objectId
1603
+ x-celigo-refModel: apis
1604
+ examples:
1605
+ - 68ae4264b5f755d2dd3796b4
1606
+ - name: runId
1607
+ in: path
1608
+ required: true
1609
+ description: The parent job id (`flowJob._id`) returned by the test-run request.
1610
+ schema:
1611
+ type: string
1612
+ examples:
1613
+ - 6a2e23bbcf5b64ca6b93b757
1614
+ - name: _stepId
1615
+ in: path
1616
+ required: true
1617
+ description: The step id, as surfaced in the test run's `metadata` map. Must be an export or import step.
1618
+ schema:
1619
+ type: string
1620
+ examples:
1621
+ - 68ae434d5fcd3b761b24253a
1622
+ responses:
1623
+ '200':
1624
+ description: Request captures recorded for the step.
1625
+ content:
1626
+ application/json:
1627
+ schema:
1628
+ type: object
1629
+ properties:
1630
+ requests:
1631
+ type: array
1632
+ description: Captured request summaries for the step.
1633
+ items:
1634
+ type: object
1635
+ properties:
1636
+ key:
1637
+ type: string
1638
+ description: |-
1639
+ Opaque key for the capture. Resolve the full decoded request/response with
1640
+ `GET /v1/apis/{_id}/{_stepId}/requests/{key}`.
1641
+ time:
1642
+ type: integer
1643
+ description: Capture time, epoch milliseconds.
1644
+ method:
1645
+ type: string
1646
+ description: HTTP method of the captured request, or `undefined` when not applicable.
1647
+ statusCode:
1648
+ type: string
1649
+ description: Response status code, as a string.
1650
+ stage:
1651
+ type: string
1652
+ description: The stage that produced the capture (e.g. `import`).
1653
+ examples:
1654
+ populated:
1655
+ summary: One capture for an import step
1656
+ value:
1657
+ requests:
1658
+ - key: 5475338577473-6c43f93c1fa84b248d64e0d7be1f275f-200-undefined-import-testMode
1659
+ time: 1782779822527
1660
+ method: undefined
1661
+ statusCode: '200'
1662
+ stage: import
1663
+ '400':
1664
+ description: |-
1665
+ The `_stepId` does not resolve to an export or import step (for example, a router step
1666
+ or a malformed id). Use a step id that ran an outbound request.
1667
+ content:
1668
+ application/json:
1669
+ schema:
1670
+ $ref: '#/components/schemas/Error'
1671
+ examples:
1672
+ invalidStep:
1673
+ value:
1674
+ errors:
1675
+ - code: invalid_ref
1676
+ message: Please provide a valid _expOrImpId.
1677
+ '401':
1678
+ $ref: '#/components/responses/401-unauthorized'
1679
+ '404':
1680
+ description: |-
1681
+ No request/response data is stored for the requested step — it captured nothing, or the
1682
+ run/step id didn't resolve.
1683
+ content:
1684
+ application/json:
1685
+ schema:
1686
+ $ref: '#/components/schemas/Error'
1687
+ examples:
1688
+ noLogs:
1689
+ value:
1690
+ errors:
1691
+ - code: req_res_logs_not_found
1692
+ message: No request/response log data found.
1693
+ /v1/apis/{_id}/{_stepId}/requests:
1694
+ get:
1695
+ x-internal: false
1696
+ operationId: listApiStepRequests
1697
+ tags:
1698
+ - APIs
1699
+ summary: List captured requests for an API step
1700
+ description: |-
1701
+ Returns the set of requests captured for a single step of an API. `_stepId` identifies the
1702
+ step within the API's configuration. Each entry in `requests[]` is a captured request summary;
1703
+ follow up with `GET /v1/apis/{_id}/{_stepId}/requests/{key}` to retrieve one entry in full.
1704
+
1705
+ An empty `requests[]` simply means nothing is currently stored for this step.
1706
+ parameters:
1707
+ - name: _id
1708
+ in: path
1709
+ required: true
1710
+ description: The API id.
1711
+ schema:
1712
+ type: string
1713
+ format: objectId
1714
+ x-celigo-refModel: apis
1715
+ examples:
1716
+ - 68ae4264b5f755d2dd3796b4
1717
+ - name: _stepId
1718
+ in: path
1719
+ required: true
1720
+ description: The step id within the API's configuration.
1721
+ schema:
1722
+ type: string
1723
+ examples:
1724
+ - 68ae4264b5f755d2dd3796b4
1725
+ responses:
1726
+ '200':
1727
+ description: Captured requests for the step. `requests[]` is empty when nothing is stored.
1728
+ content:
1729
+ application/json:
1730
+ schema:
1731
+ type: object
1732
+ properties:
1733
+ requests:
1734
+ type: array
1735
+ description: Captured request entries for this step.
1736
+ items:
1737
+ type: object
1738
+ examples:
1739
+ empty:
1740
+ value:
1741
+ requests: []
1742
+ populated:
1743
+ value:
1744
+ requests:
1745
+ - key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
1746
+ time: 1776917346304
1747
+ method: POST
1748
+ statusCode: '200'
1749
+ '401':
1750
+ $ref: '#/components/responses/401-unauthorized'
1751
+ '404':
1752
+ $ref: '#/components/responses/404-not-found'
1753
+ /v1/apis/{_id}/{_stepId}/requests/{key}:
1754
+ get:
1755
+ x-internal: false
1756
+ operationId: getApiStepRequest
1757
+ tags:
1758
+ - APIs
1759
+ summary: Get one captured request for an API step by key
1760
+ description: |-
1761
+ Returns the full captured request/response envelope for one entry of an API step, looked up by
1762
+ the opaque `key` values surfaced in `GET /v1/apis/{_id}/{_stepId}/requests`. Matches the exact
1763
+ entry whose key is provided — there is no partial-match query on this endpoint.
1764
+
1765
+ Use the `key` exactly as returned by the parent listing; do not construct one manually. A 404
1766
+ means the key has expired from retention or was never captured.
1767
+ parameters:
1768
+ - name: _id
1769
+ in: path
1770
+ required: true
1771
+ description: The API id.
1772
+ schema:
1773
+ type: string
1774
+ format: objectId
1775
+ x-celigo-refModel: apis
1776
+ examples:
1777
+ - 68ae4264b5f755d2dd3796b4
1778
+ - name: _stepId
1779
+ in: path
1780
+ required: true
1781
+ description: The step id within the API's configuration.
1782
+ schema:
1783
+ type: string
1784
+ examples:
1785
+ - 68ae4264b5f755d2dd3796b4
1786
+ - name: key
1787
+ in: path
1788
+ required: true
1789
+ description: |-
1790
+ Opaque request key from the parent `GET /v1/apis/{_id}/{_stepId}/requests` listing. Use the
1791
+ `key` exactly as returned; do not construct one manually.
1792
+ schema:
1793
+ type: string
1794
+ examples:
1795
+ - 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
1796
+ responses:
1797
+ '200':
1798
+ description: The full captured request/response envelope for the entry.
1799
+ content:
1800
+ application/json:
1801
+ schema:
1802
+ type: object
1803
+ description: Decoded request/response envelope for the captured entry.
1804
+ examples:
1805
+ default:
1806
+ value:
1807
+ time: 1776917346304
1808
+ request:
1809
+ method: POST
1810
+ url: /apis/v1/orders
1811
+ headers:
1812
+ content-type: application/json
1813
+ body: '{"orderId":"SO-1042"}'
1814
+ response:
1815
+ statusCode: 200
1816
+ headers:
1817
+ content-type: application/json
1818
+ body: '{"orderId":"SO-1042"}'
1819
+ key: 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
1820
+ '401':
1821
+ $ref: '#/components/responses/401-unauthorized'
1822
+ '404':
1823
+ $ref: '#/components/responses/404-not-found'
1824
+ /v1/apis/{_id}/clone:
1825
+ post:
1826
+ x-internal: false
1827
+ operationId: cloneApi
1828
+ tags:
1829
+ - APIs
1830
+ summary: Clone an API
1831
+ description: |-
1832
+ Clones a builder-mode API along with the resources it depends on (such as its
1833
+ backing import) and returns a manifest of every resource created.
1834
+
1835
+ The request body is required: `version` must be supplied, and the cloned API's
1836
+ combination of `version`, `method`, and `relativeURI` must be unique. Reusing all
1837
+ three returns a 422 `clone_api_already_exists`. Pass `_integrationId` to create the
1838
+ clone inside an integration — when omitted, the clone is created standalone rather
1839
+ than inheriting the source API's integration.
1840
+
1841
+ Only **builder-type** APIs can be cloned — cloning any other API type returns a 400
1842
+ `clone_not_supported`.
1843
+
1844
+ To check for a version/method/relativeURI conflict without creating anything, call
1845
+ `POST /v1/apis/{_id}/clone/validate` first.
1846
+ parameters:
1847
+ - name: _id
1848
+ in: path
1849
+ required: true
1850
+ description: The id of the API to clone.
1851
+ schema:
1852
+ type: string
1853
+ format: objectId
1854
+ x-celigo-refModel: apis
1855
+ examples:
1856
+ - 68ae4264b5f755d2dd3796b4
1857
+ requestBody:
1858
+ required: true
1859
+ content:
1860
+ application/json:
1861
+ schema:
1862
+ type: object
1863
+ required:
1864
+ - version
1865
+ properties:
1866
+ version:
1867
+ type: string
1868
+ description: |-
1869
+ Version identifier for the cloned API. The cloned API's combination of
1870
+ `version`, `method`, and `relativeURI` must be unique — reusing all three
1871
+ returns a 422 `clone_api_already_exists`.
1872
+ examples:
1873
+ - v2
1874
+ name:
1875
+ type: string
1876
+ description: Name for the cloned API. Defaults to a copy of the source API's name when omitted.
1877
+ examples:
1878
+ - IDP (v2)
1879
+ _integrationId:
1880
+ type: string
1881
+ format: objectId
1882
+ x-celigo-refModel: integrations
1883
+ description: |-
1884
+ Integration the cloned API is created in. When omitted, the clone is created
1885
+ standalone — it does not inherit the source API's integration.
1886
+ examples:
1887
+ - 6a429af50547257e3301246c
1888
+ examples:
1889
+ default:
1890
+ summary: Clone to a new version
1891
+ value:
1892
+ version: v2
1893
+ name: IDP (v2)
1894
+ responses:
1895
+ '201':
1896
+ description: |-
1897
+ The clone was created. Returns a manifest of every resource the clone created —
1898
+ the new API plus any dependencies it copied (imports, scripts).
1899
+ content:
1900
+ application/json:
1901
+ schema:
1902
+ type: array
1903
+ description: Manifest of resources created by the clone.
1904
+ items:
1905
+ type: object
1906
+ properties:
1907
+ model:
1908
+ type: string
1909
+ description: Model name of the created resource (e.g. `Api`, `Import`).
1910
+ examples:
1911
+ - Api
1912
+ _id:
1913
+ type: string
1914
+ format: objectId
1915
+ description: Unique id of the created resource.
1916
+ examples:
1917
+ - 6a2e23bbcf5b64ca6b93b757
1918
+ examples:
1919
+ default:
1920
+ summary: Clone created an API and its backing import
1921
+ value:
1922
+ - model: Import
1923
+ _id: 6a2e23bbcf5b64ca6b93b73d
1924
+ - model: Api
1925
+ _id: 6a2e23bbcf5b64ca6b93b757
1926
+ '400':
1927
+ description: |-
1928
+ The request was rejected. Common causes: the body omits the required `version`
1929
+ field (`required_field_missing`), or the target API is not a builder-type API
1930
+ (`clone_not_supported` — only builder APIs can be cloned).
1931
+ content:
1932
+ application/json:
1933
+ schema:
1934
+ $ref: '#/components/schemas/Error'
1935
+ examples:
1936
+ missingVersion:
1937
+ summary: Required version field missing
1938
+ value:
1939
+ errors:
1940
+ - code: required_field_missing
1941
+ message: 'required field: version is missing'
1942
+ notBuilder:
1943
+ summary: API is not builder-type
1944
+ value:
1945
+ errors:
1946
+ - code: clone_not_supported
1947
+ message: Cloning is supported only for builder type API documents.
1948
+ '401':
1949
+ $ref: '#/components/responses/401-unauthorized'
1950
+ '404':
1951
+ $ref: '#/components/responses/404-not-found'
1952
+ '422':
1953
+ description: |-
1954
+ An API with the same `version`, `method`, and `relativeURI` already exists. Clone
1955
+ with a different `version` (or change the method/URI) to create a distinct API.
1956
+ content:
1957
+ application/json:
1958
+ schema:
1959
+ $ref: '#/components/schemas/Error'
1960
+ examples:
1961
+ alreadyExists:
1962
+ value:
1963
+ errors:
1964
+ - code: clone_api_already_exists
1965
+ message: The clone API already exists with the same version, method and relative uri.
1966
+ /v1/apis/{_id}/clone/validate:
1967
+ post:
1968
+ x-internal: false
1969
+ operationId: validateApiClone
1970
+ tags:
1971
+ - APIs
1972
+ summary: Validate an API clone
1973
+ description: |-
1974
+ Dry-run check for `POST /v1/apis/{_id}/clone`. Verifies that cloning the
1975
+ API to the target `version` would not collide with an existing API route
1976
+ — the clone keeps the source API's `method` and `relativeURI`, so the
1977
+ target `version` + `method` + `relativeURI` combination must not conflict
1978
+ with an API that is already registered in the account. Nothing is created
1979
+ or modified.
1980
+
1981
+ Returns `canClone: true` when the route is free, `false` when it
1982
+ conflicts — pick a different `version` before calling
1983
+ `POST /v1/apis/{_id}/clone`. Only **builder-type** APIs can be validated;
1984
+ a script-type API returns 404, the same as an unknown id.
1985
+ parameters:
1986
+ - name: _id
1987
+ in: path
1988
+ required: true
1989
+ description: The id of the API to validate cloning for.
1990
+ schema:
1991
+ type: string
1992
+ format: objectId
1993
+ x-celigo-refModel: apis
1994
+ examples:
1995
+ - 68ae4264b5f755d2dd3796b4
1996
+ requestBody:
1997
+ required: true
1998
+ content:
1999
+ application/json:
2000
+ schema:
2001
+ type: object
2002
+ required:
2003
+ - version
2004
+ properties:
2005
+ version:
2006
+ type: string
2007
+ description: |-
2008
+ Version identifier the clone would be created under. Omitting
2009
+ it returns a 400 `required_field_missing`.
2010
+ examples:
2011
+ - v2
2012
+ examples:
2013
+ default:
2014
+ summary: Validate cloning to a new version
2015
+ value:
2016
+ version: v2
2017
+ responses:
2018
+ '200':
2019
+ description: Validation result. Returned for both outcomes — check `canClone`.
2020
+ content:
2021
+ application/json:
2022
+ schema:
2023
+ type: object
2024
+ properties:
2025
+ canClone:
2026
+ type: boolean
2027
+ description: |-
2028
+ When true, the target `version` + `method` + `relativeURI`
2029
+ route is free and the clone can be created. When false, the
2030
+ route conflicts with an existing API — choose a different
2031
+ `version`.
2032
+ examples:
2033
+ free:
2034
+ summary: Route is free — safe to clone
2035
+ value:
2036
+ canClone: true
2037
+ conflict:
2038
+ summary: Version/method/relativeURI already taken
2039
+ value:
2040
+ canClone: false
2041
+ '400':
2042
+ description: The body omits the required `version` field.
2043
+ content:
2044
+ application/json:
2045
+ schema:
2046
+ $ref: '#/components/schemas/Error'
2047
+ examples:
2048
+ missingVersion:
2049
+ summary: Required version field missing
2050
+ value:
2051
+ errors:
2052
+ - code: required_field_missing
2053
+ message: 'required field: version is missing'
2054
+ '401':
2055
+ $ref: '#/components/responses/401-unauthorized'
2056
+ '404':
2057
+ description: |-
2058
+ The API does not exist, is not visible to the caller, or is not a
2059
+ builder-type API.
2060
+ content:
2061
+ application/json:
2062
+ schema:
2063
+ $ref: '#/components/schemas/Error'
2064
+ examples:
2065
+ notFound:
2066
+ summary: Unknown id or script-type API
2067
+ value:
2068
+ errors:
2069
+ - code: source_builder_api_not_found
2070
+ message: Source API of builder type could not be found.
2071
+ /v1/apis/{_id}/template:
2072
+ get:
2073
+ x-internal: false
2074
+ operationId: getApiTemplate
2075
+ tags:
2076
+ - APIs
2077
+ summary: Get a downloadable template for an API
2078
+ description: |-
2079
+ Packages a builder-mode API as an installable template and returns a
2080
+ signed S3 URL where the template `.zip` can be downloaded. The URL is
2081
+ pre-signed and short-lived (approximately 15 minutes), so fetch the file
2082
+ promptly; call the endpoint again for a fresh URL.
2083
+
2084
+ The `.zip` contains the API definition plus every resource it references
2085
+ — imports, exports, connections, and scripts — grouped into one folder
2086
+ per resource type, with an `integration.json` manifest at the root.
2087
+
2088
+ Only **builder-type** APIs can be exported — requesting a script-type
2089
+ API returns 404, the same as an unknown id. Requires the
2090
+ `create:api:template` permission.
2091
+ parameters:
2092
+ - name: _id
2093
+ in: path
2094
+ required: true
2095
+ description: The id of the API to export.
2096
+ schema:
2097
+ type: string
2098
+ format: objectId
2099
+ x-celigo-refModel: apis
2100
+ examples:
2101
+ - 68ae4264b5f755d2dd3796b4
2102
+ responses:
2103
+ '200':
2104
+ description: Signed download URL for the API template zip.
2105
+ content:
2106
+ application/json:
2107
+ schema:
2108
+ type: object
2109
+ properties:
2110
+ signedURL:
2111
+ type: string
2112
+ format: uri
2113
+ description: Pre-signed, short-lived S3 URL to download the template `.zip`.
2114
+ examples:
2115
+ - https://integrator-templates.s3.us-east-1.amazonaws.com/68ae4264b5f755d2dd3796b4.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=b117bf598b5535ed024cdbdfec756172f386fd39ad4e4536e40e5efbbf4ff52a
2116
+ key:
2117
+ type: string
2118
+ description: S3 object key for the generated template `.zip`, named `<apiId>.zip`.
2119
+ examples:
2120
+ - 68ae4264b5f755d2dd3796b4.zip
2121
+ examples:
2122
+ default:
2123
+ summary: Signed template download URL
2124
+ value:
2125
+ signedURL: https://integrator-templates.s3.us-east-1.amazonaws.com/68ae4264b5f755d2dd3796b4.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=b117bf598b5535ed024cdbdfec756172f386fd39ad4e4536e40e5efbbf4ff52a
2126
+ key: 68ae4264b5f755d2dd3796b4.zip
2127
+ '401':
2128
+ $ref: '#/components/responses/401-unauthorized'
2129
+ '404':
2130
+ description: |-
2131
+ The API does not exist, is not visible to the caller, or is not a
2132
+ builder-type API (script-type APIs cannot be exported as templates).
2133
+ content:
2134
+ application/json:
2135
+ schema:
2136
+ $ref: '#/components/schemas/Error'
2137
+ examples:
2138
+ notFound:
2139
+ summary: Unknown id or script-type API
2140
+ value:
2141
+ errors:
2142
+ - code: invalid_ref
2143
+ message: Api not found.
2144
+ components:
2145
+ securitySchemes:
2146
+ bearerAuth:
2147
+ type: http
2148
+ scheme: bearer
2149
+ parameters:
2150
+ After:
2151
+ name: after
2152
+ in: query
2153
+ required: false
2154
+ description: |-
2155
+ Opaque cursor for forward pagination. Pass the value from the `Link`
2156
+ response header (`rel="next"`) to fetch the next page.
2157
+ schema:
2158
+ type: string
2159
+ Include:
2160
+ name: include
2161
+ in: query
2162
+ required: false
2163
+ description: |-
2164
+ Comma-separated list of fields to project into each returned record.
2165
+ Triggers summary projection: the response contains a minimal identity
2166
+ set (`_id`, `name`, plus resource-specific fields) with the requested
2167
+ fields added on top. Supports dot notation for nested fields.
2168
+ Mutually exclusive with `exclude`.
2169
+ schema:
2170
+ type: string
2171
+ example: _integrationId,disabled,lastModified
2172
+ Exclude:
2173
+ name: exclude
2174
+ in: query
2175
+ required: false
2176
+ description: |-
2177
+ Comma-separated list of fields to strip from the default response.
2178
+ Unlike `include`, does not trigger summary projection — returns the
2179
+ full record with the named fields removed. Protected identity fields
2180
+ (e.g. `name`) cannot be stripped. Mutually exclusive with `include`.
2181
+ schema:
2182
+ type: string
2183
+ example: createdAt,lastModified
2184
+ schemas:
2185
+ Script:
2186
+ type: object
2187
+ description: |-
2188
+ Script-mode configuration. The referenced function receives the request object
2189
+ and must return a response with `statusCode`, `headers`, and `body`.
2190
+ properties:
2191
+ _scriptId:
2192
+ type: string
2193
+ format: objectId
2194
+ x-celigo-refModel: scripts
2195
+ description: Reference to the script resource containing the handler function.
2196
+ examples:
2197
+ - 60a2c4e6f321d800129a1a3c
2198
+ function:
2199
+ type: string
2200
+ description: Name of the function to invoke within the script.
2201
+ examples:
2202
+ - handleRequest
2203
+ - processOrder
2204
+ required:
2205
+ - _scriptId
2206
+ - function
2207
+ x-celigo-ai-guidance:
2208
+ - |-
2209
+ In script mode, you provide a custom JavaScript function that receives the request
2210
+ object and returns the response. This gives you complete control over the API behavior.
2211
+ ApiRequest:
2212
+ type: object
2213
+ description: Request configuration for a builder-mode API endpoint.
2214
+ properties:
2215
+ name:
2216
+ type: string
2217
+ maxLength: 200
2218
+ description: Display name.
2219
+ examples:
2220
+ - Get Customer
2221
+ - Create Order
2222
+ description:
2223
+ type: string
2224
+ maxLength: 10240
2225
+ description: Optional description.
2226
+ examples:
2227
+ - Retrieves customer information by ID
2228
+ relativeURI:
2229
+ type: string
2230
+ maxLength: 131072
2231
+ pattern: ^\/[a-zA-Z0-9:_*\/\-\.]*$
2232
+ description: |-
2233
+ URI path relative to the version. Full endpoint becomes
2234
+ `/{version}{relativeURI}`. Use colon notation for path params: `/customers/:id`.
2235
+ examples:
2236
+ - /customers/:id
2237
+ - /orders
2238
+ - /products/:productId/variants/:variantId
2239
+ x-celigo-ai-guidance:
2240
+ - |-
2241
+ Full endpoint URL will be: `/{version}{relativeURI}`
2242
+ Can include path parameters using colon notation: `/customers/:id`
2243
+ First path segment must be alphanumeric, dash, or underscore only.
2244
+ method:
2245
+ type: string
2246
+ enum:
2247
+ - GET
2248
+ - POST
2249
+ - PUT
2250
+ - PATCH
2251
+ - DELETE
2252
+ x-enumDescriptions:
2253
+ GET: Retrieve data from the endpoint.
2254
+ POST: Submit data to the endpoint.
2255
+ PUT: Replace data at the endpoint.
2256
+ PATCH: Partially update data at the endpoint.
2257
+ DELETE: Remove data at the endpoint.
2258
+ description: HTTP method for the API endpoint.
2259
+ examples:
2260
+ - GET
2261
+ - POST
2262
+ headers:
2263
+ type: array
2264
+ description: Expected request headers.
2265
+ items:
2266
+ type: object
2267
+ properties:
2268
+ key:
2269
+ type: string
2270
+ maxLength: 256
2271
+ pattern: ^[a-zA-Z0-9_-]+$
2272
+ description: Header name
2273
+ examples:
2274
+ - Content-Type
2275
+ - X-API-Key
2276
+ description:
2277
+ type: string
2278
+ maxLength: 10240
2279
+ description: Description of the header's purpose
2280
+ examples:
2281
+ - API key for authentication
2282
+ x-celigo-ai-guidance:
2283
+ - |-
2284
+ Documents headers that clients should send. Headers are optional by default.
2285
+ Only alphanumeric characters, hyphens, and underscores are allowed in header names.
2286
+ pathParams:
2287
+ type: array
2288
+ description: Path parameters defined in the `relativeURI`.
2289
+ items:
2290
+ type: object
2291
+ properties:
2292
+ key:
2293
+ type: string
2294
+ maxLength: 256
2295
+ description: Parameter name (without the colon prefix)
2296
+ examples:
2297
+ - id
2298
+ - customerId
2299
+ description:
2300
+ type: string
2301
+ maxLength: 10240
2302
+ description: Description of the parameter
2303
+ examples:
2304
+ - Unique identifier of the customer
2305
+ x-celigo-ai-guidance:
2306
+ - |-
2307
+ Documents the parameters that are part of the URL path (e.g., :id, :customerId).
2308
+ These should match the parameters defined in the relativeURI.
2309
+ queryParams:
2310
+ type: array
2311
+ description: Expected query string parameters.
2312
+ items:
2313
+ type: object
2314
+ properties:
2315
+ key:
2316
+ type: string
2317
+ maxLength: 256
2318
+ pattern: ^[a-zA-Z0-9_\-:\/]*$
2319
+ description: Query parameter name
2320
+ examples:
2321
+ - limit
2322
+ - offset
2323
+ - filter
2324
+ dataType:
2325
+ type: string
2326
+ enum:
2327
+ - string
2328
+ - number
2329
+ - boolean
2330
+ x-enumDescriptions:
2331
+ string: Parameter value is a text string.
2332
+ number: Parameter value is a numeric value.
2333
+ boolean: Parameter value is true or false.
2334
+ description: Expected data type of the parameter
2335
+ examples:
2336
+ - string
2337
+ description:
2338
+ type: string
2339
+ maxLength: 10240
2340
+ description: Description of the parameter
2341
+ examples:
2342
+ - Maximum number of records to return
2343
+ bodySchema:
2344
+ type: object
2345
+ description: |-
2346
+ JSON Schema describing the expected request body structure. Every
2347
+ object-typed schema node must declare at least one property for the
2348
+ API Builder to render it; omit this field when the endpoint has no
2349
+ body contract.
2350
+ additionalProperties: true
2351
+ examples:
2352
+ - type: object
2353
+ properties:
2354
+ name:
2355
+ type: string
2356
+ email:
2357
+ type: string
2358
+ format: email
2359
+ x-celigo-ai-guidance:
2360
+ - |-
2361
+ Every object-typed schema node — the root, a nested property, or an
2362
+ array's `items` — must carry a non-empty `properties` map. The API
2363
+ persists a property-less object node without error, but the API
2364
+ Builder editor crashes rendering it ("Cannot convert undefined or
2365
+ null to object"), so the mistake only surfaces when the editor opens.
2366
+ - |-
2367
+ When the endpoint has no body contract (e.g. the source spec declares
2368
+ an empty request body), omit `bodySchema` entirely — absent renders
2369
+ fine. Do not substitute a catch-all `{"type": "object"}`, and do not
2370
+ pre-fill `properties: {}` — the API strips empty objects on save, so
2371
+ the empty map never survives the round-trip.
2372
+ mockRequest:
2373
+ type: object
2374
+ description: Mock request data for testing the API without live calls.
2375
+ properties:
2376
+ body:
2377
+ type: object
2378
+ description: Sample request body
2379
+ headers:
2380
+ type: object
2381
+ description: Sample headers
2382
+ pathParams:
2383
+ type: object
2384
+ description: Sample path parameters
2385
+ queryParams:
2386
+ type: object
2387
+ description: Sample query parameters
2388
+ additionalProperties: false
2389
+ x-celigo-ai-guidance:
2390
+ - |-
2391
+ Provides sample data to test the API without making actual calls.
2392
+ Can include body, headers, pathParams, and queryParams.
2393
+ transform:
2394
+ type: object
2395
+ description: Optional transformation applied to the incoming request before processing.
2396
+ properties:
2397
+ _scriptId:
2398
+ type: string
2399
+ format: objectId
2400
+ x-celigo-refModel: scripts
2401
+ description: Reference to a script for custom transformation logic.
2402
+ examples:
2403
+ - 689212a2c42d988978e27a11
2404
+ function:
2405
+ type: string
2406
+ description: Function name in the script to execute.
2407
+ examples:
2408
+ - transformRequest
2409
+ x-celigo-ai-guidance:
2410
+ - |-
2411
+ Transforms the request data before it is processed by routers or responses.
2412
+ Useful for normalizing data or extracting specific fields.
2413
+ required:
2414
+ - relativeURI
2415
+ - method
2416
+ x-celigo-ai-guidance:
2417
+ - |-
2418
+ Defines how the API endpoint receives data:
2419
+ - HTTP method and URI path
2420
+ - Expected parameters (path, query, headers)
2421
+ - Request body schema
2422
+ - Optional request transformation logic
2423
+ Router:
2424
+ type: object
2425
+ description: |-
2426
+ Conditional routing within a builder-mode API. Unlike flows, APIs only
2427
+ support `first_matching_branch` routing.
2428
+ properties:
2429
+ id:
2430
+ type: string
2431
+ description: Unique identifier for this router within the API.
2432
+ examples:
2433
+ - router_001
2434
+ - validation_router
2435
+ name:
2436
+ type: string
2437
+ description: Display name.
2438
+ examples:
2439
+ - Customer Type Router
2440
+ - Validation Router
2441
+ routeRecordsTo:
2442
+ type: string
2443
+ enum:
2444
+ - first_matching_branch
2445
+ x-enumDescriptions:
2446
+ first_matching_branch: Routes the request to the first branch whose criteria match.
2447
+ description: Routing strategy. APIs only support `first_matching_branch`.
2448
+ default: first_matching_branch
2449
+ examples:
2450
+ - first_matching_branch
2451
+ routeRecordsUsing:
2452
+ type: string
2453
+ enum:
2454
+ - input_filters
2455
+ - script
2456
+ x-enumDescriptions:
2457
+ input_filters: Evaluate routing criteria using declarative filter expressions.
2458
+ script: Evaluate routing criteria using a custom JavaScript function.
2459
+ description: Method used to evaluate routing criteria.
2460
+ default: input_filters
2461
+ examples:
2462
+ - input_filters
2463
+ script:
2464
+ type: object
2465
+ description: |
2466
+ Script configuration when routeRecordsUsing="script".
2467
+ properties:
2468
+ _scriptId:
2469
+ type: string
2470
+ format: objectId
2471
+ x-celigo-refModel: scripts
2472
+ description: Reference to the script resource.
2473
+ examples:
2474
+ - 60a2c4e6f321d800129a1a3c
2475
+ function:
2476
+ type: string
2477
+ description: Function name that returns the branch name.
2478
+ examples:
2479
+ - routeRequest
2480
+ - determineBranch
2481
+ branches:
2482
+ type: array
2483
+ description: Processing branches, evaluated in order.
2484
+ items:
2485
+ type: object
2486
+ properties:
2487
+ name:
2488
+ type: string
2489
+ description: Branch name
2490
+ examples:
2491
+ - Premium customers
2492
+ inputFilter:
2493
+ type: object
2494
+ description: Filter criteria for branch selection.
2495
+ properties:
2496
+ version:
2497
+ type: string
2498
+ enum:
2499
+ - '1'
2500
+ x-enumDescriptions:
2501
+ '1': Version 1 of the Celigo expression-based filter format.
2502
+ description: Version of the filter format used by `rules`.
2503
+ rules:
2504
+ type: array
2505
+ description: Celigo expression-based filter rules.
2506
+ items: {}
2507
+ examples:
2508
+ - - equals
2509
+ - - get
2510
+ - customerType
2511
+ - premium
2512
+ - - and
2513
+ - - exists
2514
+ - - get
2515
+ - orderId
2516
+ - - greaterThan
2517
+ - - get
2518
+ - amount
2519
+ - 1000
2520
+ x-celigo-ai-guidance:
2521
+ - |-
2522
+ Array-based DSL where the first element is an operator (e.g., "equals", "and", "or"),
2523
+ followed by operands which can be nested expressions.
2524
+ nextRouterId:
2525
+ type: string
2526
+ description: Next router to chain to (or "apiRouter" for final routing)
2527
+ examples:
2528
+ - apiRouter
2529
+ pageProcessors:
2530
+ type: array
2531
+ description: Processing steps to execute in this branch
2532
+ items:
2533
+ type: object
2534
+ properties:
2535
+ type:
2536
+ type: string
2537
+ enum:
2538
+ - export
2539
+ - import
2540
+ x-enumDescriptions:
2541
+ export: Uses an export resource for data lookup or enrichment.
2542
+ import: Uses an import resource to send data to a destination system.
2543
+ description: Type of processor
2544
+ _exportId:
2545
+ type: string
2546
+ format: objectId
2547
+ x-celigo-refModel: exports
2548
+ description: Export resource reference (when type="export").
2549
+ examples:
2550
+ - 6878f4a43bc01652c09cdccc
2551
+ _importId:
2552
+ type: string
2553
+ format: objectId
2554
+ x-celigo-refModel: imports
2555
+ description: Import resource reference (when type="import").
2556
+ examples:
2557
+ - 6878f4a43bc01652c09cddee
2558
+ hooks:
2559
+ type: object
2560
+ description: Custom scripts for processing
2561
+ x-celigo-ai-guidance:
2562
+ - |-
2563
+ Each branch has its own criteria and processing steps. Requests are
2564
+ evaluated against branch criteria in the order defined.
2565
+ required:
2566
+ - branches
2567
+ x-celigo-ai-guidance:
2568
+ - |-
2569
+ Routers evaluate the request and route it to different processing branches.
2570
+ This enables complex business logic and conditional processing within your API.
2571
+ ResponseRouter:
2572
+ type: object
2573
+ description: |-
2574
+ Final routing step that selects which response configuration to return.
2575
+ Must have `id: "apiRouter"`.
2576
+ properties:
2577
+ id:
2578
+ type: string
2579
+ enum:
2580
+ - apiRouter
2581
+ x-enumDescriptions:
2582
+ apiRouter: Identifies this as the final router that determines which API response to return.
2583
+ description: Must be `"apiRouter"`.
2584
+ examples:
2585
+ - apiRouter
2586
+ x-celigo-ai-guidance:
2587
+ - |-
2588
+ Must be "apiRouter" to indicate this is the final router before
2589
+ returning the API response.
2590
+ routeRecordsUsing:
2591
+ type: string
2592
+ enum:
2593
+ - input_filters
2594
+ - script
2595
+ x-enumDescriptions:
2596
+ input_filters: Evaluate routing criteria using declarative filter expressions.
2597
+ script: Evaluate routing criteria using a custom JavaScript function.
2598
+ description: Method used to determine which response to use.
2599
+ examples:
2600
+ - input_filters
2601
+ x-celigo-ai-guidance:
2602
+ - |-
2603
+ - **input_filters**: Use declarative filter expressions on each response
2604
+ - **script**: Use custom JavaScript to return the response id
2605
+ script:
2606
+ type: object
2607
+ description: Script configuration when `routeRecordsUsing` is `"script"`.
2608
+ properties:
2609
+ _scriptId:
2610
+ type: string
2611
+ format: objectId
2612
+ x-celigo-refModel: scripts
2613
+ description: Reference to the script resource.
2614
+ examples:
2615
+ - 60a2c4e6f321d800129a1a3c
2616
+ function:
2617
+ type: string
2618
+ description: Function name that returns the response id.
2619
+ examples:
2620
+ - determineResponse
2621
+ - routeToResponse
2622
+ x-celigo-ai-guidance:
2623
+ - |-
2624
+ The response router determines which response configuration to use based on
2625
+ the processing results. This allows you to return different responses based
2626
+ on different conditions or outcomes.
2627
+ ApiResponse:
2628
+ type: object
2629
+ description: |-
2630
+ Response configuration in a builder-mode API. Each API requires exactly one
2631
+ `success` and one `fail` response; additional `custom` responses are optional.
2632
+ properties:
2633
+ id:
2634
+ type: string
2635
+ description: Unique identifier for this response, referenced by the response router.
2636
+ examples:
2637
+ - success_response
2638
+ - error_response
2639
+ - custom_validation_response
2640
+ name:
2641
+ type: string
2642
+ maxLength: 200
2643
+ description: Display name.
2644
+ examples:
2645
+ - Success Response
2646
+ - Error Response
2647
+ - Validation Error
2648
+ description:
2649
+ type: string
2650
+ maxLength: 10240
2651
+ description: Optional description of when this response is used.
2652
+ examples:
2653
+ - Returned when customer is successfully created
2654
+ type:
2655
+ type: string
2656
+ enum:
2657
+ - success
2658
+ - fail
2659
+ - custom
2660
+ x-enumDescriptions:
2661
+ success: Default response returned when the API operation completes successfully.
2662
+ fail: Default response returned when the API operation encounters an error.
2663
+ custom: Additional response for specific scenarios, routed via the response router.
2664
+ description: Response type.
2665
+ examples:
2666
+ - success
2667
+ x-celigo-ai-guidance:
2668
+ - |-
2669
+ - **success**: Default response for successful operations (required, exactly one)
2670
+ - **fail**: Default response for errors (required, exactly one)
2671
+ - **custom**: Additional responses for specific scenarios (optional, multiple allowed)
2672
+ statusCode:
2673
+ type: integer
2674
+ minimum: 100
2675
+ maximum: 599
2676
+ description: HTTP status code to return.
2677
+ examples:
2678
+ - 200
2679
+ - 201
2680
+ - 400
2681
+ - 404
2682
+ - 500
2683
+ headers:
2684
+ type: array
2685
+ description: Response headers to include.
2686
+ items:
2687
+ type: object
2688
+ properties:
2689
+ key:
2690
+ type: string
2691
+ maxLength: 256
2692
+ pattern: ^[a-zA-Z0-9_-]+$
2693
+ description: Header name
2694
+ examples:
2695
+ - Content-Type
2696
+ - X-Request-Id
2697
+ value:
2698
+ type: string
2699
+ maxLength: 256
2700
+ description: Header value (can include handlebars templates)
2701
+ examples:
2702
+ - application/json
2703
+ - '{{requestId}}'
2704
+ description:
2705
+ type: string
2706
+ maxLength: 10240
2707
+ description: Description of the header
2708
+ examples:
2709
+ - Content type of the response body
2710
+ inputFilter:
2711
+ type: object
2712
+ description: Filter criteria for response selection by the response router.
2713
+ properties:
2714
+ version:
2715
+ type: string
2716
+ enum:
2717
+ - '1'
2718
+ x-enumDescriptions:
2719
+ '1': Version 1 of the Celigo expression-based filter format.
2720
+ description: Version of the filter format used by `rules`.
2721
+ rules:
2722
+ type: array
2723
+ description: Celigo expression-based filter rules.
2724
+ items: {}
2725
+ examples:
2726
+ - - equals
2727
+ - - boolean
2728
+ - - context
2729
+ - success
2730
+ - true
2731
+ - - and
2732
+ - - equals
2733
+ - - get
2734
+ - statusCode
2735
+ - 200
2736
+ - - exists
2737
+ - - get
2738
+ - data
2739
+ x-celigo-ai-guidance:
2740
+ - |-
2741
+ Array-based DSL where the first element is an operator (e.g., "equals", "and", "or"),
2742
+ followed by operands which can be nested expressions.
2743
+ bodySchema:
2744
+ type: object
2745
+ description: |-
2746
+ JSON Schema describing the response body structure. Every object-typed
2747
+ schema node must declare at least one property for the API Builder to
2748
+ render it; omit this field when the response body has no defined shape.
2749
+ additionalProperties: true
2750
+ examples:
2751
+ - type: object
2752
+ properties:
2753
+ id:
2754
+ type: string
2755
+ name:
2756
+ type: string
2757
+ createdAt:
2758
+ type: string
2759
+ format: date-time
2760
+ x-celigo-ai-guidance:
2761
+ - |-
2762
+ Every object-typed schema node — the root, a nested property, or an
2763
+ array's `items` — must carry a non-empty `properties` map. The API
2764
+ persists a property-less object node without error, but the API
2765
+ Builder editor crashes rendering it ("Cannot convert undefined or
2766
+ null to object"), so the mistake only surfaces when the editor opens.
2767
+ - |-
2768
+ When copying a schema from an external spec, prune property-less
2769
+ object nodes (e.g. an array's `items` that is a bare
2770
+ `{"type": "object"}`) instead of reproducing them. Array-typed roots
2771
+ (which carry `items`, not `properties`) and type-less nullable
2772
+ leaves render fine. Do not pre-fill `properties: {}` — the API
2773
+ strips empty objects on save.
2774
+ mockInput:
2775
+ type:
2776
+ - object
2777
+ - string
2778
+ maxLength: 0
2779
+ description: |-
2780
+ Mock data for testing this response, in the integrator.io canonical
2781
+ record-page format: `{"page_of_records": [{"record": {...}}, ...]}`.
2782
+ The server rejects any other object shape and any non-empty string
2783
+ with a 422; the empty string `""` (a UI draft artifact) is accepted
2784
+ and stored verbatim.
2785
+ required:
2786
+ - page_of_records
2787
+ properties:
2788
+ page_of_records:
2789
+ type: array
2790
+ description: Pages of mock records fed to this response's mappings.
2791
+ items:
2792
+ type: object
2793
+ required:
2794
+ - record
2795
+ properties:
2796
+ record:
2797
+ type: object
2798
+ description: One mock input record (freeform payload).
2799
+ success:
2800
+ type: boolean
2801
+ description: When true, the mock record follows the success path.
2802
+ testMode:
2803
+ type: boolean
2804
+ description: When true, the mock record is treated as a test-mode record.
2805
+ additionalProperties: true
2806
+ mappings:
2807
+ type: array
2808
+ description: Field mappings to transform processing results into the response body.
2809
+ items:
2810
+ type: object
2811
+ required:
2812
+ - dataType
2813
+ properties:
2814
+ generate:
2815
+ type: string
2816
+ description: Target field path in the response
2817
+ examples:
2818
+ - data.customerId
2819
+ dataType:
2820
+ type: string
2821
+ enum:
2822
+ - string
2823
+ - number
2824
+ - boolean
2825
+ - object
2826
+ - stringarray
2827
+ - numberarray
2828
+ - booleanarray
2829
+ - objectarray
2830
+ - arrayarray
2831
+ x-lowercase: true
2832
+ x-enumDescriptions:
2833
+ string: Single string value
2834
+ number: Single numeric value
2835
+ boolean: Single boolean value
2836
+ object: Nested object value
2837
+ stringarray: Array of strings
2838
+ numberarray: Array of numbers
2839
+ booleanarray: Array of booleans
2840
+ objectarray: Array of objects
2841
+ arrayarray: Array of arrays
2842
+ description: Data type of the value this mapping writes into the response body.
2843
+ examples:
2844
+ - string
2845
+ x-celigo-ai-guidance:
2846
+ - |-
2847
+ Validator-enforced on every mapping entry: writes fail with
2848
+ `422` ("Path 'dataType' is required."), repeated once per
2849
+ entry that omits it.
2850
+ extract:
2851
+ type: string
2852
+ description: Source field path from input data
2853
+ examples:
2854
+ - record.id
2855
+ hardCodedValue:
2856
+ type: string
2857
+ description: |-
2858
+ Static value written to the target field instead of extracting
2859
+ from input data.
2860
+ x-celigo-ai-guidance:
2861
+ - |-
2862
+ The field name is exactly `hardCodedValue` (capital C). The
2863
+ server does not reject unknown mapping keys: a mapping sent
2864
+ with `hardcodedValue` saves successfully with the value
2865
+ silently dropped — no error, and the target field is then
2866
+ simply absent from the API's responses.
2867
+ lookups:
2868
+ type: array
2869
+ description: Static key-value lookup tables for value transformation.
2870
+ items:
2871
+ type: object
2872
+ properties:
2873
+ name:
2874
+ type: string
2875
+ description: Name of the lookup
2876
+ examples:
2877
+ - statusCodeMap
2878
+ map:
2879
+ type: object
2880
+ description: Key-value mapping object
2881
+ default:
2882
+ type: string
2883
+ description: Default value if key not found
2884
+ examples:
2885
+ - unknown
2886
+ allowFailures:
2887
+ type: boolean
2888
+ description: When true, processing continues even if this lookup fails.
2889
+ hooks:
2890
+ type: object
2891
+ description: Custom scripts to run during response processing.
2892
+ properties:
2893
+ preMap:
2894
+ type: object
2895
+ description: Script to run before applying mappings.
2896
+ properties:
2897
+ _scriptId:
2898
+ type: string
2899
+ format: objectId
2900
+ x-celigo-refModel: scripts
2901
+ description: Reference to the script resource.
2902
+ examples:
2903
+ - 689212a2c42d988978e27a11
2904
+ function:
2905
+ type: string
2906
+ description: Function name to execute.
2907
+ examples:
2908
+ - preMapResponse
2909
+ postMap:
2910
+ type: object
2911
+ description: Script to run after applying mappings.
2912
+ properties:
2913
+ _scriptId:
2914
+ type: string
2915
+ format: objectId
2916
+ x-celigo-refModel: scripts
2917
+ description: Reference to the script resource.
2918
+ examples:
2919
+ - 689212a2c42d988978e27a11
2920
+ function:
2921
+ type: string
2922
+ description: Function name to execute.
2923
+ examples:
2924
+ - postMapResponse
2925
+ x-celigo-ai-guidance:
2926
+ - |-
2927
+ Defines how to format and return data to the caller. Each API must have:
2928
+ - Exactly one 'success' response (for successful operations)
2929
+ - Exactly one 'fail' response (for errors)
2930
+ - Zero or more 'custom' responses (for specific scenarios)
2931
+ Builder:
2932
+ type: object
2933
+ description: Builder-mode configuration defining request structure, routing, and response mapping.
2934
+ properties:
2935
+ request:
2936
+ $ref: '#/components/schemas/ApiRequest'
2937
+ routers:
2938
+ type: array
2939
+ description: Optional routers for conditional processing before the response stage.
2940
+ items:
2941
+ $ref: '#/components/schemas/Router'
2942
+ x-celigo-ai-guidance:
2943
+ - |-
2944
+ Routers allow you to direct requests to different processing branches
2945
+ based on criteria. This enables complex business logic within the API.
2946
+ responseRouter:
2947
+ $ref: '#/components/schemas/ResponseRouter'
2948
+ responses:
2949
+ type: array
2950
+ description: |-
2951
+ Response configurations. Must include exactly one `success` and one `fail`
2952
+ response; additional `custom` responses are optional.
2953
+ items:
2954
+ $ref: '#/components/schemas/ApiResponse'
2955
+ x-celigo-ai-guidance:
2956
+ - |-
2957
+ Must include exactly one 'success' response and one 'fail' response.
2958
+ Additional custom responses can be added for specific scenarios.
2959
+ x-celigo-ai-guidance:
2960
+ - |-
2961
+ The builder mode allows you to define your API using visual configuration:
2962
+ - Define the request structure (method, path, parameters)
2963
+ - Transform incoming requests
2964
+ - Route requests through processing logic
2965
+ - Map and transform responses
2966
+ Shipworks:
2967
+ type: object
2968
+ description: ShipWorks shipping-management credentials. Legacy feature.
2969
+ properties:
2970
+ username:
2971
+ type: string
2972
+ description: ShipWorks username.
2973
+ examples:
2974
+ - shipworks_user
2975
+ password:
2976
+ type: string
2977
+ description: ShipWorks password. Masked as `"******"` in GET responses.
2978
+ examples:
2979
+ - '******'
2980
+ x-celigo-ai-guidance:
2981
+ - |-
2982
+ When retrieving, this will be masked as "******" if a password is set.
2983
+ When creating/updating, provide the actual password value.
2984
+ required:
2985
+ - username
2986
+ - password
2987
+ x-celigo-ai-guidance:
2988
+ - |-
2989
+ ShipWorks is a shipping management platform. This configuration stores
2990
+ authentication credentials for ShipWorks-specific API integrations.
2991
+ APIBase:
2992
+ type: object
2993
+ description: Writable fields shared by the request and response schemas.
2994
+ properties:
2995
+ name:
2996
+ type: string
2997
+ minLength: 1
2998
+ maxLength: 100
2999
+ description: Display name.
3000
+ examples:
3001
+ - Customer API
3002
+ - Order Management API
3003
+ _integrationId:
3004
+ type: string
3005
+ format: objectId
3006
+ x-celigo-refModel: integrations
3007
+ description: Integration this API belongs to. Omitted for standalone APIs (an API can be created without an integration).
3008
+ examples:
3009
+ - 5e9a8f7c6b3d2a0011c4e5f6
3010
+ x-celigo-ai-guidance:
3011
+ - To move the API to a different integration, PUT with a changed _integrationId; the platform registers the API's step connections in the target integration on save.
3012
+ description:
3013
+ type: string
3014
+ description: Optional description of the API's purpose.
3015
+ examples:
3016
+ - API for managing customer records in Salesforce
3017
+ x-celigo-ai-guidance:
3018
+ - Use this to document the API's purpose, expected inputs/outputs, and any special considerations.
3019
+ type:
3020
+ type: string
3021
+ enum:
3022
+ - builder
3023
+ - script
3024
+ default: script
3025
+ x-enumDescriptions:
3026
+ builder: Visual configuration with request/response mapping and transformations.
3027
+ script: Custom JavaScript function for complete control over API behavior.
3028
+ description: |-
3029
+ API mode. Cannot be changed after creation. Defaults to `script` when
3030
+ omitted on create; legacy script APIs created before builder mode may
3031
+ omit it on reads as well.
3032
+ examples:
3033
+ - builder
3034
+ version:
3035
+ type: string
3036
+ default: v1
3037
+ pattern: ^[a-zA-Z0-9\-_\.]+$
3038
+ description: Version segment of the public URL (`/{version}/{relativeURI}`).
3039
+ examples:
3040
+ - v1
3041
+ - v2
3042
+ - v1.0
3043
+ disabled:
3044
+ type: boolean
3045
+ default: false
3046
+ description: When true, the API rejects all incoming requests.
3047
+ examples:
3048
+ - false
3049
+ timeoutPeriod:
3050
+ type: integer
3051
+ minimum: 0
3052
+ maximum: 120
3053
+ description: |-
3054
+ Request-timeout override in seconds (1–120). `0` is a sentinel meaning "use the
3055
+ 120-second default" — the server rewrites it on write, so a stored value is never 0.
3056
+ examples:
3057
+ - 120
3058
+ - 30
3059
+ logging:
3060
+ type: object
3061
+ description: |-
3062
+ Execution-logging settings for the API. Builder-mode APIs are
3063
+ initialized to `{"mode": "basic"}` at creation (when the account
3064
+ license has logging enabled), so the field is present on responses
3065
+ from the start.
3066
+
3067
+ POST and PUT bodies cannot set or change this field — the server
3068
+ ignores it silently (the write succeeds and the stored value is
3069
+ untouched). `PATCH /v1/apis/{_id}` with the `/logging/mode` and
3070
+ `/logging/debugUntil` paths is the only way to change it.
3071
+ x-celigo-ai-guidance:
3072
+ - |-
3073
+ Never send logging changes via PUT: the request returns 200 with
3074
+ the stored value unchanged — no error, nothing persisted. PATCH
3075
+ `/logging/mode` and `/logging/debugUntil` are the only writers.
3076
+ properties:
3077
+ mode:
3078
+ type: string
3079
+ enum:
3080
+ - basic
3081
+ - standard
3082
+ - detailed
3083
+ - accountLevel
3084
+ - noLogging
3085
+ x-enumDescriptions:
3086
+ basic: Log request metadata (method, URI, status, timing) only.
3087
+ standard: Log request metadata plus headers and summary step information.
3088
+ detailed: Full capture including per-step trace logs, viewable in the run-history trace view.
3089
+ accountLevel: Defer to the account's logging settings.
3090
+ noLogging: Disable request logging entirely — no run-history entries are produced.
3091
+ description: |-
3092
+ Which logging level applies to requests handled by this API. Only
3093
+ `detailed` (or a temporary debug window) produces the per-step
3094
+ trace data used by `GET /v1/apis/{_id}/requests/{executionId}`.
3095
+ Payload-capturing modes (`standard`, `detailed`) require payload
3096
+ storage to be enabled for the account — without it, changing the
3097
+ mode fails with `422` (code `payload_storage_required`).
3098
+ debugUntil:
3099
+ type: string
3100
+ format: date-time
3101
+ description: |-
3102
+ While this timestamp is in the future, requests are captured in
3103
+ full debug mode regardless of `mode`. Clears itself once the
3104
+ window passes. Setting it requires payload storage to be enabled
3105
+ for the account.
3106
+ examples:
3107
+ - '2026-05-15T14:00:00.000Z'
3108
+ traceKeyTemplate:
3109
+ type: string
3110
+ maxLength: 1024
3111
+ description: |-
3112
+ Handlebars template that computes each request's trace key from the
3113
+ request payload, used to correlate run-history entries with source
3114
+ records. Absent from responses until set.
3115
+ examples:
3116
+ - '{{record.orderId}}'
3117
+ pagination:
3118
+ type: object
3119
+ description: |-
3120
+ Cursor pagination for builder-mode APIs whose volume-driver lookup
3121
+ supports paging. When enabled, API responses are wrapped in a
3122
+ `{data, pagination: {has_more, next_cursor}}` envelope; consumers
3123
+ resume by sending `next_cursor` in the POST body (or the
3124
+ `Celigo-Next-Cursor` header on GET) until `has_more` is false.
3125
+ Invalid or mismatched cursors fail with `invalid_cursor_format`,
3126
+ `cursor_version_unsupported`, `cursor_signature_invalid`,
3127
+ `cursor_api_mismatch`, `cursor_filter_mismatch`, or
3128
+ `cursor_not_supported_for_api`. Absent from responses until set.
3129
+ properties:
3130
+ enabled:
3131
+ type: boolean
3132
+ description: When true, the pagination envelope and cursor contract are active for this API.
3133
+ script:
3134
+ $ref: '#/components/schemas/Script'
3135
+ builder:
3136
+ $ref: '#/components/schemas/Builder'
3137
+ shipworks:
3138
+ $ref: '#/components/schemas/Shipworks'
3139
+ draft:
3140
+ type: boolean
3141
+ description: |-
3142
+ When true, this API is a draft that auto-deletes when its expiry passes
3143
+ (`draftExpiresAt` in the response). Set at creation; an update can clear the
3144
+ flag but never set it.
3145
+ x-celigo-ai-guidance:
3146
+ - |-
3147
+ POST with `draft: true` arms the draft TTL (the server computes `draftExpiresAt`).
3148
+ PUT with `draft: false` clears the flag and the expiry, promoting the draft to a
3149
+ permanent API. PUT with `draft: true` on a non-draft API is silently ignored, and
3150
+ a PUT that omits the field leaves an existing draft flag unchanged.
3151
+ Apim:
3152
+ type: array
3153
+ readOnly: true
3154
+ description: Publication status of this API in external API management systems.
3155
+ items:
3156
+ type: object
3157
+ properties:
3158
+ apiId:
3159
+ type: string
3160
+ description: Identifier assigned by the external API management system (a UUID, not a Celigo API _id).
3161
+ examples:
3162
+ - 44754dc4-15fa-4f52-b54d-c415fa5f525c
3163
+ flowId:
3164
+ type: string
3165
+ description: Associated flow identifier in the external API management system (a UUID, not a Celigo flow _id). Empty when no flow is associated.
3166
+ examples:
3167
+ - 14b8def5-143e-4598-b8de-f5143e559832
3168
+ status:
3169
+ type: string
3170
+ enum:
3171
+ - oaspending
3172
+ - published
3173
+ x-enumDescriptions:
3174
+ oaspending: OpenAPI spec generation or update is pending for this API.
3175
+ published: The API has been published to the external API management system.
3176
+ description: Publication status.
3177
+ definitionVersion:
3178
+ type: string
3179
+ enum:
3180
+ - v4
3181
+ x-enumDescriptions:
3182
+ v4: Version 4 of the API definition format used by the management system.
3183
+ description: API definition format version.
3184
+ x-celigo-ai-guidance:
3185
+ - |-
3186
+ Tracks the publication status of this API to external API management systems
3187
+ and portals. Used for generating and syncing OpenAPI specifications.
3188
+ API:
3189
+ required:
3190
+ - _id
3191
+ - name
3192
+ - createdAt
3193
+ - lastModified
3194
+ description: |-
3195
+ API resource. Shape varies by mode: builder-mode APIs carry `type`, `version`,
3196
+ `disabled`, and `builder`; script-mode APIs additionally carry `script` plus
3197
+ top-level `_scriptId` / `function` copies. Legacy script APIs (pre-builder era)
3198
+ omit `type`, `version`, `disabled`, and `builder` entirely.
3199
+ allOf:
3200
+ - $ref: '#/components/schemas/APIBase'
3201
+ - type: object
3202
+ properties:
3203
+ _id:
3204
+ type: string
3205
+ format: objectId
3206
+ readOnly: true
3207
+ x-celigo-refModel: apis
3208
+ description: Unique identifier for the API.
3209
+ examples:
3210
+ - 68ae4264b5f755d2dd3796b4
3211
+ _apiGroupingId:
3212
+ type:
3213
+ - string
3214
+ - 'null'
3215
+ format: objectId
3216
+ readOnly: true
3217
+ description: |-
3218
+ API grouping this API belongs to. Set only via
3219
+ `PUT /apis/grouping`; the server ignores this field in POST/PUT
3220
+ bodies on this resource. May be `null` after ungrouping.
3221
+ examples:
3222
+ - 60a1b2c3d4e5f60012345678
3223
+ _scriptId:
3224
+ type: string
3225
+ format: objectId
3226
+ readOnly: true
3227
+ x-celigo-refModel: scripts
3228
+ description: |-
3229
+ Top-level copy of `script._scriptId`. Present on script-mode and legacy
3230
+ script APIs for backward compatibility.
3231
+ examples:
3232
+ - 689212a2c42d988978e27a11
3233
+ function:
3234
+ type: string
3235
+ readOnly: true
3236
+ description: |-
3237
+ Top-level copy of `script.function`. Present on script-mode and legacy
3238
+ script APIs for backward compatibility.
3239
+ examples:
3240
+ - handleRequest
3241
+ createdAt:
3242
+ type: string
3243
+ format: date-time
3244
+ readOnly: true
3245
+ description: Timestamp when the API was created.
3246
+ examples:
3247
+ - '2025-08-26T23:25:24.107Z'
3248
+ lastModified:
3249
+ type: string
3250
+ format: date-time
3251
+ readOnly: true
3252
+ description: Timestamp when the API was last modified.
3253
+ examples:
3254
+ - '2026-04-07T03:48:20.795Z'
3255
+ _templateId:
3256
+ type: string
3257
+ format: objectId
3258
+ readOnly: true
3259
+ x-celigo-refModel: templates
3260
+ description: Template this API was created from. Present only on template-installed APIs.
3261
+ examples:
3262
+ - 60a2c4e6f321d800129a1a3c
3263
+ draftExpiresAt:
3264
+ type: string
3265
+ format: date-time
3266
+ readOnly: true
3267
+ description: |-
3268
+ Timestamp when a draft API auto-deletes. Server-computed when `draft` is set at
3269
+ creation.
3270
+ examples:
3271
+ - '2026-01-15T09:30:00.000Z'
3272
+ apim:
3273
+ $ref: '#/components/schemas/Apim'
3274
+ x-celigo-ai-guidance:
3275
+ - |-
3276
+ Contains the complete API configuration including metadata, script/builder settings,
3277
+ and integration-specific configurations.
3278
+ Request:
3279
+ type: object
3280
+ description: |-
3281
+ Request body for creating or updating an API.
3282
+
3283
+ For builder-mode APIs, populate the `builder` object (at minimum
3284
+ `builder.request.relativeURI` and `builder.request.method`); the `script`
3285
+ field is ignored. For script-mode APIs, populate `script` with `_scriptId`
3286
+ and `function`; the `builder` field is ignored. On PUT, send the complete
3287
+ object — omitted fields revert to defaults.
3288
+
3289
+ Set `type` explicitly to `builder` or `script`. The server infers `script`
3290
+ when `type` is omitted, but new APIs must declare it.
3291
+ required:
3292
+ - name
3293
+ - type
3294
+ allOf:
3295
+ - $ref: '#/components/schemas/APIBase'
3296
+ Error:
3297
+ type: object
3298
+ description: Standard error response envelope returned by integrator.io APIs.
3299
+ properties:
3300
+ errors:
3301
+ type: array
3302
+ description: List of errors that occurred while processing the request.
3303
+ items:
3304
+ type: object
3305
+ properties:
3306
+ code:
3307
+ oneOf:
3308
+ - type: string
3309
+ - type: integer
3310
+ description: |-
3311
+ Machine-readable error code. Usually a string like
3312
+ `invalid_ref`, `missing_required_field`, or `unauthorized`;
3313
+ may be an **integer** when the error mirrors an upstream HTTP
3314
+ status (e.g. `500`) — most commonly returned by connection-ping
3315
+ and adaptor-proxy responses.
3316
+ message:
3317
+ type: string
3318
+ description: Human-readable description of the error.
3319
+ field:
3320
+ type: string
3321
+ description: |-
3322
+ Optional pointer to the document field that caused the error.
3323
+ Used by structural validation errors (`missing_required_field`,
3324
+ `invalid_ref`) to indicate which field is at fault
3325
+ (e.g. `_id`, `type`, `http.baseURI`).
3326
+ source:
3327
+ type: string
3328
+ description: |-
3329
+ Optional origin layer for the error — e.g. `application` when
3330
+ the error came from the remote system the adaptor called,
3331
+ `connector` when the adaptor itself rejected the request.
3332
+ required:
3333
+ - message
3334
+ required:
3335
+ - errors
3336
+ ApisUsageEntry:
3337
+ type: object
3338
+ description: |-
3339
+ One month's invocation record for a single API-callable endpoint. Keyed by the
3340
+ resource + HTTP method + relativeURI combination — the same export invoked via two HTTP methods
3341
+ produces two separate entries.
3342
+ properties:
3343
+ _id:
3344
+ type: string
3345
+ format: objectId
3346
+ description: Unique id of this usage record (not the resource id — see `metadata._resourceId`).
3347
+ examples:
3348
+ - 69d054b9be4ce14fb4112827
3349
+ method:
3350
+ type: string
3351
+ enum:
3352
+ - GET
3353
+ - POST
3354
+ - PUT
3355
+ - PATCH
3356
+ - DELETE
3357
+ x-enumDescriptions:
3358
+ GET: Retrieve data from the endpoint.
3359
+ POST: Submit data to the endpoint.
3360
+ PUT: Replace data at the endpoint.
3361
+ PATCH: Partially update data at the endpoint.
3362
+ DELETE: Remove data at the endpoint.
3363
+ description: HTTP method the endpoint was called with.
3364
+ relativeURI:
3365
+ type: string
3366
+ description: |-
3367
+ The endpoint path (relative to `https://api.integrator.io`) that was invoked. Common shapes:
3368
+ `/v1/exports/{_exportId}/invoke`, `/v1/imports/{_importId}/invoke`,
3369
+ `/v1/connections/{_connectionId}/import` for virtual imports,
3370
+ `/v1/apis/{_apiId}/request` for script-mode APIs, and
3371
+ `/apis/v1/<relativeURI>` for builder-mode APIs.
3372
+ examples:
3373
+ - /v1/exports/6878f4a43bc01652c09cdccc/invoke
3374
+ metadata:
3375
+ type: object
3376
+ description: Human-readable labeling of the resource behind this usage record.
3377
+ properties:
3378
+ _resourceId:
3379
+ type: string
3380
+ format: objectId
3381
+ description: |-
3382
+ Id of the underlying export, import, or API resource. Omitted for some resource types
3383
+ (e.g. connection-scoped virtual imports) where the URL itself fully identifies the target.
3384
+ examples:
3385
+ - 6878f4a43bc01652c09cdccc
3386
+ name:
3387
+ type: string
3388
+ description: Display name of the resource at the time of invocation.
3389
+ examples:
3390
+ - Get Contacts
3391
+ type:
3392
+ type: string
3393
+ enum:
3394
+ - export
3395
+ - import
3396
+ - virtualImport
3397
+ - script
3398
+ - apiBuilder
3399
+ x-enumDescriptions:
3400
+ export: A standard export resource invoked as an API endpoint.
3401
+ import: A standard import resource invoked as an API endpoint.
3402
+ virtualImport: A connection-scoped import embedded in a connector.
3403
+ script: A script-mode API driven by custom JavaScript.
3404
+ apiBuilder: A builder-mode API configured visually with request/response mappings.
3405
+ description: |-
3406
+ Resource flavor. `virtualImport` is a connection-scoped import (connector-embedded).
3407
+ `script` is a script-mode API. `apiBuilder` is a builder-mode API.
3408
+ month:
3409
+ type: integer
3410
+ minimum: 1
3411
+ maximum: 12
3412
+ description: Calendar month (1 = January) the counters cover.
3413
+ examples:
3414
+ - 4
3415
+ year:
3416
+ type: integer
3417
+ description: Four-digit year the counters cover.
3418
+ examples:
3419
+ - 2026
3420
+ ioInvocationCount:
3421
+ type: integer
3422
+ description: |-
3423
+ Number of times the endpoint was invoked through integrator.io's own API front door. This is
3424
+ the counter that bills against the subscription's API invocation entitlement.
3425
+ examples:
3426
+ - 29
3427
+ apimInvocationCount:
3428
+ type: integer
3429
+ description: |-
3430
+ Number of times the endpoint was invoked through an external API Management layer (APIM) in
3431
+ front of integrator.io. Billed separately from `ioInvocationCount`.
3432
+ examples:
3433
+ - 0
3434
+ createdAt:
3435
+ type: string
3436
+ format: date-time
3437
+ description: When this monthly counter record was first created (the first invocation of the month).
3438
+ examples:
3439
+ - '2026-04-04T00:00:57.285Z'
3440
+ ApisUsageResponse:
3441
+ type: object
3442
+ description: |-
3443
+ Month-to-date invocation counters for every API endpoint that has been called in the account.
3444
+ Returned by `GET /v1/apis/usage`. Each entry in `usages[]` represents one resource + method +
3445
+ relativeURI triple — the same export or import invoked via two different methods yields two
3446
+ entries. Counters are cumulative for the month named in `month` / `year` and reset on the 1st.
3447
+ properties:
3448
+ usages:
3449
+ type: array
3450
+ description: |-
3451
+ Per-endpoint invocation records. Empty array when the account hasn't invoked any API endpoints
3452
+ this month. Includes entries for every resource that can be invoked as an API —
3453
+ custom APIs, individual exports/imports (`/v1/exports/{id}/invoke`, `/v1/imports/{id}/invoke`),
3454
+ virtual imports, and script APIs.
3455
+ items:
3456
+ $ref: '#/components/schemas/ApisUsageEntry'
3457
+ externalApimCount:
3458
+ type: integer
3459
+ description: |-
3460
+ Account-wide count of invocations that arrived through an external API Management layer
3461
+ (APIM) in front of integrator.io for the current month. Aggregate counterpart to the
3462
+ per-endpoint `apimInvocationCount` values in `usages[]`. Absent on some responses when the
3463
+ account has never been routed through an external APIM.
3464
+ examples:
3465
+ - 0
3466
+ JsonPatchOperation:
3467
+ type: object
3468
+ description: A single JSON Patch operation (RFC 6902).
3469
+ required:
3470
+ - op
3471
+ - path
3472
+ properties:
3473
+ op:
3474
+ type: string
3475
+ enum:
3476
+ - replace
3477
+ - add
3478
+ - remove
3479
+ x-enumDescriptions:
3480
+ replace: Replaces the value at the specified path.
3481
+ add: Sets the value at the specified path.
3482
+ remove: Removes the value at the specified path.
3483
+ description: The operation to perform.
3484
+ path:
3485
+ type: string
3486
+ description: |-
3487
+ JSON Pointer (RFC 6901) to the field to patch. Only
3488
+ whitelisted paths are accepted — unlisted paths return
3489
+ `422` with `"<path> is not a whitelisted property"`.
3490
+ value:
3491
+ description: The new value to set. Required for `replace` and `add`, omit for `remove`.
3492
+ JsonPatchRequest:
3493
+ type: array
3494
+ description: |-
3495
+ A JSON Patch document (RFC 6902). Send an array of patch
3496
+ operations on whitelisted fields — all other paths are rejected
3497
+ with 422.
3498
+ minItems: 1
3499
+ items:
3500
+ $ref: '#/components/schemas/JsonPatchOperation'
3501
+ ApiLogEntry:
3502
+ type: object
3503
+ description: |-
3504
+ Summary row returned in the `GET /v1/apis/{_id}/logs` listing. Carries just enough to identify
3505
+ each invocation (when it ran, how it ended) so the caller can pick which ones to inspect in
3506
+ full via `GET /v1/apis/{_id}/logs/{key}`. Full request/response payloads are **not** in the
3507
+ list — only in the detail fetch.
3508
+ properties:
3509
+ key:
3510
+ type: string
3511
+ description: |-
3512
+ Opaque log key. Pass to `GET /v1/apis/{_id}/logs/{key}` to retrieve the full decoded
3513
+ transaction. Structure is `<seq>-<id>-<status>-<method>` (e.g.
3514
+ `5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST`). The embedded `<id>` also
3515
+ appears as `id` on the detail response.
3516
+ examples:
3517
+ - 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
3518
+ time:
3519
+ type: integer
3520
+ format: int64
3521
+ description: Epoch milliseconds when the invocation was handled.
3522
+ examples:
3523
+ - 1776917346304
3524
+ method:
3525
+ type: string
3526
+ description: HTTP method of the inbound request (`GET`, `POST`, ...).
3527
+ examples:
3528
+ - POST
3529
+ statusCode:
3530
+ type: string
3531
+ description: |-
3532
+ HTTP status code the API returned to the caller, as a **string** (e.g. `"200"`). Note: on
3533
+ the detail endpoint this same value is exposed as an integer under `response.statusCode` —
3534
+ the list surfaces it as a string.
3535
+ examples:
3536
+ - '200'
3537
+ ApiLogsResponse:
3538
+ type: object
3539
+ description: |-
3540
+ Request log envelope returned by `GET /v1/apis/{_id}/logs`. Contains the recent API invocation
3541
+ traces for the API identified by `_id`. The `requests[]` array is empty when no invocations
3542
+ have been logged — either the API has never been called, or debug capture is off, or the
3543
+ retention window has elapsed. Each entry is a full decoded request/response pair.
3544
+ properties:
3545
+ requests:
3546
+ type: array
3547
+ description: |-
3548
+ Invocation summaries, newest first. Each entry has just `{key, time, method, statusCode}`;
3549
+ the decoded request/response payload lives behind `GET /v1/apis/{_id}/logs/{key}`.
3550
+ items:
3551
+ $ref: '#/components/schemas/ApiLogEntry'
3552
+ ApiLogDetail:
3553
+ type: object
3554
+ description: |-
3555
+ Full decoded request/response envelope for one API invocation, returned by
3556
+ `GET /v1/apis/{_id}/logs/{key}`. Sensitive header values (`authorization`, OAuth bearer tokens,
3557
+ and similar) are masked with `********` before storage — the originals are not recoverable.
3558
+ The `inputToResponseBubble` block reveals the Celigo-internal state handed to the
3559
+ response-mapping stage; it's absent for script-mode APIs and pre-mapping failures.
3560
+ properties:
3561
+ time:
3562
+ type: integer
3563
+ format: int64
3564
+ description: Epoch milliseconds when the invocation was handled.
3565
+ examples:
3566
+ - 1776917346304
3567
+ request:
3568
+ type: object
3569
+ description: The inbound HTTP request the API received, as decoded by the runtime.
3570
+ properties:
3571
+ method:
3572
+ type: string
3573
+ description: HTTP method of the inbound request.
3574
+ examples:
3575
+ - POST
3576
+ url:
3577
+ type: string
3578
+ description: |-
3579
+ The path the caller hit, relative to `https://api.integrator.io`. Includes the API
3580
+ `{version}` and the API's configured `relativeURI` (e.g. `/apis/v1/hubspot`).
3581
+ Query-string credentials are masked before storage.
3582
+ examples:
3583
+ - /apis/v1/orders
3584
+ httpVersion:
3585
+ type: string
3586
+ description: HTTP protocol version the caller negotiated (e.g. `1.1`, `2`).
3587
+ examples:
3588
+ - '1.1'
3589
+ headers:
3590
+ type: object
3591
+ description: Inbound headers. The `authorization` header (and other credential headers) are masked.
3592
+ additionalProperties:
3593
+ type: string
3594
+ example:
3595
+ content-type: application/json
3596
+ authorization: '********'
3597
+ accept: application/json
3598
+ host: api.integrator.io
3599
+ queryParams:
3600
+ type: object
3601
+ description: Parsed query-string parameters. Empty object when none were sent.
3602
+ additionalProperties: true
3603
+ body:
3604
+ type: string
3605
+ description: |-
3606
+ Request body as received, verbatim string (JSON payloads arrive already serialized —
3607
+ parse with `JSON.parse` when you need structured data). Empty string for bodyless
3608
+ methods.
3609
+ examples:
3610
+ - '{"orderId":"SO-1042","total":129.99}'
3611
+ clientAddress:
3612
+ type: string
3613
+ description: |-
3614
+ IP the request arrived from, as the Celigo edge saw it. IPv6 format; may be a
3615
+ private/loopback address (e.g. `::ffff:127.0.0.6`) when routed through an internal
3616
+ proxy rather than the public internet.
3617
+ examples:
3618
+ - ::ffff:127.0.0.6
3619
+ size:
3620
+ type: integer
3621
+ description: Byte size the runtime recorded for the request. Often `0` — this field is not consistently populated.
3622
+ examples:
3623
+ - 0
3624
+ response:
3625
+ type: object
3626
+ description: The outbound HTTP response the API produced.
3627
+ properties:
3628
+ statusCode:
3629
+ type: integer
3630
+ description: |-
3631
+ HTTP status code returned to the caller, as an **integer** here. Note the list endpoint
3632
+ (`GET /v1/apis/{_id}/logs`) exposes the same value as a string.
3633
+ examples:
3634
+ - 200
3635
+ statusMessage:
3636
+ type: string
3637
+ description: HTTP status reason phrase (`OK`, `Bad Request`, ...).
3638
+ examples:
3639
+ - OK
3640
+ headers:
3641
+ type: object
3642
+ description: Response headers sent to the caller.
3643
+ additionalProperties:
3644
+ type: string
3645
+ example:
3646
+ content-type: application/json
3647
+ x-request-id: abc123def456
3648
+ body:
3649
+ type: string
3650
+ description: Response body as sent. String form; parse as JSON/XML per the `content-type` header.
3651
+ examples:
3652
+ - '{"orderId":"SO-1042"}'
3653
+ size:
3654
+ type: integer
3655
+ description: Byte size of the serialized response body.
3656
+ examples:
3657
+ - 21
3658
+ responseTime:
3659
+ type: integer
3660
+ description: Total time in milliseconds from request arrival to response flush.
3661
+ examples:
3662
+ - 312
3663
+ inputToResponseBubble:
3664
+ type: object
3665
+ description: |-
3666
+ Builder-mode APIs only. Snapshot of the state handed to the response-mapping stage — the
3667
+ parsed input records plus any execution/configuration errors collected along the pipeline.
3668
+ Use this to debug response-mapping issues ("what did the mapper actually see?"). Absent on
3669
+ script-mode APIs.
3670
+ properties:
3671
+ sourceRecord:
3672
+ description: Array of records (or single-record object) that the response-mapper was given as input.
3673
+ executionErrors:
3674
+ type: array
3675
+ description: Runtime errors raised during processing (e.g. script exceptions, lookup failures).
3676
+ items:
3677
+ type: object
3678
+ additionalProperties: true
3679
+ configurationErrors:
3680
+ type: array
3681
+ description: Configuration errors detected before execution (e.g. missing required mapping fields).
3682
+ items:
3683
+ type: object
3684
+ additionalProperties: true
3685
+ key:
3686
+ type: string
3687
+ description: Echoes the `key` path parameter. Same structure as in the list (`<seq>-<id>-<status>-<method>`).
3688
+ examples:
3689
+ - 5481201053696-a10af1ade8fe477a847771c1e3716e36-200-POST
3690
+ id:
3691
+ type: string
3692
+ description: |-
3693
+ Shorter internal id for this log record. Appears embedded in the `key` string as the second
3694
+ segment. Not independently useful to the caller, but handy for correlating with audit or
3695
+ monitoring logs that reference only the short id.
3696
+ examples:
3697
+ - a10af1ade8fe477a847771c1e3716e36
3698
+ ApiRequestLogEntry:
3699
+ type: object
3700
+ description: One logged API request execution in the run history.
3701
+ required:
3702
+ - executionId
3703
+ - time
3704
+ - method
3705
+ - relativeURI
3706
+ - statusCode
3707
+ - timeTaken
3708
+ - logMode
3709
+ properties:
3710
+ executionId:
3711
+ type: string
3712
+ description: |-
3713
+ Identifier of this request execution (20-character lowercase hex).
3714
+ Pass it to `GET /v1/apis/{_id}/requests/{executionId}` to open the
3715
+ trace view when `logMode` is `detailed` or `debug`.
3716
+ examples:
3717
+ - a1b2c3d4e5f678901234
3718
+ time:
3719
+ type: string
3720
+ format: date-time
3721
+ description: When the request was received (UTC).
3722
+ examples:
3723
+ - '2026-05-15T13:42:11.234Z'
3724
+ method:
3725
+ type: string
3726
+ description: HTTP method of the request.
3727
+ examples:
3728
+ - POST
3729
+ relativeURI:
3730
+ type: string
3731
+ description: Path of the request, without scheme or host.
3732
+ examples:
3733
+ - /orders
3734
+ statusCode:
3735
+ type: integer
3736
+ description: HTTP status code the API responded with.
3737
+ examples:
3738
+ - 200
3739
+ traceKey:
3740
+ type: string
3741
+ description: Correlation/trace key resolved for this request.
3742
+ examples:
3743
+ - trace-abc-123
3744
+ remoteIP:
3745
+ type: string
3746
+ description: Client IP address the request came from.
3747
+ examples:
3748
+ - 192.168.1.5
3749
+ timeTaken:
3750
+ type: number
3751
+ description: Processing time in milliseconds.
3752
+ examples:
3753
+ - 142.7
3754
+ logMode:
3755
+ type: string
3756
+ enum:
3757
+ - basic
3758
+ - standard
3759
+ - detailed
3760
+ - debug
3761
+ x-enumDescriptions:
3762
+ basic: Request metadata only — no per-step trace data.
3763
+ standard: Request metadata plus summary step information.
3764
+ detailed: Full per-step trace logs, queryable via the trace view.
3765
+ debug: Temporary full-capture mode active while `logging.debugUntil` is in the future.
3766
+ description: |-
3767
+ Logging mode that was active when this request was processed.
3768
+ Determines trace availability — only `detailed` and `debug` produce
3769
+ per-step trace logs. Requests processed with `no_logging` produce no
3770
+ run-history rows at all.
3771
+ examples:
3772
+ - detailed
3773
+ ApiRunHistoryResponse:
3774
+ type: object
3775
+ description: Paginated API request run history.
3776
+ required:
3777
+ - requests
3778
+ properties:
3779
+ requests:
3780
+ type: array
3781
+ description: Logged request executions, newest first by default.
3782
+ items:
3783
+ $ref: '#/components/schemas/ApiRequestLogEntry'
3784
+ nextPageUrl:
3785
+ type:
3786
+ - string
3787
+ - 'null'
3788
+ description: |-
3789
+ URL to fetch the next page (carries the `next` cursor and
3790
+ `cursorExecutionId` tie-breaker); null when there is no next page.
3791
+ examples:
3792
+ - https://api.integrator.io/v1/apis/685021eda02a61042cee80ab/requests?pageSize=50&next=2026-05-15T13:42:11.234Z&cursorExecutionId=a1b2c3d4e5f678901234
3793
+ prevPageUrl:
3794
+ type:
3795
+ - string
3796
+ - 'null'
3797
+ description: URL to fetch the previous page; null when there is no previous page.
3798
+ ApiRequestTraceStep:
3799
+ type: object
3800
+ description: A step within an API request execution trace.
3801
+ required:
3802
+ - status
3803
+ - timeTaken
3804
+ - groupId
3805
+ - recordId
3806
+ - time
3807
+ properties:
3808
+ _expOrImpId:
3809
+ type: string
3810
+ description: |-
3811
+ Export, import, or builder resource-step identifier (`resStepId`) for
3812
+ the step. Builder bubble stages use the resource-step identifier
3813
+ rather than a MongoDB ObjectId.
3814
+ examples:
3815
+ - 67ee026136f4d1eeb529ad63
3816
+ status:
3817
+ type: string
3818
+ enum:
3819
+ - success
3820
+ - error
3821
+ - ignore
3822
+ x-enumDescriptions:
3823
+ success: Record processed successfully
3824
+ error: Record failed processing
3825
+ ignore: Record was skipped during processing
3826
+ description: Outcome status of the step.
3827
+ examples:
3828
+ - success
3829
+ stage:
3830
+ type: string
3831
+ description: Processing stage; present when `status` is `error` or `ignore`.
3832
+ examples:
3833
+ - mapping
3834
+ timeTaken:
3835
+ type: number
3836
+ description: Step processing time in milliseconds.
3837
+ examples:
3838
+ - 142
3839
+ groupId:
3840
+ type: string
3841
+ description: Group identifier for the step's records.
3842
+ examples:
3843
+ - 6449f2
3844
+ recordId:
3845
+ type: string
3846
+ description: Identifier of this record.
3847
+ examples:
3848
+ - 4a8e5c
3849
+ parentRecordId:
3850
+ type: string
3851
+ description: Identifier of the parent record when this step is a child row.
3852
+ examples:
3853
+ - a1b2c3
3854
+ time:
3855
+ type: string
3856
+ format: date-time
3857
+ description: Timestamp when the step ran (UTC).
3858
+ examples:
3859
+ - '2026-05-15T13:42:11.234Z'
3860
+ additionalProperties: true
3861
+ ApiTraceMetadataResponse:
3862
+ type: object
3863
+ description: Top-level execution steps for the trace view of an API request.
3864
+ required:
3865
+ - steps
3866
+ properties:
3867
+ steps:
3868
+ type: array
3869
+ description: Top-level execution steps for the trace view.
3870
+ items:
3871
+ $ref: '#/components/schemas/ApiRequestTraceStep'
3872
+ ApiRequestChildrenResponse:
3873
+ type: object
3874
+ description: Paginated child records under a parent record in an API request trace.
3875
+ required:
3876
+ - children
3877
+ properties:
3878
+ children:
3879
+ type: array
3880
+ description: Child step records (lookup / one-to-many expansions).
3881
+ items:
3882
+ $ref: '#/components/schemas/ApiRequestTraceStep'
3883
+ nextPageUrl:
3884
+ type:
3885
+ - string
3886
+ - 'null'
3887
+ description: URL to fetch the next page; null when there is no next page.
3888
+ prevPageUrl:
3889
+ type:
3890
+ - string
3891
+ - 'null'
3892
+ description: URL to fetch the previous page; null when there is no previous page.
3893
+ ApiLogDataRequest:
3894
+ type: object
3895
+ description: |-
3896
+ Query payload for retrieving decoded log data for a step within an API
3897
+ request execution. Same shape as the flow log-data query; for API Builder
3898
+ steps, `_expOrImpId` may be a MongoDB ObjectId or a builder resource-step
3899
+ identifier (`resStepId`).
3900
+ required:
3901
+ - _expOrImpId
3902
+ - stage
3903
+ - groupId
3904
+ - recordId
3905
+ properties:
3906
+ _expOrImpId:
3907
+ type: string
3908
+ description: Export, import, or builder resource-step identifier for the step.
3909
+ examples:
3910
+ - 67ee026136f4d1eeb529ad63
3911
+ stage:
3912
+ type: string
3913
+ description: Processing stage to fetch data for.
3914
+ examples:
3915
+ - mapping
3916
+ groupId:
3917
+ type: string
3918
+ description: Group identifier for the step's records.
3919
+ examples:
3920
+ - grp-001
3921
+ recordId:
3922
+ type: string
3923
+ description: Identifier of the record to fetch.
3924
+ examples:
3925
+ - rec-123
3926
+ ApiLogDataResponse:
3927
+ type: object
3928
+ description: Decoded log payload for a step, plus any collected error metadata.
3929
+ required:
3930
+ - logs
3931
+ - errors
3932
+ properties:
3933
+ logs:
3934
+ type: array
3935
+ description: |-
3936
+ Decoded log payload entries for the step. Large payloads are not inlined —
3937
+ such an entry carries an `externalReference[]`, each with a `source.s3Key`;
3938
+ pass that key to `GET /v1/apis/{_id}/requests/{executionId}/logs/signedURL`
3939
+ to download the full content.
3940
+ items:
3941
+ type: object
3942
+ properties:
3943
+ externalReference:
3944
+ type: array
3945
+ description: References to externally stored payload content, present for large payloads.
3946
+ items:
3947
+ type: object
3948
+ properties:
3949
+ source:
3950
+ type: object
3951
+ description: Location of the externally stored content.
3952
+ properties:
3953
+ s3Key:
3954
+ type: string
3955
+ description: Relative key to pass to the signed-URL endpoint.
3956
+ additionalProperties: true
3957
+ additionalProperties: true
3958
+ additionalProperties: true
3959
+ errors:
3960
+ type: array
3961
+ description: Error metadata collected while resolving the payload.
3962
+ items:
3963
+ type: object
3964
+ additionalProperties: true
3965
+ ApiSignedUrlResponse:
3966
+ type: object
3967
+ description: A short-lived signed URL for downloading a stored API request log payload object.
3968
+ required:
3969
+ - signedURL
3970
+ properties:
3971
+ signedURL:
3972
+ type: string
3973
+ description: Time-limited signed URL (about 120 seconds) to download the referenced log object.
3974
+ examples:
3975
+ - https://integrator-userdata-delete-30.s3.amazonaws.com/api-execution-logs/user/api/exec/group/file.log?Expires=1754046196&Signature=...
3976
+ DependencyEntry:
3977
+ type: object
3978
+ description: A single resource that depends on the queried resource.
3979
+ properties:
3980
+ id:
3981
+ type: string
3982
+ description: Unique identifier of the dependent resource.
3983
+ examples:
3984
+ - 61f92026dd053843b5d72350
3985
+ name:
3986
+ type: string
3987
+ description: Display name of the dependent resource.
3988
+ examples:
3989
+ - Import Orders to NetSuite
3990
+ paths:
3991
+ type: array
3992
+ description: |-
3993
+ Dot-notation paths within the dependent resource that reference
3994
+ the target resource. `[*]` denotes array elements.
3995
+ items:
3996
+ type: string
3997
+ examples:
3998
+ - - hooks.preSavePage._scriptId
3999
+ accessLevel:
4000
+ type: string
4001
+ description: The caller's access level on the dependent resource.
4002
+ examples:
4003
+ - manage
4004
+ dependencyIds:
4005
+ type: object
4006
+ description: |-
4007
+ Map of resource types to arrays of IDs that this dependent
4008
+ resource references on the target. Keys are singular or plural
4009
+ resource type strings; values are arrays of ID strings.
4010
+ additionalProperties:
4011
+ type: array
4012
+ items:
4013
+ type: string
4014
+ example:
4015
+ script:
4016
+ - 64ff4b21612a134bd2f45531
4017
+ required:
4018
+ - id
4019
+ - name
4020
+ - paths
4021
+ - accessLevel
4022
+ - dependencyIds
4023
+ DependencyResponse:
4024
+ type: object
4025
+ description: |
4026
+ Map of dependent-resource types to arrays of dependency entries.
4027
+ Keys are plural resource type strings (e.g. `flows`, `imports`,
4028
+ `connections`). An empty object `{}` means no dependents.
4029
+ additionalProperties:
4030
+ type: array
4031
+ items:
4032
+ $ref: '#/components/schemas/DependencyEntry'
4033
+ example:
4034
+ exports:
4035
+ - id: 64ff4b21612a134bd2f45534
4036
+ name: Bank FTP Export
4037
+ paths:
4038
+ - hooks.preSavePage._scriptId
4039
+ accessLevel: manage
4040
+ dependencyIds:
4041
+ script:
4042
+ - 64ff4b21612a134bd2f45531
4043
+ flows:
4044
+ - id: 64ff4b22612a134bd2f45538
4045
+ name: CAMT-053 to Celigo CAM Format
4046
+ paths:
4047
+ - pageGenerators[*]._exportId
4048
+ accessLevel: manage
4049
+ dependencyIds:
4050
+ export:
4051
+ - 64ff4b21612a134bd2f45534
4052
+ responses:
4053
+ 401-unauthorized:
4054
+ description: |-
4055
+ Unauthorized. The request lacks a valid bearer token, or the provided token
4056
+ failed to authenticate.
4057
+
4058
+ Note: the 401 response is produced by the auth middleware **before** the
4059
+ request reaches the endpoint handler, so it does **not** follow the
4060
+ standard `{errors: [...]}` envelope. Instead the body is a bare
4061
+ `{message: string}` object with no `code`, no `errors` array. Callers
4062
+ handling 401s should key off the HTTP status and the `message` string,
4063
+ not try to destructure an `errors[]`.
4064
+ content:
4065
+ application/json:
4066
+ schema:
4067
+ type: object
4068
+ properties:
4069
+ message:
4070
+ type: string
4071
+ description: |-
4072
+ Human-readable description of the auth failure. Known values:
4073
+ - `"Unauthorized"` — no `Authorization` header on the request.
4074
+ - `"Bearer Authentication Failed"` — header present but token
4075
+ is invalid, revoked, or expired.
4076
+ required:
4077
+ - message
4078
+ examples:
4079
+ missing_token:
4080
+ summary: No Authorization header sent
4081
+ value:
4082
+ message: Unauthorized
4083
+ invalid_token:
4084
+ summary: Bearer token invalid or revoked
4085
+ value:
4086
+ message: Bearer Authentication Failed
4087
+ 400-bad-request:
4088
+ description: |
4089
+ Bad request. The server could not understand the request because of malformed syntax or invalid parameters.
4090
+ content:
4091
+ application/json:
4092
+ schema:
4093
+ $ref: '#/components/schemas/Error'
4094
+ examples:
4095
+ default:
4096
+ value:
4097
+ errors:
4098
+ - code: invalid_request
4099
+ message: The request body failed validation.
4100
+ 422-unprocessable-entity:
4101
+ description: |
4102
+ Unprocessable entity. The request was well-formed but was unable to be followed due to semantic errors.
4103
+ content:
4104
+ application/json:
4105
+ schema:
4106
+ $ref: '#/components/schemas/Error'
4107
+ examples:
4108
+ default:
4109
+ value:
4110
+ errors:
4111
+ - code: unprocessable_entity
4112
+ message: The request could not be processed due to a semantic error.
4113
+ 404-not-found:
4114
+ description: |
4115
+ Not found. The requested resource does not exist or is not visible to the caller.
4116
+ content:
4117
+ application/json:
4118
+ schema:
4119
+ $ref: '#/components/schemas/Error'
4120
+ examples:
4121
+ default:
4122
+ value:
4123
+ errors:
4124
+ - code: not_found
4125
+ message: The requested resource was not found.
4126
+ 403-forbidden:
4127
+ description: |
4128
+ Forbidden. The authenticated caller does not have permission to perform this operation.
4129
+ content:
4130
+ application/json:
4131
+ schema:
4132
+ $ref: '#/components/schemas/Error'
4133
+ examples:
4134
+ default:
4135
+ value:
4136
+ errors:
4137
+ - code: forbidden
4138
+ message: You do not have permission to access this resource.
4139
+ x-enable-proxy: true
4140
+ x-internal: false