@celigo/api-specs 0.2.201 → 0.2.202

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/alert.yml CHANGED
@@ -513,6 +513,10 @@ paths:
513
513
 
514
514
  Requires permission to read the alert (`get:alert:model`). Returns `403`
515
515
  when `ENABLE_PROACTIVE_ALERTS` is off or the caller lacks access.
516
+
517
+ The history stays readable after the alert is deleted, even though the alert
518
+ itself then reads 404. The same entries also appear in the integration's audit
519
+ log (`GET /v1/integrations/{_id}/audit`).
516
520
  parameters:
517
521
  - name: _id
518
522
  in: path
@@ -604,6 +608,14 @@ paths:
604
608
  description: Alert id.
605
609
  examples:
606
610
  - 674a1b2c3d4e5f6789012345
611
+ resourceName:
612
+ type: string
613
+ description: |-
614
+ Display name of the alert: `<type label> - <flow name>` for a flow-level
615
+ alert, `<type label> - All flows (<integration name>)` for an
616
+ integration-level alert.
617
+ examples:
618
+ - Long runtime - All flows (Shopify to NetSuite)
607
619
  event:
608
620
  type: string
609
621
  description: Mutation event type.
@@ -664,26 +676,41 @@ paths:
664
676
  properties:
665
677
  fieldPath:
666
678
  type: string
667
- description: Dot-notation path of the changed field.
679
+ description: |-
680
+ Dot-notation path of the changed field. A recipient change is reported
681
+ as `recipients`, listing the recipients' email addresses instead of user
682
+ ids.
668
683
  examples:
669
- - longRuntime.thresholdMinutes
684
+ - longRuntime
670
685
  oldValue:
671
686
  description: Previous value (absent on create).
672
687
  newValue:
673
688
  description: New value (absent on delete).
674
689
  deletedInfo:
675
690
  type: object
676
- description: Metadata about the deleted resource. Present on `delete` events.
691
+ description: |-
692
+ Metadata about the deleted alert. Once the alert is deleted, every entry in its
693
+ history carries it, not only the `delete` entry.
677
694
  properties:
678
695
  name:
679
696
  type: string
680
- description: Name of the resource at the time of deletion.
697
+ description: Display name of the alert at the time of deletion.
698
+ examples:
699
+ - Long runtime - All flows (Shopify to NetSuite)
700
+ _integrationId:
701
+ type: string
702
+ format: objectId
703
+ x-celigo-refModel: integrations
704
+ description: Integration the alert belonged to.
705
+ examples:
706
+ - 5e5eb06fdd83ed4f8206a4ea
681
707
  examples:
682
708
  default:
683
709
  value:
684
710
  - _id: 69e38cb1a749d34a9732a270
685
711
  resourceType: alert
686
712
  _resourceId: 674a1b2c3d4e5f6789012345
713
+ resourceName: Long runtime - All flows (Shopify to NetSuite)
687
714
  source: api
688
715
  event: update
689
716
  time: '2026-04-18T13:52:49.729Z'
@@ -692,9 +719,11 @@ paths:
692
719
  email: user@example.com
693
720
  name: Jane Doe
694
721
  fieldChanges:
695
- - fieldPath: longRuntime.thresholdMinutes
696
- oldValue: 30
697
- newValue: 45
722
+ - fieldPath: longRuntime
723
+ oldValue:
724
+ thresholdMinutes: 30
725
+ newValue:
726
+ thresholdMinutes: 45
698
727
  '204':
699
728
  description: No audit entries exist for this alert.
700
729
  '400':
package/dist/audit.yml CHANGED
@@ -104,7 +104,6 @@ paths:
104
104
  - import
105
105
  - integration
106
106
  - lookupcache
107
- - mcpoauthprovider
108
107
  - mcpserver
109
108
  - networkpolicy
110
109
  - notification
@@ -142,10 +141,9 @@ paths:
142
141
  import: Import resource for writing data to a destination system.
143
142
  integration: Integration workspace resource.
144
143
  lookupcache: Lookup cache resource for in-memory key-value stores.
145
- mcpoauthprovider: MCP OAuth provider resource.
146
144
  mcpserver: MCP server resource for AI agent tool hosting.
147
145
  networkpolicy: Network policy resource (IP allow/deny lists).
148
- notification: Notification subscription resource.
146
+ notification: Notification subscription resource. Filtering on `alert` also returns these entries.
149
147
  revision: Revision snapshot resource for version control.
150
148
  role: End-user role resource.
151
149
  script: Script resource for custom JavaScript hooks.
@@ -547,7 +545,6 @@ paths:
547
545
  - import
548
546
  - integration
549
547
  - lookupcache
550
- - mcpoauthprovider
551
548
  - mcpserver
552
549
  - notification
553
550
  - revision
@@ -582,9 +579,8 @@ paths:
582
579
  import: Import resource for writing data to a destination system.
583
580
  integration: Integration workspace resource.
584
581
  lookupcache: Lookup cache resource for in-memory key-value stores.
585
- mcpoauthprovider: MCP OAuth provider resource.
586
582
  mcpserver: MCP server resource for AI agent tool hosting.
587
- notification: Notification subscription resource.
583
+ notification: Notification subscription resource. Filtering on `alert` also returns these entries.
588
584
  revision: Revision snapshot resource for version control.
589
585
  role: End-user role resource.
590
586
  script: Script resource for custom JavaScript hooks.
@@ -822,7 +818,6 @@ paths:
822
818
  - imports
823
819
  - integrations
824
820
  - lookupcaches
825
- - mcpoauthproviders
826
821
  - mcpservers
827
822
  - networkpolicies
828
823
  - revisions
@@ -850,9 +845,8 @@ paths:
850
845
  iclients: iClient shared credential resources.
851
846
  idpconfigs: End-user identity provider configuration resources.
852
847
  imports: Import resources.
853
- integrations: Integration workspace resources.
848
+ integrations: Integration workspace resources. The history also includes the alerts set on the integration or its flows, deleted ones too.
854
849
  lookupcaches: Lookup cache resources.
855
- mcpoauthproviders: MCP OAuth provider resources.
856
850
  mcpservers: MCP server resources.
857
851
  networkpolicies: Network policy resources.
858
852
  revisions: Revision snapshot resources.
@@ -1060,7 +1054,6 @@ paths:
1060
1054
  - imports
1061
1055
  - integrations
1062
1056
  - lookupcaches
1063
- - mcpoauthproviders
1064
1057
  - mcpservers
1065
1058
  - networkpolicies
1066
1059
  - revisions
@@ -1088,9 +1081,8 @@ paths:
1088
1081
  iclients: iClient shared credential resources.
1089
1082
  idpconfigs: End-user identity provider configuration resources.
1090
1083
  imports: Import resources.
1091
- integrations: Integration workspace resources.
1084
+ integrations: Integration workspace resources. The history also includes the alerts set on the integration or its flows, deleted ones too.
1092
1085
  lookupcaches: Lookup cache resources.
1093
- mcpoauthproviders: MCP OAuth provider resources.
1094
1086
  mcpservers: MCP server resources.
1095
1087
  networkpolicies: Network policy resources.
1096
1088
  revisions: Revision snapshot resources.
@@ -1286,7 +1278,6 @@ paths:
1286
1278
  - imports
