@celigo/api-specs 0.2.201 → 0.2.203
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/agent.yml +80 -13
- package/dist/alert.yml +36 -7
- package/dist/audit.yml +26 -25
- package/dist/editransaction.yml +534 -5
- package/dist/export.yml +17 -6
- package/dist/filedefinition.yml +26 -17
- package/dist/filedefinitionrules.yml +98 -21
- package/dist/fileserver.yml +615 -101
- package/dist/filestorage.yml +826 -19
- package/dist/flow.yml +308 -23
- package/dist/integration.yml +50 -18
- package/dist/job.yml +71 -32
- package/dist/mcp-server.yml +442 -0
- package/dist/processor.yml +93 -2
- package/dist/template.yml +122 -11
- package/dist/tool.yml +57 -12
- package/package.json +1 -1
- package/schemas.json +1 -1
package/dist/job.yml
CHANGED
|
@@ -48,9 +48,10 @@ paths:
|
|
|
48
48
|
Exception: for a caller with integration-only access, `_flowId` scopes
|
|
49
49
|
a `type=flow` or `type=retry` query only together with
|
|
50
50
|
`_integrationId` (below).
|
|
51
|
-
- **Child jobs** (`type=export` or `type=
|
|
52
|
-
`_flowJobId` or a resource ID filter (`_exportId` / `_importId
|
|
53
|
-
|
|
51
|
+
- **Child jobs** (`type=export`, `type=import`, or `type=tool`) — requires
|
|
52
|
+
`_flowJobId` or a resource ID filter (`_exportId` / `_importId`; for
|
|
53
|
+
`tool` jobs, `_importId` is the `ToolImport`'s id). Returns the step
|
|
54
|
+
jobs within a parent flow job.
|
|
54
55
|
|
|
55
56
|
Job reads are authorized per integration. For a caller with
|
|
56
57
|
integration-only access (an account share that populates
|
|
@@ -71,6 +72,11 @@ paths:
|
|
|
71
72
|
forward, take the `createdAt` of the last record, subtract 1 ms, and
|
|
72
73
|
pass it as `createdAt_lte`.
|
|
73
74
|
|
|
75
|
+
The query is validated strictly: a parameter the endpoint does not support
|
|
76
|
+
fails with `422 invalid_query_params` naming it, and a malformed value — an
|
|
77
|
+
unrecognized `type` or `status`, a non-numeric count filter, an unparseable
|
|
78
|
+
date, or a plain string where an array is expected — fails with `400`.
|
|
79
|
+
|
|
74
80
|
A `queued` or `running` job created outside `createdAt_gte` /
|
|
75
81
|
`createdAt_lte` is left out of a date-filtered list.
|
|
76
82
|
parameters:
|
|
@@ -126,27 +132,27 @@ paths:
|
|
|
126
132
|
- 69f54d6f47185f8c7a500597
|
|
127
133
|
description: |-
|
|
128
134
|
Filter by parent flow-job ID. Satisfies the required-param check.
|
|
129
|
-
Required when querying child jobs (`type=export
|
|
130
|
-
|
|
135
|
+
Required when querying child jobs (`type=export`, `type=import`, or
|
|
136
|
+
`type=tool`).
|
|
137
|
+
- name: _flowId_in[]
|
|
131
138
|
in: query
|
|
139
|
+
style: form
|
|
140
|
+
explode: true
|
|
132
141
|
schema:
|
|
133
|
-
type:
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
filter but does **not** satisfy the required-param check alone.
|
|
139
|
-
`flowId_in` (without underscore) is accepted as an alias.
|
|
140
|
-
- name: status_in
|
|
141
|
-
in: query
|
|
142
|
-
schema:
|
|
143
|
-
type: string
|
|
142
|
+
type: array
|
|
143
|
+
items:
|
|
144
|
+
type: string
|
|
145
|
+
format: objectId
|
|
146
|
+
x-celigo-refModel: flows
|
|
144
147
|
examples:
|
|
145
|
-
-
|
|
148
|
+
- - 69f54d6b7009ea11abad707a
|
|
149
|
+
- 69e83e7a75f7f8c14a12916e
|
|
146
150
|
description: |-
|
|
147
|
-
|
|
148
|
-
`
|
|
149
|
-
|
|
151
|
+
Flow IDs to match, sent as one `_flowId_in[]=<id>` pair per ID (indexed
|
|
152
|
+
`_flowId_in[0]=<id>` also works). A plain `_flowId_in=<id>` value —
|
|
153
|
+
including a comma-separated list — fails with `400 invalid_query_param`.
|
|
154
|
+
Works as an additional filter but does **not** satisfy the
|
|
155
|
+
required-param check alone.
|
|
150
156
|
- name: createdAt_lte
|
|
151
157
|
in: query
|
|
152
158
|
schema:
|
|
@@ -245,17 +251,19 @@ paths:
|
|
|
245
251
|
- import
|
|
246
252
|
- retry
|
|
247
253
|
- bulk_retry
|
|
254
|
+
- tool
|
|
248
255
|
x-enumDescriptions:
|
|
249
256
|
flow: A parent flow-run job that orchestrates the full pipeline.
|
|
250
257
|
export: A child job for an export step within a flow run.
|
|
251
258
|
import: A child job for an import step within a flow run.
|
|
252
259
|
retry: A retry of a single failed record from a previous job.
|
|
253
260
|
bulk_retry: A bulk retry of multiple failed records from a previous job.
|
|
261
|
+
tool: A child job for a Tool step (a `ToolImport`) within a flow run.
|
|
254
262
|
description: |-
|
|
255
263
|
Filter by job type. `flow`, `retry`, and `bulk_retry` are
|
|
256
|
-
parent-level jobs; `export` and `
|
|
257
|
-
`_flowJobId` or a resource-ID filter).
|
|
258
|
-
|
|
264
|
+
parent-level jobs; `export`, `import`, and `tool` are child jobs
|
|
265
|
+
(require `_flowJobId` or a resource-ID filter). An unrecognized value
|
|
266
|
+
fails with `400 invalid_url` ("type is not valid.").
|
|
259
267
|
responses:
|
|
260
268
|
'200':
|
|
261
269
|
description: Array of job records matching the filters.
|
|
@@ -319,7 +327,13 @@ paths:
|
|
|
319
327
|
'204':
|
|
320
328
|
description: No jobs match the given filters.
|
|
321
329
|
'400':
|
|
322
|
-
description:
|
|
330
|
+
description: |-
|
|
331
|
+
Required query parameters are missing (`invalid_query`), or a value is
|
|
332
|
+
malformed: an unrecognized `status` or a non-numeric `numSuccess_*` /
|
|
333
|
+
`numIgnore_*` filter (`invalid_query_param`), an array parameter sent as
|
|
334
|
+
a plain string (`invalid_query_param`), an unrecognized `type` or a
|
|
335
|
+
non-numeric `numError_*` filter (`invalid_url`), or an unparseable date
|
|
336
|
+
(`invalid_field`).
|
|
323
337
|
content:
|
|
324
338
|
application/json:
|
|
325
339
|
schema:
|
|
@@ -349,6 +363,24 @@ paths:
|
|
|
349
363
|
errors:
|
|
350
364
|
- code: invalid_query_param
|
|
351
365
|
message: The query parameter "status" has invalid value.
|
|
366
|
+
array_as_string:
|
|
367
|
+
summary: Array parameter sent as a plain value
|
|
368
|
+
value:
|
|
369
|
+
errors:
|
|
370
|
+
- code: invalid_query_param
|
|
371
|
+
message: The query parameter _flowId_in must be an array. Repeat the parameter for each value, e.g. _flowId_in[0]=value1&_flowId_in[1]=value2.
|
|
372
|
+
invalid_type:
|
|
373
|
+
summary: Unrecognized type value
|
|
374
|
+
value:
|
|
375
|
+
errors:
|
|
376
|
+
- code: invalid_url
|
|
377
|
+
message: type is not valid.
|
|
378
|
+
invalid_date:
|
|
379
|
+
summary: Unparseable date filter
|
|
380
|
+
value:
|
|
381
|
+
errors:
|
|
382
|
+
- code: invalid_field
|
|
383
|
+
message: 'The value provided for the field: ''createdAt_gte'' is invalid.'
|
|
352
384
|
'401':
|
|
353
385
|
$ref: '#/components/responses/401-unauthorized'
|
|
354
386
|
'422':
|
|
@@ -1323,9 +1355,9 @@ components:
|
|
|
1323
1355
|
A job represents one execution of a flow/export/import (or a retry) in integrator.io.
|
|
1324
1356
|
Jobs are read-only records created by the platform when executions occur.
|
|
1325
1357
|
|
|
1326
|
-
Parent jobs (`type: flow`) carry aggregate counters; child jobs (`type: export` or
|
|
1327
|
-
carry per-step counters -- do not sum both to avoid double-counting. `_exportId` on a
|
|
1328
|
-
flow job references the page-generator export, not all exports in the flow.
|
|
1358
|
+
Parent jobs (`type: flow`) carry aggregate counters; child jobs (`type: export`, `import`, or
|
|
1359
|
+
`tool`) carry per-step counters -- do not sum both to avoid double-counting. `_exportId` on a
|
|
1360
|
+
parent flow job references the page-generator export, not all exports in the flow.
|
|
1329
1361
|
allOf:
|
|
1330
1362
|
- $ref: '#/components/schemas/ResourceResponse'
|
|
1331
1363
|
- type: object
|
|
@@ -1340,6 +1372,7 @@ components:
|
|
|
1340
1372
|
- flow
|
|
1341
1373
|
- retry
|
|
1342
1374
|
- bulk_retry
|
|
1375
|
+
- tool
|
|
1343
1376
|
x-enumDescriptions:
|
|
1344
1377
|
export: |-
|
|
1345
1378
|
A child job for an export step within a flow run: the flow's source export, or a
|
|
@@ -1349,10 +1382,14 @@ components:
|
|
|
1349
1382
|
flow: A parent flow-run job that orchestrates the full pipeline.
|
|
1350
1383
|
retry: A retry of a single failed record from a previous job.
|
|
1351
1384
|
bulk_retry: A bulk retry of multiple failed records from a previous job.
|
|
1385
|
+
tool: |-
|
|
1386
|
+
A child job for a Tool step (a `ToolImport`) within a flow run. A lookup step inside
|
|
1387
|
+
the Tool gets its own `export` child job under the same flow job.
|
|
1352
1388
|
x-celigo-ai-guidance:
|
|
1353
1389
|
- |-
|
|
1354
1390
|
- `flow`: a flow run (parent job)
|
|
1355
1391
|
- `export` / `import`: child jobs for an export/import step
|
|
1392
|
+
- `tool`: child job for a Tool step (`ToolImport`); a lookup step inside the Tool is listed as its own `export` child job of the same flow job
|
|
1356
1393
|
- `retry` / `bulk_retry`: error management retries
|
|
1357
1394
|
status:
|
|
1358
1395
|
type: string
|
|
@@ -1414,8 +1451,9 @@ components:
|
|
|
1414
1451
|
readOnly: true
|
|
1415
1452
|
description: |-
|
|
1416
1453
|
The export or import resource ID for this child job. Present on child
|
|
1417
|
-
jobs (`type: export` or `
|
|
1418
|
-
|
|
1454
|
+
jobs (`type: export`, `import`, or `tool`) — check `type`: an `export` job
|
|
1455
|
+
references an export, an `import` job an import, and a `tool` job the
|
|
1456
|
+
`ToolImport` that ran the Tool.
|
|
1419
1457
|
examples:
|
|
1420
1458
|
- 69f54d6c1e7f3a22cc7848b2
|
|
1421
1459
|
_retryOfJobId:
|
|
@@ -1507,8 +1545,8 @@ components:
|
|
|
1507
1545
|
chained into this one; absent on event-driven runs (webhook, real-time listener, and
|
|
1508
1546
|
stream page generators), which the inbound event starts. On a `retry` job: `auto`
|
|
1509
1547
|
for the platform's automatic intermittent-error retry, otherwise the `_id` of the
|
|
1510
|
-
user who submitted the retry. Absent on `export` and `
|
|
1511
|
-
parent flow job carries it.
|
|
1548
|
+
user who submitted the retry. Absent on `export`, `import`, and `tool` child jobs —
|
|
1549
|
+
the parent flow job carries it.
|
|
1512
1550
|
examples:
|
|
1513
1551
|
- system
|
|
1514
1552
|
canceledBy:
|
|
@@ -1565,7 +1603,8 @@ components:
|
|
|
1565
1603
|
description: |-
|
|
1566
1604
|
Number of records processed successfully. On a parent flow job (`type: flow`) this is the
|
|
1567
1605
|
sum across every step in the run, so one record that passes through an export and an import
|
|
1568
|
-
counts twice. On a child job (`type: export` or `
|
|
1606
|
+
counts twice. On a child job (`type: export`, `import`, or `tool`) it is that step's count
|
|
1607
|
+
alone.
|
|
1569
1608
|
For per-step counts, read the run with `GET /v1/jobs/{_id}/family` or list its children with
|
|
1570
1609
|
`GET /v1/jobs?_flowJobId={_id}&type=import`.
|
|
1571
1610
|
examples:
|
package/dist/mcp-server.yml
CHANGED
|
@@ -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.
|