1287
1279
  - integrations
1288
1280
  - lookupcaches
1289
- - mcpoauthproviders
1290
1281
  - mcpservers
1291
1282
  - networkpolicies
1292
1283
  - revisions
@@ -1312,9 +1303,8 @@ paths:
1312
1303
  iclients: iClient shared credential resources.
1313
1304
  idpconfigs: End-user identity provider configuration resources.
1314
1305
  imports: Import resources.
1315
- integrations: Integration workspace resources.
1306
+ integrations: Integration workspace resources. The export also includes the alerts set on the integration or its flows, deleted ones too.
1316
1307
  lookupcaches: Lookup cache resources.
1317
- mcpoauthproviders: MCP OAuth provider resources.
1318
1308
  mcpservers: MCP server resources.
1319
1309
  networkpolicies: Network policy resources.
1320
1310
  revisions: Revision snapshot resources.
@@ -1377,7 +1367,10 @@ components:
1377
1367
  properties:
1378
1368
  fieldPath:
1379
1369
  type: string
1380
- description: Dot-path to the changed field (e.g., `settings.foo.bar`).
1370
+ description: |-
1371
+ Dot-path to the changed field (e.g., `settings.foo.bar`). On `alert` entries a recipient
1372
+ change is reported as `recipients`, with `oldValue` and `newValue` listing the recipients'
1373
+ email addresses instead of user ids.
1381
1374
  examples:
1382
1375
  - http.auth.token.token
1383
1376
  oldValue:
@@ -1397,7 +1390,7 @@ components:
1397
1390
  type: string
1398
1391
  format: objectId
1399
1392
  x-celigo-refModel: integrations
1400
- description: Integration id context (for flow/sync-related events).
1393
+ description: Integration id context (for flow/sync-related and alert events).
1401
1394
  examples:
1402
1395
  - 60a2c4e6f321d800129a1a3c
1403
1396
  _abstractFlowId:
@@ -1459,8 +1452,11 @@ components:
1459
1452
  type: string
1460
1453
  readOnly: true
1461
1454
  description: |-
1462
- Resource type that the audit entry applies to. `fileserver` appears only in
1463
- returned entries and cannot be used as a `resourceType` filter.
1455
+ Resource type that the audit entry applies to. `fileserver` and
1456
+ `mcpoauthprovider` appear only in returned entries and cannot be used as a
1457
+ `resourceType` filter. MCP OAuth providers have no per-resource audit route
1458
+ either, so their entries are read from `GET /v1/audit` without a
1459
+ `resourceType` filter.
1464
1460
  enum:
1465
1461
  - accesstoken
1466
1462
  - agent
@@ -1542,6 +1538,15 @@ components:
1542
1538
  description: Resource id the audit entry applies to.
1543
1539
  examples:
1544
1540
  - 69497ca1b40d3e24522a7f3c
1541
+ resourceName:
1542
+ type: string
1543
+ readOnly: true
1544
+ description: |-
1545
+ Display name of the alert, present on `alert` entries only: `<type label> - <flow name>`
1546
+ for a flow-level alert, `<type label> - All flows (<integration name>)` for an
1547
+ integration-level alert.
1548
+ examples:
1549
+ - Long runtime - All flows (Shopify to NetSuite)
1545
1550
  source:
1546
1551
  type: string
1547
1552
  readOnly: true
@@ -1692,7 +1697,6 @@ components:
1692
1697
  - import
1693
1698
  - integration
1694
1699
  - lookupcache
1695
- - mcpoauthprovider
1696
1700
  - mcpserver
1697
1701
  - networkpolicy
1698
1702
  - notification
@@ -1728,10 +1732,9 @@ components:
1728
1732
  import: Import resource for writing data to a destination system.
1729
1733
  integration: Integration workspace resource.
1730
1734
  lookupcache: Lookup cache resource for in-memory key-value stores.
1731
- mcpoauthprovider: MCP OAuth provider resource.
1732
1735
  mcpserver: MCP server resource for AI agent tool hosting.
1733
1736
  networkpolicy: Network policy resource (IP allow/deny lists).
1734
- notification: Notification subscription resource.
1737
+ notification: Notification subscription resource. Filtering on `alert` also returns these entries.
1735
1738
  revision: Revision snapshot resource for version control.
1736
1739
  role: End-user role resource.
1737
1740
  script: Script resource for custom JavaScript hooks.
@@ -1915,7 +1918,6 @@ components:
1915
1918
  - import
1916
1919
  - integration
1917
1920
  - lookupcache
1918
- - mcpoauthprovider
1919
1921
  - mcpserver
1920
1922
  - networkpolicy
1921
1923
  - notification
@@ -1951,10 +1953,9 @@ components:
1951
1953
  import: Import resource for writing data to a destination system.
1952
1954
  integration: Integration workspace resource.
1953
1955
  lookupcache: Lookup cache resource for in-memory key-value stores.
1954
- mcpoauthprovider: MCP OAuth provider resource.
1955
1956
  mcpserver: MCP server resource for AI agent tool hosting.
1956
1957
  networkpolicy: Network policy resource (IP allow/deny lists).
1957
- notification: Notification subscription resource.
1958
+ notification: Notification subscription resource. Filtering on `alert` also returns these entries.
1958
1959
  revision: Revision snapshot resource for version control.
1959
1960
  role: End-user role resource.
1960
1961
  script: Script resource for custom JavaScript hooks.
@@ -13,8 +13,9 @@ info:
13
13
  They define how rows, columns, segments, and elements are parsed or generated,
14
14
  including delimiters, padding, and hierarchical rule structures.
15
15
 
16
- EDI file definitions (X12 and EDIFACT formats) require a valid `globalId` that
17
- maps to a known standard document definition, and may require an EDI license.
16
+ EDI file definitions (X12 and EDIFACT formats) carry a `globalId` that maps to a
17
+ known standard document definition; on an EDI-licensed account the server assigns
18
+ one when a create omits it.
18
19
  servers:
19
20
  - url: https://api.integrator.io
20
21
  description: Production (US / default region)
@@ -36,7 +37,7 @@ tags:
36
37
 
37
38
  Four formats are supported: `delimited` (CSV/TSV), `delimited/x12` (EDI X12),
38
39
  `delimited/edifact` (EDI EDIFACT), and `fixed` (fixed-width). EDI formats
39
- require a `globalId` linking to a standard document definition.
40
+ carry a `globalId` linking to a standard document definition.
40
41
 
41
42
  ## File definition schema
42
43
 
@@ -204,9 +205,10 @@ paths:
204
205
  $ref: '#/components/responses/422-unprocessable-entity'
205
206
  x-celigo-ai-guidance:
206
207
  - |-
207
- For EDI formats (`delimited/x12` or `delimited/edifact`), a valid `globalId`
208
- is required when the account has an EDI license enabled. The `globalId` must
209
- reference a known standard document definition.
208
+ For EDI formats (`delimited/x12` or `delimited/edifact`) on an EDI-licensed
209
+ account, the server assigns a `globalId` when the body omits one; a supplied
210
+ `globalId` must reference a known standard document definition, or the create
211
+ fails with 422 `invalid_global_id`.
210
212
  - |-
211
213
  For `format: fixed`, send `version`, `fixed.rowDelimiter` and `fixed.paddingChar`;
212
214
  without them the create fails with 422 and nothing is saved. Columns are read in
@@ -274,7 +276,8 @@ paths:
274
276
  Replaces the file definition with the provided configuration. This
275
277
  is a full replace -- include all fields you want to keep. `format`
276
278
  cannot be changed between `fixed` and `delimited` families after
277
- creation, and `globalId` is immutable for EDI formats.
279
+ creation, and `globalId` is immutable for EDI formats: a PUT that sends a
280
+ different value, or omits it, keeps the stored id.
278
281
  operationId: updateFileDefinition
279
282
  tags:
280
283
  - File Definitions
@@ -1025,8 +1028,8 @@ components:
1025
1028
  - fixed
1026
1029
  x-enumDescriptions:
1027
1030
  delimited: Standard delimited files (CSV, TSV, etc.).
1028
- delimited/x12: EDI X12 format. Requires `globalId` when EDI license is enabled.
1029
- delimited/edifact: EDI EDIFACT format. Requires `globalId` when EDI license is enabled.
1031
+ delimited/x12: EDI X12 format. Carries a `globalId`, assigned by the server when a create on an EDI-licensed account omits it.
1032
+ delimited/edifact: EDI EDIFACT format. Carries a `globalId`, assigned by the server when a create on an EDI-licensed account omits it.
1030
1033
  fixed: Fixed-width positional format.
1031
1034
  documentType:
1032
1035
  type: string
@@ -1039,15 +1042,21 @@ components:
1039
1042
  description: EDI document type for acknowledgement documents.
1040
1043
  globalId:
1041
1044
  type: string
1042
- description: |-
1043
- Entry in the platform's registry of standard EDI document definitions that this
1044
- definition is built from. On an EDI-licensed account an X12 or EDIFACT create without
1045
- it fails with 422 `global_id_not_provided`, and one naming an id the registry doesn't
1046
- have fails with 422 `invalid_global_id`. No public route lists the registry, so copy the
1047
- `globalId` of an existing definition for the same standard document. Immutable after
1048
- creation.
1045
+ description: |
1046
+ Global identifier mapping to a known EDI standard document definition.
1047
+
1048
+ For EDI formats (`delimited/x12` or `delimited/edifact`) on an account
1049
+ with an EDI license, a create that omits it gets one assigned from the
1050
+ EDI catalog, and a supplied value must be a catalog entry (an unknown one
1051
+ fails the create with 422 `invalid_global_id`). Immutable after creation:
1052
+ a PUT that sends a different value, or none, keeps the stored id.
1049
1053
  examples:
1050
- - Generic-4010-850-PurchaseOrder
1054
+ - 3c7a8f2e-1234-5678-9abc-def012345678
1055
+ x-celigo-ai-guidance:
1056
+ - |-
1057
+ Send the catalog globalId of the document when you know it. When it is omitted the
1058
+ server picks the id, and a description naming another document type did not change
1059
+ the pick — an X12 create described as an 856 got the same id as a bare X12 create.
1051
1060
  rules:
1052
1061
  type: array
1053
1062
  x-celigo-agent:
@@ -34,7 +34,9 @@ paths:
34
34
  `partUrls`, and `completeUrl` for larger files. Upload the bytes directly
35
35
  to those URLs — a single PUT must carry the
36
36
  `x-amz-server-side-encryption: AES256` header — then the item flips to
37
- active once S3 confirms it; no further API call is needed. Each URL's
37
+ active once S3 confirms it; no further API call is needed. If the
38
+ uploaded object is empty (0 bytes), the file is not activated: it is
39
+ deleted permanently, without passing through the recycle bin. Each URL's
38
40
  lifetime is in its `X-Amz-Expires` parameter; once every part already
39
41
  issued has been uploaded, a multipart upload fetches further part URLs by
40
42
  posting again with the item's `_id`, `uploadId`, and `issuedPartsCount`,
@@ -222,7 +224,12 @@ paths:
222
224
  downloadUrl:
223
225
  type: string
224
226
  format: uri
225
- description: Presigned S3 URL to GET the file's bytes from.
227
+ description: |-
228
+ Presigned S3 URL to GET the file's bytes from. The bytes are
229
+ served as an attachment named after the item: the
230
+ `Content-Disposition` header carries an ASCII `filename` in
231
+ which non-ASCII characters are replaced with `_`, plus
232
+ `filename*=UTF-8''` with the full name percent-encoded.
226
233
  examples:
227
234
  - https://integrator-file-storage.s3.us-west-2.amazonaws.com/file-storage/...
228
235
  expiresIn:
@@ -611,6 +618,17 @@ paths:
611
618
  description: Folder name.
612
619
  examples:
613
620
  - My Files
621
+ _integrationId:
622
+ type: string
623
+ format: objectId
624
+ x-celigo-refModel: integrations
625
+ description: |-
626
+ Integration whose system folder tree contains the listed
627
+ folder. Present only on the last entry (the listed folder
628
+ itself), and only when that folder is the integration's
629
+ root folder or inside it.
630
+ examples:
631
+ - 6ab1e7ab38d7733b4594d0d2
614
632
  examples:
615
633
  listMode:
616
634
  summary: List a folder's children
@@ -839,7 +857,10 @@ paths:
839
857
 
840
858
  Only files are looked up: a folder's id is treated as unknown, so it
841
859
  fails the request or comes back as a `notFound` entry. Read folder
842
- metadata from `GET /v1/storage/items`.
860
+ metadata from `GET /v1/storage/items`. A pending file is returned, as
861
+ active, once its bytes have landed in storage, even if the upload has not
862
+ finalized yet; a pending file whose bytes have not been uploaded is
863
+ treated as unknown.
843
864
  operationId: batchGetStorageItems
844
865
  tags:
845
866
  - File Storage
@@ -1293,9 +1314,12 @@ paths:
1293
1314
  Updates an item's `name` and/or `description`. Renaming keeps the item's
1294
1315
  `_id` stable, so references from flows, exports, imports, and tokens
1295
1316
  survive; a name already held by another live item in the same folder is
1296
- rejected with 409 `STORAGE_ITEM_ALREADY_EXISTS`. To move an item to a
1297
- different folder, use `PATCH /v1/storage/items/{_id}/move`; to replace a
1298
- file's content, use `PATCH /v1/storage/items/{_id}/replace`.
1317
+ rejected with 409 `STORAGE_ITEM_ALREADY_EXISTS`. An integration's root
1318
+ folder (`isSystem`) can be renamed and described too; renaming the
1319
+ integration updates only the folder's `integrationName`, never its
1320
+ `name`. To move an item to a different folder, use
1321
+ `PATCH /v1/storage/items/{_id}/move`; to replace a file's content, use
1322
+ `PATCH /v1/storage/items/{_id}/replace`.
1299
1323
  operationId: updateStorageItem
1300
1324
  tags:
1301
1325
  - File Storage
@@ -1450,7 +1474,9 @@ paths:
1450
1474
  placement are preserved, so every reference to the file stays intact — use
1451
1475
  this instead of delete-and-recreate when a file is referenced by flows or
1452
1476
  exports. The previous content remains downloadable until the replacement
1453
- finalizes. Rename with `PUT /v1/storage/items/{_id}` instead; this
1477
+ finalizes. Uploading empty (0-byte) content does not replace it: the file
1478
+ itself is deleted permanently, without passing through the recycle bin.
1479
+ Rename with `PUT /v1/storage/items/{_id}` instead; this
1454
1480
  endpoint does not accept a name.
1455
1481
  operationId: replaceStorageFileContent
1456
1482
  tags:
@@ -1565,7 +1591,13 @@ paths:
1565
1591
  file: the destination file keeps its `_id` and takes the source file's
1566
1592
  content, its previous content is discarded, and the source file's `_id`
1567
1593
  is removed — neither goes to the recycle bin, so references to the
1568
- source file break. A soft-deleted source folder may be
1594
+ source file break. A sub-folder whose name the destination also holds as
1595
+ a folder is merged into it the same way. When the names match but the
1596
+ types differ (a file against a folder), both are kept: the destination
1597
+ item is unchanged, and the source item moves in with its `_id` under the
1598
+ first free `<name> (k)` — the suffix follows the full name, so
1599
+ `report.pdf` lands as `report.pdf (1)`, or `report.pdf (2)` when
1600
+ `report.pdf (1)` is taken. A soft-deleted source folder may be
1569
1601
  merged, which restores its contents into the destination. Folders only —
1570
1602
  move individual files with the move endpoint. Requires delete access on
1571
1603
  the source folder and write access on the destination.
@@ -2425,7 +2457,7 @@ components:
2425
2457
  size:
2426
2458
  type: integer
2427
2459
  format: int64
2428
- minimum: 0
2460
+ minimum: 1
2429
2461
  description: |-
2430
2462
  Declared size in bytes. Used to reserve quota up front. When omitted,
2431
2463
  the backend reserves a worst-case estimate (1 GB for single,
@@ -2765,6 +2797,18 @@ components:
2765
2797
  integration purges them.
2766
2798
  examples:
2767
2799
  - 6ab1e7ab38d7733b4594d0d2
2800
+ _fileServerAccountId:
2801
+ type: string
2802
+ format: objectId
2803
+ readOnly: true
2804
+ x-celigo-refModel: fileserveraccounts
2805
+ description: |-
2806
+ File Server account that uploaded the file over SFTP, or that most
2807
+ recently replaced its content over SFTP. Absent for folders and for
2808
+ files uploaded through this API; replacing the content through this
2809
+ API keeps the current value.
2810
+ examples:
2811
+ - 6ac0f3e1b2d4a5001c7e9f10
2768
2812
  integrationName:
2769
2813
  type: string
2770
2814
  readOnly: true
@@ -2772,6 +2816,9 @@ components:
2772
2816
  Name of the integration an integration root folder belongs to. Present
2773
2817
  only on that root folder (the `isSystem` folder at the account root);
2774
2818
  items inside the tree carry `_integrationId` but not this field.
2819
+ Follows the integration's name when the integration is renamed, while
2820
+ the folder's own `name` keeps the value it was created with or last
2821
+ renamed to, so the two can differ.
2775
2822
  examples:
2776
2823
  - Order to cash
2777
2824
  __ancestorIds:
@@ -2802,10 +2849,15 @@ components:
2802
2849
  maxLength: 256
2803
2850
  readOnly: true
2804
2851
  description: |-
2805
- Media type recorded at upload time, used to set the download
2806
- Content-Type. Present when type is file; absent for folders and for
2807
- files uploaded without a declared type. Matched case-sensitively by
2808
- the `mimeType` and `mimeType_nin` list filters.
2852
+ Media type used to set the download Content-Type. Present when type is
2853
+ file; absent for folders and for files uploaded through this API
2854
+ without a declared type. A file uploaded over the SFTP file server gets
2855
+ the type its name's extension maps to, ignoring a trailing `.filepart`,
2856
+ `.part`, or `.tmp`, or `application/octet-stream` when the extension is
2857
+ unknown. An SFTP rename replaces an absent or `application/octet-stream`
2858
+ value when the new extension maps to a known type; renames made with an
2859
+ API token leave the value unchanged. Matched case-sensitively by the
2860
+ `mimeType` and `mimeType_nin` list filters.
2809
2861
  examples:
2810
2862
  - image/png
2811
2863
  description:
@@ -2831,11 +2883,13 @@ components:
2831
2883
  type: boolean
2832
2884
  readOnly: true
2833
2885
  description: |-
2834
- When true, the platform created the item (for example a system or
2835
- integration folder) and protects it — rename, move, content replace,
2836
- copy, delete, and purge are rejected with 403
2837
- `STORAGE_SYSTEM_ITEM_PROTECTED` ("System items cannot be modified or
2838
- deleted").
2886
+ When true, the platform created the item (for example an
2887
+ integration's root folder) and protects it: moving it, merging it
2888
+ into another folder, deleting it, and restoring or purging it from
2889
+ the recycle bin are rejected with 403 `STORAGE_SYSTEM_ITEM_PROTECTED`
2890
+ ("System items cannot be modified or deleted"; a per-item error in a
2891
+ bulk move). Renaming it and editing its description with
2892
+ `PUT /v1/storage/items/{_id}` are allowed.
2839
2893
  deletedAt:
2840
2894
  type: string
2841
2895
  format: date-time
@@ -3049,7 +3103,7 @@ components:
3049
3103
  size:
3050
3104
  type: integer
3051
3105
  format: int64
3052
- minimum: 0
3106
+ minimum: 1
3053
3107
  description: |-
3054
3108
  Declared size in bytes of the replacement content, used to reserve
3055
3109
  quota. Reconciled to the real size when the upload finalizes.
@@ -1597,11 +1597,13 @@ paths:
1597
1597
  operationId: registerConnectionToIntegrationByBody
1598
1598
  tags:
1599
1599
  - Integrations
1600
- summary: Register a connection to an integration (by body)
1600
+ summary: Register connections to an integration (by body)
1601
1601
  description: |-
1602
- Registers a single connection to the integration by passing the connection id in the request
1603
- body. Alternatively, use `PUT /v1/integrations/{_id}/connections/{_connectionId}/register` to
1604
- register by path parameter.
1602
+ Registers one or more connections to the integration, adding them to its
1603
+ `_registeredConnectionIds` list. The request body is a bare JSON array of
1604
+ connection ids; duplicates and ids that are already registered are ignored.
1605
+ Alternatively, use `PUT /v1/integrations/{_id}/connections/{_connectionId}/register`
1606
+ to register a single connection by path parameter.
1605
1607
  parameters:
1606
1608
  - name: _id
1607
1609
  in: path
@@ -1618,24 +1620,40 @@ paths:
1618
1620
  content:
1619
1621
  application/json:
1620
1622
  schema:
1621
- type: object
1622
- required:
1623
- - _connectionId
1624
- properties:
1625
- _connectionId:
1626
- type: string
1627
- format: objectId
1628
- x-celigo-refModel: connections
1629
- examples:
1630
- - 626168f90b6ef816b50c82d7
1631
- description: The id of the connection to register.
1623
+ type: array
1624
+ description: Connection ids to register.
1625
+ items:
1626
+ type: string
1627
+ format: objectId
1628
+ x-celigo-refModel: connections
1632
1629
  examples:
1633
1630
  default:
1634
1631
  value:
1635
- _connectionId: 69680d7111d1437fbcbce534
1632
+ - 626168f90b6ef816b50c82d7
1633
+ - 6553ebdeda62bb22e7fa81ff
1636
1634
  responses:
1637
1635
  '204':
1638
- description: Connection registered successfully. No body returned.
1636
+ description: Connections registered successfully. No body returned.
1637
+ '400':
1638
+ description: |-
1639
+ The body is not a JSON array (`invalid_request`), or an entry in the
1640
+ array is not a valid ObjectId (`invalid_ref`).
1641
+ content:
1642
+ application/json:
1643
+ schema:
1644
+ $ref: '#/components/schemas/Error'
1645
+ examples:
1646
+ notAnArray:
1647
+ summary: 'An object body such as {"_connectionId": "..."}'
1648
+ value:
1649
+ errors:
1650
+ - code: invalid_request
1651
+ message: Request body should be a JSON array of _connectionId values.
1652
+ invalidId:
1653
+ value:
1654
+ errors:
1655
+ - code: invalid_ref
1656
+ message: Please provide a valid _connectionId.
1639
1657
  '401':
1640
1658
  $ref: '#/components/responses/401-unauthorized'
1641
1659
  '404':
@@ -1934,11 +1952,25 @@ paths:
1934
1952
  '204':
1935
1953
  description: Lookup caches registered successfully. No body returned.
1936
1954
  '400':
1937
- description: An entry in the array is not a valid ObjectId.
1955
+ description: |-
1956
+ The body is not a JSON array (`invalid_request`), or an entry in the
1957
+ array is not a valid ObjectId (`invalid_ref`).
1938
1958
  content:
1939
1959
  application/json:
1940
1960
  schema:
1941
1961
  $ref: '#/components/schemas/Error'
1962
+ examples:
1963
+ notAnArray:
1964
+ summary: 'An object body such as {"_lookupCacheId": "..."}'
1965
+ value:
1966
+ errors:
1967
+ - code: invalid_request
1968
+ message: Request body should be a JSON array of _lookupCacheId values.
1969
+ invalidId:
1970
+ value:
1971
+ errors:
1972
+ - code: invalid_ref
1973
+ message: Please provide a valid _lookupCacheId.
1942
1974
  '401':
1943
1975
  $ref: '#/components/responses/401-unauthorized'
1944
1976
  '404':
@@ -780,6 +780,390 @@ paths:
780
780
  $ref: '#/components/responses/401-unauthorized'
781
781
  '404':
782
782
  $ref: '#/components/responses/404-not-found'
783
+ /v1/mcpservers/template/preview:
784
+ get:
785
+ x-internal: false
786
+ operationId: previewMcpServerTemplateUpload
787
+ tags:
788
+ - MCP Servers
789
+ summary: Preview an uploaded MCP server template
790
+ description: |-
791
+ Reads an MCP-server template ZIP you uploaded and returns the resource
792
+ docs installing it would create. Nothing is created. Get an upload URL
793
+ from `GET /v1/s3SignedURL?file_type=application/zip`, PUT the ZIP to its
794
+ `signedURL` with the header `x-amz-server-side-encryption: AES256`, then
795
+ pass that call's `runKey` here and to `POST /v1/mcpservers/template`.
796
+
797
+ The install runs the same ZIP checks with the same errors. Integration
798
+ template ZIPs use `GET /v1/integrations/template/preview`, which rejects
799
+ an MCP-server ZIP with a 400 `invalid_template` error.
800
+ parameters:
801
+ - name: runKey
802
+ in: query
803
+ required: true
804
+ description: |-
805
+ The `runKey` returned by `GET /v1/s3SignedURL` for the uploaded
806
+ template ZIP.
807
+ schema:
808
+ type: string
809
+ examples:
810
+ - 78f30205bdda4c4bb2a75eb121172250
811
+ responses:
812
+ '200':
813
+ description: Preview of the resources the install would create.
814
+ content:
815
+ application/json:
816
+ schema:
817
+ $ref: '#/components/schemas/McpServerTemplatePreview'
818
+ examples:
819
+ promptOnly:
820
+ summary: Template with one inline prompt
821
+ value:
822
+ type: mcpserver
823
+ objects:
824
+ - model: McpServer
825
+ doc:
826
+ name: Support assistant
827
+ description: ''
828
+ relativeURI: /support-assistant
829
+ disabled: true
830
+ tools: []
831
+ prompts:
832
+ - name: summarize-ticket
833
+ description: Summarize a support ticket.
834
+ disabled: false
835
+ arguments:
836
+ - name: ticket
837
+ description: Ticket text.
838
+ required: true
839
+ messagesTemplate:
840
+ - role: user
841
+ contentType: text
842
+ template: Summarize {{ticket}}.
843
+ - model: Prompt
844
+ doc:
845
+ name: summarize-ticket
846
+ description: Summarize a support ticket.
847
+ disabled: false
848
+ arguments:
849
+ - name: ticket
850
+ description: Ticket text.
851
+ required: true
852
+ messagesTemplate:
853
+ - role: user
854
+ contentType: text
855
+ template: Summarize {{ticket}}.
856
+ stackRequired: false
857
+ connectionAndFile:
858
+ summary: Template with a connection and a Celigo Storage file
859
+ value:
860
+ type: mcpserver
861
+ objects:
862
+ - model: McpServer
863
+ doc:
864
+ name: Support assistant
865
+ description: ''
866
+ relativeURI: /support-assistant
867
+ disabled: true
868
+ tools: []
869
+ connections:
870
+ - _connectionId: 6ab130000000000000000c01
871
+ requiresEndUserCredentials: false
872
+ resources:
873
+ - fileKey: 6ab130000000000000000f01
874
+ title: Support handbook
875
+ disabled: false
876
+ name: handbook.txt
877
+ mimeType: text/plain
878
+ - model: Connection
879
+ doc:
880
+ _id: 6ab130000000000000000c01
881
+ type: http
882
+ name: Support Desk API
883
+ http:
884
+ mediaType: json
885
+ baseURI: https://api.example.com
886
+ auth:
887
+ type: custom
888
+ - model: McpResource
889
+ doc:
890
+ fileKey: 6ab130000000000000000f01
891
+ title: Support handbook
892
+ disabled: false
893
+ name: handbook.txt
894
+ mimeType: text/plain
895
+ size: 2048
896
+ stackRequired: false
897
+ '400':
898
+ description: |-
899
+ The request or the ZIP is malformed: `runKey` is missing
900
+ (`missing_required_field`); the file is not a readable ZIP, including
901
+ one with two entries of the same name (`MCP_TEMPLATE_INVALID_ZIP`); or
902
+ an entry is invalid (`MCP_TEMPLATE_INVALID_ENTRY` — for example an
903
+ entry path containing `..`, a resource file the manifest declares but
904
+ the ZIP lacks, or a null tool row).
905
+ content:
906
+ application/json:
907
+ schema:
908
+ $ref: '#/components/schemas/Error'
909
+ examples:
910
+ missingRunKey:
911
+ value:
912
+ errors:
913
+ - code: missing_required_field
914
+ message: runKey is required.
915
+ invalidZip:
916
+ value:
917
+ errors:
918
+ - code: MCP_TEMPLATE_INVALID_ZIP
919
+ message: The MCP template zip is damaged or is not a zip file.
920
+ invalidEntry:
921
+ value:
922
+ errors:
923
+ - code: MCP_TEMPLATE_INVALID_ENTRY
924
+ message: The MCP template contains an invalid entry.
925
+ '401':
926
+ $ref: '#/components/responses/401-unauthorized'
927
+ '404':
928
+ description: The `runKey` does not match an uploaded file.
929
+ content:
930
+ application/json:
931
+ schema:
932
+ $ref: '#/components/schemas/Error'
933
+ examples:
934
+ invalidKey:
935
+ value:
936
+ errors:
937
+ - code: invalid_key
938
+ message: We couldn't find any integration template zip file.
939
+ '413':
940
+ description: |-
941
+ The ZIP exceeds an MCP template limit: more than 32 MiB uncompressed in
942
+ total, more than 500 entries, or a JSON entry over 1 MiB.
943
+ content:
944
+ application/json:
945
+ schema:
946
+ $ref: '#/components/schemas/Error'
947
+ examples:
948
+ tooLarge:
949
+ value:
950
+ errors:
951
+ - code: MCP_TEMPLATE_ZIP_TOO_LARGE
952
+ message: The MCP template zip exceeds the allowed size.
953
+ '422':
954
+ description: |-
955
+ The ZIP opened but is not an installable MCP-server template:
956
+ `mcpserver.json` is missing (`invalid_ref`, or `invalid_template` when
957
+ `integration.json` is missing too), a tool the server attaches is not
958
+ packed (`invalid_template`), an attached API or connection document is
959
+ not packed (`MCP_TEMPLATE_DEPENDENCY_MISSING`), or a resource file is
960
+ over 3 MiB or the manifest declares more than 100 of them
961
+ (`MCP_TEMPLATE_RESOURCE_TOO_LARGE`).
962
+ content:
963
+ application/json:
964
+ schema:
965
+ $ref: '#/components/schemas/Error'
966
+ examples:
967
+ noManifest:
968
+ value:
969
+ errors:
970
+ - code: invalid_ref
971
+ message: mcpserver.json not found.
972
+ noManifests:
973
+ value:
974
+ errors:
975
+ - code: invalid_template
976
+ message: integration.json file is missing.
977
+ toolNotPacked:
978
+ value:
979
+ errors:
980
+ - code: invalid_template
981
+ message: MCP server references tool 6ab130000000000000000a01, which is missing from the template zip.
982
+ dependencyMissing:
983
+ value:
984
+ errors:
985
+ - code: MCP_TEMPLATE_DEPENDENCY_MISSING
986
+ message: The MCP template is missing connection 6ab130000000000000000c01.
987
+ resourceTooLarge:
988
+ value:
989
+ errors:
990
+ - code: MCP_TEMPLATE_RESOURCE_TOO_LARGE
991
+ message: Resource file 6ab130000000000000000f02 exceeds the allowed size.
992
+ /v1/mcpservers/template:
993
+ post:
994
+ x-internal: false
995
+ operationId: installMcpServerTemplateFromUpload
996
+ tags:
997
+ - MCP Servers
998
+ summary: Install an uploaded MCP server template
999
+ description: |-
1000
+ Installs an MCP-server template from a ZIP you uploaded with the URL
1001
+ from `GET /v1/s3SignedURL`. The body carries only that call's `runKey`;
1002
+ the server's name and `relativeURI` come from the template. Check the
1003
+ ZIP first with `GET /v1/mcpservers/template/preview`, which runs the
1004
+ same ZIP checks with the same errors and creates nothing.
1005
+
1006
+ The response's `destination` envelope names what was created. A
1007
+ template with only inline prompts creates the MCP server immediately,
1008
+ disabled (`destination.resourceType` is `mcpservers`); when its
1009
+ `relativeURI` is taken, the server gets a `-2`, `-3`, … suffix. A
1010
+ template that also packs dependencies, such as a connection, creates an
1011
+ Integration in install mode instead (`destination.resourceType` is
1012
+ `integrations`), with an install step per packed connection and a last
1013
+ step that copies the template's resources; no MCP server exists yet
1014
+ when the request returns.
1015
+
1016
+ Every request starts a new install, so retrying after a timeout or an
1017
+ ambiguous failure creates a duplicate server or install-mode
1018
+ Integration.
1019
+ x-celigo-ai-guidance:
1020
+ - Never retry this POST after a timeout or an ambiguous failure — each request installs again; a prompt-only template yields a second server with a -2 suffix on its relativeURI, and a template with dependencies a second install-mode Integration.
1021
+ - Branch the follow-up on destination.resourceType — "mcpservers" means the disabled MCP server already exists; "integrations" means the install continues in that Integration's install steps and the server does not exist yet.
1022
+ requestBody:
1023
+ required: true
1024
+ content:
1025
+ application/json:
1026
+ schema:
1027
+ type: object
1028
+ required:
1029
+ - runKey
1030
+ properties:
1031
+ runKey:
1032
+ type: string
1033
+ description: |-
1034
+ The `runKey` returned by `GET /v1/s3SignedURL` for the uploaded
1035
+ template ZIP.
1036
+ examples:
1037
+ - 78f30205bdda4c4bb2a75eb121172250
1038
+ examples:
1039
+ default:
1040
+ value:
1041
+ runKey: 78f30205bdda4c4bb2a75eb121172250
1042
+ responses:
1043
+ '201':
1044
+ description: Installation started.
1045
+ content:
1046
+ application/json:
1047
+ schema:
1048
+ type: object
1049
+ required:
1050
+ - destination
1051
+ properties:
1052
+ destination:
1053
+ type: object
1054
+ description: The resource the install created first.
1055
+ required:
1056
+ - resourceType
1057
+ - resourceId
1058
+ properties:
1059
+ resourceType:
1060
+ type: string
1061
+ enum:
1062
+ - mcpservers
1063
+ - integrations
1064
+ x-enumDescriptions:
1065
+ mcpservers: The disabled MCP server, created immediately from a template with only inline prompts
1066
+ integrations: The install-mode Integration created for a template that packs dependencies, such as a connection
1067
+ description: |-
1068
+ Which resource type the install created — determines
1069
+ where the caller continues the setup.
1070
+ resourceId:
1071
+ type: string
1072
+ format: objectId
1073
+ description: |-
1074
+ The created resource's ID, in the collection named by
1075
+ `resourceType`.
1076
+ examples:
1077
+ promptOnly:
1078
+ summary: Prompt-only template — disabled MCP server
1079
+ value:
1080
+ destination:
1081
+ resourceType: mcpservers
1082
+ resourceId: 6ab130000000000000000d02
1083
+ withConnection:
1084
+ summary: Template with a connection — Integration in install mode
1085
+ value:
1086
+ destination:
1087
+ resourceType: integrations
1088
+ resourceId: 6ab130000000000000000d01
1089
+ '400':
1090
+ description: |-
1091
+ The request or the ZIP is malformed: `runKey` is missing
1092
+ (`missing_required_field`); the file is not a readable ZIP, including
1093
+ one with two entries of the same name (`MCP_TEMPLATE_INVALID_ZIP`); or
1094
+ an entry is invalid (`MCP_TEMPLATE_INVALID_ENTRY` — for example an
1095
+ entry path containing `..`, a resource file the manifest declares but
1096
+ the ZIP lacks, or a null tool row).
1097
+ content:
1098
+ application/json:
1099
+ schema:
1100
+ $ref: '#/components/schemas/Error'
1101
+ examples:
1102
+ missingRunKey:
1103
+ value:
1104
+ errors:
1105
+ - code: missing_required_field
1106
+ message: runKey is required.
1107
+ invalidZip:
1108
+ value:
1109
+ errors:
1110
+ - code: MCP_TEMPLATE_INVALID_ZIP
1111
+ message: The MCP template zip is damaged or is not a zip file.
1112
+ invalidEntry:
1113
+ value:
1114
+ errors:
1115
+ - code: MCP_TEMPLATE_INVALID_ENTRY
1116
+ message: The MCP template contains an invalid entry.
1117
+ '401':
1118
+ $ref: '#/components/responses/401-unauthorized'
1119
+ '404':
1120
+ description: The `runKey` does not match an uploaded file.
1121
+ content:
1122
+ application/json:
1123
+ schema:
1124
+ $ref: '#/components/schemas/Error'
1125
+ examples:
1126
+ invalidKey:
1127
+ value:
1128
+ errors:
1129
+ - code: invalid_key
1130
+ message: We couldn't find any integration template zip file.
1131
+ '413':
1132
+ description: |-
1133
+ The ZIP exceeds an MCP template limit: more than 32 MiB uncompressed in
1134
+ total, more than 500 entries, or a JSON entry over 1 MiB.
1135
+ content:
1136
+ application/json:
1137
+ schema:
1138
+ $ref: '#/components/schemas/Error'
1139
+ examples:
1140
+ tooLarge:
1141
+ value:
1142
+ errors:
1143
+ - code: MCP_TEMPLATE_ZIP_TOO_LARGE
1144
+ message: The MCP template zip exceeds the allowed size.
1145
+ '422':
1146
+ description: |-
1147
+ The ZIP is not an installable MCP-server template, so nothing was
1148
+ created: the same checks and codes as the preview (`invalid_ref`,
1149
+ `invalid_template`, `MCP_TEMPLATE_DEPENDENCY_MISSING`,
1150
+ `MCP_TEMPLATE_RESOURCE_TOO_LARGE`). Retrying with the same ZIP fails
1151
+ the same way.
1152
+ content:
1153
+ application/json:
1154
+ schema:
1155
+ $ref: '#/components/schemas/Error'
1156
+ examples:
1157
+ noManifest:
1158
+ value:
1159
+ errors:
1160
+ - code: invalid_ref
1161
+ message: mcpserver.json not found.
1162
+ dependencyMissing:
1163
+ value:
1164
+ errors:
1165
+ - code: MCP_TEMPLATE_DEPENDENCY_MISSING
1166
+ message: The MCP template is missing connection 6ab130000000000000000c01.
783
1167
  /v1/mcpservers/template/{_templateId}:
784
1168
  post:
785
1169
  x-internal: false
@@ -4159,6 +4543,64 @@ components:
4159
4543
  minItems: 1
4160
4544
  items:
4161
4545
  $ref: '#/components/schemas/JsonPatchOperation'
4546
+ McpServerTemplatePreview:
4547
+ type: object
4548
+ description: |-
4549
+ What installing an uploaded MCP-server template ZIP would create.
4550
+ `objects[]` lists each resource doc tagged by `model`. Packed docs keep
4551
+ the template's placeholder ids; the install assigns new ones.
4552
+ required:
4553
+ - type
4554
+ - objects
4555
+ - stackRequired
4556
+ properties:
4557
+ type:
4558
+ type: string
4559
+ enum:
4560
+ - mcpserver
4561
+ x-enumDescriptions:
4562
+ mcpserver: The ZIP is an MCP-server template; install it with `POST /v1/mcpservers/template`
4563
+ description: |-
4564
+ Kind of template the uploaded ZIP holds. Always `mcpserver` on this
4565
+ route — a ZIP without `mcpserver.json`, such as an integration
4566
+ template, is rejected before a preview is built.
4567
+ examples:
4568
+ - mcpserver
4569
+ objects:
4570
+ type: array
4571
+ description: |-
4572
+ Resource docs the install would create, in order: the `McpServer`
4573
+ doc, then each document packed in the ZIP (a `Connection`, for
4574
+ example), then one `Prompt` entry per inline prompt and one
4575
+ `McpResource` entry per Celigo Storage file the server serves. The
4576
+ ZIP's `integration.json` is never listed.
4577
+ items:
4578
+ type: object
4579
+ description: One resource doc tagged with its model type.
4580
+ required:
4581
+ - model
4582
+ - doc
4583
+ properties:
4584
+ model:
4585
+ type: string
4586
+ description: |-
4587
+ Resource class this doc describes: `McpServer`, `Prompt`, or
4588
+ `McpResource` for the server and what it serves, otherwise the
4589
+ model of the packed document, such as `Connection`.
4590
+ examples:
4591
+ - Connection
4592
+ doc:
4593
+ type: object
4594
+ description: |-
4595
+ The resource document as packed in the template. The `McpServer`
4596
+ doc has no `_id`; an `McpResource` doc also carries the file's
4597
+ `size` in bytes.
4598
+ additionalProperties: true
4599
+ stackRequired:
4600
+ type: boolean
4601
+ description: |-
4602
+ When true, the template packs something that runs on a stack, such
4603
+ as a wrapper connection.
4162
4604
  DependencyEntry:
4163
4605
  type: object
4164
4606
  description: A single resource that depends on the queried resource.
package/dist/template.yml CHANGED
@@ -511,6 +511,12 @@ paths:
511
511
  Previews the resources that would be created by installing a template
512
512
  from an uploaded zip file. The `runKey` query parameter ties this request
513
513
  to a previously uploaded zip (obtained from `GET /v1/s3SignedURL`).
514
+
515
+ The zip must be at most 1 MB, and its entries at most 64 MB once
516
+ uncompressed; the preview applies the same checks as
517
+ `POST /v1/integrations/template`. An MCP server template (a zip with a
518
+ root `mcpserver.json`) is refused here: preview it with
519
+ `GET /v1/mcpservers/template/preview`.
514
520
  parameters:
515
521
  - name: runKey
516
522
  in: query
@@ -535,6 +541,7 @@ paths:
535
541
  preview:
536
542
  summary: Template that creates an integration and one connection
537
543
  value:
544
+ type: integration
538
545
  stackRequired: false
539
546
  objects:
540
547
  - model: Integration
@@ -551,7 +558,10 @@ paths:
551
558
  wsdlVersion: '2020.2'
552
559
  concurrencyLevel: 1
553
560
  '400':
554
- description: Missing required `runKey` query parameter.
561
+ description: |-
562
+ Missing required `runKey` query parameter, the uploaded zip is larger
563
+ than 1 MB (`invalid_zip`), or the zip is an MCP server template
564
+ (`invalid_template`).
555
565
  content:
556
566
  application/json:
557
567
  schema:
@@ -562,6 +572,17 @@ paths:
562
572
  errors:
563
573
  - code: missing_required_field
564
574
  message: runKey is required.
575
+ zipTooLarge:
576
+ value:
577
+ errors:
578
+ - code: invalid_zip
579
+ message: Template can't be imported as the maximum allowed zip file size is 1 MB. Please re-import a new zip file.
580
+ mcpServerTemplate:
581
+ summary: A zip with a root mcpserver.json
582
+ value:
583
+ errors:
584
+ - code: invalid_template
585
+ message: MCP server templates cannot be installed through the Integration template path. Use Upload MCP.
565
586
  '401':
566
587
  $ref: '#/components/responses/401-unauthorized'
567
588
  '403':
@@ -577,7 +598,26 @@ paths:
577
598
  value:
578
599
  errors:
579
600
  - code: invalid_key
580
- message: The specified runKey was not found.
601
+ message: We couldn't find any integration template zip file.
602
+ '422':
603
+ description: |-
604
+ The zip's entries exceed 64 MB uncompressed (`invalid_zip`), or an entry
605
+ is corrupted (`corrupted_file`).
606
+ content:
607
+ application/json:
608
+ schema:
609
+ $ref: '#/components/schemas/Error'
610
+ examples:
611
+ uncompressedTooLarge:
612
+ value:
613
+ errors:
614
+ - code: invalid_zip
615
+ message: Template can't be imported as the uncompressed zip contents exceed the maximum allowed size. Please re-import a smaller zip file.
616
+ corrupted:
617
+ value:
618
+ errors:
619
+ - code: corrupted_file
620
+ message: Looks like the uploaded zip is corrupted. Please contact Celigo support if the issue persists.
581
621
  /v1/integrations/template:
582
622
  post:
583
623
  x-internal: false
@@ -594,6 +634,12 @@ paths:
594
634
  installed integration receives new connection `_id`s. Configure each
595
635
  connection in the new integration before running its flows; connection
596
636
  `_id`s that existed only in the zip are not preserved.
637
+
638
+ The zip must be at most 1 MB, and its entries at most 64 MB once
639
+ uncompressed. A zip that breaks either limit, or holds a corrupted entry,
640
+ is refused before anything is created. So is an MCP server template (a
641
+ zip with a root `mcpserver.json`): install it with
642
+ `POST /v1/mcpservers/template`.
597
643
  requestBody:
598
644
  required: true
599
645
  content:
@@ -626,21 +672,43 @@ paths:
626
672
  value:
627
673
  runKey: abc123def456
628
674
  responses:
629
- '200':
630
- description: Template installed from uploaded zip.
675
+ '201':
676
+ description: |-
677
+ Template installed. Each entry names a document the install created;
678
+ the `Integration` entry is the new integration.
631
679
  content:
632
680
  application/json:
633
681
  schema:
634
- type: object
635
- description: The created integration and related resources.
636
- additionalProperties: true
682
+ type: array
683
+ items:
684
+ type: object
685
+ required:
686
+ - model
687
+ - _id
688
+ properties:
689
+ model:
690
+ type: string
691
+ description: Model of the created document.
692
+ examples:
693
+ - Integration
694
+ _id:
695
+ type: string
696
+ format: objectId
697
+ description: Id of the created document.
698
+ examples:
699
+ - 6405b9d73496e05ff253d587
637
700
  examples:
638
701
  installed:
639
702
  summary: Integration created from the uploaded zip
640
703
  value:
641
- _integrationId: 6405b9d73496e05ff253d587
704
+ - model: Integration
705
+ _id: 6405b9d73496e05ff253d587
642
706
  '400':
643
- description: Missing required `runKey` in request body.
707
+ description: |-
708
+ Missing required `runKey` in request body, the uploaded zip is larger
709
+ than 1 MB (`invalid_zip`), the zip is an MCP server template
710
+ (`invalid_template`), or the preview reports `stackRequired: true` and
711
+ the body has no `_stackId` (`stack_not_found`).
644
712
  content:
645
713
  application/json:
646
714
  schema:
@@ -651,12 +719,31 @@ paths:
651
719
  errors:
652
720
  - code: missing_required_field
653
721
  message: runKey is required.
722
+ zipTooLarge:
723
+ value:
724
+ errors:
725
+ - code: invalid_zip
726
+ message: Template can't be imported as the maximum allowed zip file size is 1 MB. Please re-import a new zip file.
727
+ mcpServerTemplate:
728
+ summary: A zip with a root mcpserver.json
729
+ value:
730
+ errors:
731
+ - code: invalid_template
732
+ message: MCP server templates cannot be installed through the Integration template path. Use Upload MCP.
733
+ stackMissing:
734
+ summary: The zip has a stack hook and the body has no _stackId
735
+ value:
736
+ errors:
737
+ - code: stack_not_found
738
+ message: The integration template has stack reference but _stackId not found in the request body.
654
739
  '401':
655
740
  $ref: '#/components/responses/401-unauthorized'
656
741
  '403':
657
742
  $ref: '#/components/responses/403-cannot-install'
658
743
  '404':
659
- description: The `runKey` does not match any uploaded zip.
744
+ description: |-
745
+ The `runKey` does not match any uploaded zip (`invalid_key`), or
746
+ `_stackId` matches no stack (`stack_not_found`).
660
747
  content:
661
748
  application/json:
662
749
  schema:
@@ -666,7 +753,31 @@ paths:
666
753
  value:
667
754
  errors:
668
755
  - code: invalid_key
669
- message: The specified runKey was not found.
756
+ message: We couldn't find any integration template zip file.
757
+ unknownStack:
758
+ value:
759
+ errors:
760
+ - code: stack_not_found
761
+ message: 'Failed to create the integration using the integration template provided as no stack found with _id: ''000000000000000000000000''.'
762
+ '422':
763
+ description: |-
764
+ The zip's entries exceed 64 MB uncompressed (`invalid_zip`), or an entry
765
+ is corrupted (`corrupted_file`). Nothing is installed.
766
+ content:
767
+ application/json:
768
+ schema:
769
+ $ref: '#/components/schemas/Error'
770
+ examples:
771
+ uncompressedTooLarge:
772
+ value:
773
+ errors:
774
+ - code: invalid_zip
775
+ message: Template can't be imported as the uncompressed zip contents exceed the maximum allowed size. Please re-import a smaller zip file.
776
+ corrupted:
777
+ value:
778
+ errors:
779
+ - code: corrupted_file
780
+ message: Looks like the uploaded zip is corrupted. Please contact Celigo support if the issue persists.
670
781
  components:
671
782
  securitySchemes:
672
783
  bearerAuth:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@celigo/api-specs",
3
- "version": "0.2.201",
3
+ "version": "0.2.202",
4
4
  "private": false,
5
5
  "description": "Public OpenAPI bundles (dist/) and the celigo-cli lint schema pack (schemas.json).",
6
6
  "keywords": [
package/schemas.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "provenance": {
3
3
  "repo": "celigo/integrator-api-specs",
4
- "iasCommit": "2a2728aa",
4
+ "iasCommit": "4a026a0b",
5
5
  "generatedAt": "2026-10-28"
6
6
  },
7
7
  "roots": {