@celigo/api-specs 0.2.93 → 0.2.94
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/account.yml +255 -52
- package/dist/api.yml +15 -3
- package/dist/connection.yml +31 -4
- package/dist/enduser.yml +15 -3
- package/dist/filestorage.yml +259 -174
- package/dist/integration.yml +4 -3
- package/dist/mcp-server.yml +15 -3
- package/dist/sync.yml +55 -10
- package/dist/tool.yml +15 -3
- package/package.json +1 -1
- package/schemas.json +1 -1
package/dist/filestorage.yml
CHANGED
|
@@ -17,7 +17,7 @@ security:
|
|
|
17
17
|
tags:
|
|
18
18
|
- name: File Storage
|
|
19
19
|
description: |-
|
|
20
|
-
Celigo Storage is managed file storage built into integrator.io for staging files between flows and giving integrations persistent files to work with. Organize content into files and folders, transfer bytes directly through short-lived presigned S3 URLs, and reference stored files from flows. Items are addressed by `_id` and placed by parent folder; renames and moves keep the `_id` stable, and deletes go to a 30-day recycle bin before they can be purged.
|
|
20
|
+
Celigo Storage is managed file storage built into integrator.io for staging files between flows and giving integrations persistent files to work with. Organize content into files and folders, transfer bytes directly through short-lived presigned S3 URLs, and reference stored files from flows. Items are addressed by `_id` and placed by parent folder, where names are unique among live items; renames and moves keep the `_id` stable, and deletes go to a 30-day recycle bin before they can be purged.
|
|
21
21
|
|
|
22
22
|
## Storage item schema
|
|
23
23
|
|
|
@@ -35,10 +35,14 @@ paths:
|
|
|
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
37
|
active once S3 confirms it; no further API call is needed. Each URL's
|
|
38
|
-
lifetime is in its `X-Amz-Expires` parameter;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
while
|
|
38
|
+
lifetime is in its `X-Amz-Expires` parameter; once every part already
|
|
39
|
+
issued has been uploaded, a multipart upload fetches further part URLs by
|
|
40
|
+
posting again with the item's `_id`, `uploadId`, and `issuedPartsCount`,
|
|
41
|
+
while an expired single PUT URL cannot be reissued.
|
|
42
|
+
Each file is validated independently, so the response can mix per-file
|
|
43
|
+
successes and failures while the request itself returns 200 — a name
|
|
44
|
+
already held by a live item in the target folder fails that entry with
|
|
45
|
+
409 `STORAGE_ITEM_ALREADY_EXISTS`.
|
|
42
46
|
operationId: initiateStorageUpload
|
|
43
47
|
tags:
|
|
44
48
|
- File Storage
|
|
@@ -86,7 +90,7 @@ paths:
|
|
|
86
90
|
$ref: '#/components/schemas/InitiateUploadResponse'
|
|
87
91
|
examples:
|
|
88
92
|
mixed:
|
|
89
|
-
summary: Single success, multipart success, and
|
|
93
|
+
summary: Single success, multipart success, and two rejections
|
|
90
94
|
value:
|
|
91
95
|
files:
|
|
92
96
|
- _id: 683b2a0e1c3d5f001a9e8b01
|
|
@@ -112,70 +116,11 @@ paths:
|
|
|
112
116
|
errors:
|
|
113
117
|
- code: STORAGE_INVALID_MIME_TYPE
|
|
114
118
|
message: Invalid MIME type
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
$ref: '#/components/responses/403-forbidden'
|
|
121
|
-
'404':
|
|
122
|
-
$ref: '#/components/responses/404-not-found'
|
|
123
|
-
'422':
|
|
124
|
-
$ref: '#/components/responses/422-unprocessable-entity'
|
|
125
|
-
/v1/storage/files/refresh-urls:
|
|
126
|
-
post:
|
|
127
|
-
x-internal: false
|
|
128
|
-
summary: Refresh upload URLs
|
|
129
|
-
description: |-
|
|
130
|
-
Reissues presigned upload URLs for pending uploads whose URLs have
|
|
131
|
-
expired (each URL's lifetime is in its `X-Amz-Expires` parameter). For a
|
|
132
|
-
single PUT, returns a fresh upload URL; for multipart, returns fresh URLs
|
|
133
|
-
for the requested part numbers plus the complete URL. Already-uploaded
|
|
134
|
-
parts are preserved. Each item is processed independently.
|
|
135
|
-
operationId: refreshStorageUploadUrls
|
|
136
|
-
tags:
|
|
137
|
-
- File Storage
|
|
138
|
-
requestBody:
|
|
139
|
-
required: true
|
|
140
|
-
content:
|
|
141
|
-
application/json:
|
|
142
|
-
schema:
|
|
143
|
-
$ref: '#/components/schemas/RefreshUrlsRequest'
|
|
144
|
-
examples:
|
|
145
|
-
mixed:
|
|
146
|
-
summary: Refresh a single PUT and a multipart batch
|
|
147
|
-
value:
|
|
148
|
-
items:
|
|
149
|
-
- _id: 683b2a0e1c3d5f001a9e8b01
|
|
150
|
-
uploadType: single
|
|
151
|
-
- _id: 683b2a0e1c3d5f001a9e8b03
|
|
152
|
-
uploadType: multipart
|
|
153
|
-
uploadId: abcD12efGHIjklMN3opQrst
|
|
154
|
-
partNumbers:
|
|
155
|
-
- 3
|
|
156
|
-
- 4
|
|
157
|
-
- 5
|
|
158
|
-
responses:
|
|
159
|
-
'200':
|
|
160
|
-
description: Per-item refreshed upload instructions.
|
|
161
|
-
content:
|
|
162
|
-
application/json:
|
|
163
|
-
schema:
|
|
164
|
-
$ref: '#/components/schemas/RefreshUrlsResponse'
|
|
165
|
-
examples:
|
|
166
|
-
default:
|
|
167
|
-
value:
|
|
168
|
-
items:
|
|
169
|
-
- _id: 683b2a0e1c3d5f001a9e8b03
|
|
170
|
-
name: database-export.sql
|
|
171
|
-
statusCode: 200
|
|
172
|
-
body:
|
|
173
|
-
uploadType: multipart
|
|
174
|
-
uploadId: abcD12efGHIjklMN3opQrst
|
|
175
|
-
partUrls:
|
|
176
|
-
- partNumber: 3
|
|
177
|
-
url: https://integrator-file-storage.s3.us-west-2.amazonaws.com/fresh-part-3
|
|
178
|
-
completeUrl: https://integrator-file-storage.s3.us-west-2.amazonaws.com/fresh-complete
|
|
119
|
+
- name: orders.csv
|
|
120
|
+
statusCode: 409
|
|
121
|
+
errors:
|
|
122
|
+
- code: STORAGE_ITEM_ALREADY_EXISTS
|
|
123
|
+
message: An item named "orders.csv" already exists in this folder
|
|
179
124
|
'400':
|
|
180
125
|
$ref: '#/components/responses/400-bad-request'
|
|
181
126
|
'401':
|
|
@@ -406,7 +351,9 @@ paths:
|
|
|
406
351
|
required: false
|
|
407
352
|
description: |-
|
|
408
353
|
Folder whose direct children to list. Omit for the account root.
|
|
409
|
-
Ignored in search mode.
|
|
354
|
+
Ignored in search mode. An id that names no item answers 404
|
|
355
|
+
`STORAGE_PARENT_NOT_FOUND`; a file's id answers 422
|
|
356
|
+
`STORAGE_PARENT_NOT_FOLDER`.
|
|
410
357
|
schema:
|
|
411
358
|
type: string
|
|
412
359
|
format: objectId
|
|
@@ -721,16 +668,41 @@ paths:
|
|
|
721
668
|
'403':
|
|
722
669
|
$ref: '#/components/responses/403-forbidden'
|
|
723
670
|
'404':
|
|
724
|
-
|
|
671
|
+
description: |-
|
|
672
|
+
`_parentId` names no item in the account. Error code:
|
|
673
|
+
`STORAGE_PARENT_NOT_FOUND`.
|
|
674
|
+
content:
|
|
675
|
+
application/json:
|
|
676
|
+
schema:
|
|
677
|
+
$ref: '#/components/schemas/Error'
|
|
678
|
+
examples:
|
|
679
|
+
parentNotFound:
|
|
680
|
+
value:
|
|
681
|
+
errors:
|
|
682
|
+
- code: STORAGE_PARENT_NOT_FOUND
|
|
683
|
+
message: Parent folder not found
|
|
725
684
|
'422':
|
|
726
685
|
description: |-
|
|
727
686
|
A filter is malformed or two filters that cannot be combined were
|
|
728
|
-
sent together
|
|
687
|
+
sent together (`STORAGE_INVALID_FILTER`), or `_parentId` is a file
|
|
688
|
+
rather than a folder (`STORAGE_PARENT_NOT_FOLDER`).
|
|
729
689
|
content:
|
|
730
690
|
application/json:
|
|
731
691
|
schema:
|
|
732
692
|
$ref: '#/components/schemas/Error'
|
|
733
693
|
examples:
|
|
694
|
+
parentNotFolder:
|
|
695
|
+
summary: _parentId is a file
|
|
696
|
+
value:
|
|
697
|
+
errors:
|
|
698
|
+
- code: STORAGE_PARENT_NOT_FOLDER
|
|
699
|
+
message: Parent must be a folder
|
|
700
|
+
invalidParentId:
|
|
701
|
+
summary: _parentId is not an ObjectId
|
|
702
|
+
value:
|
|
703
|
+
errors:
|
|
704
|
+
- code: STORAGE_INVALID_FILTER
|
|
705
|
+
message: _parentId must be a valid ObjectId
|
|
734
706
|
invalidMimeType:
|
|
735
707
|
summary: Media type is not a valid type/subtype pair
|
|
736
708
|
value:
|
|
@@ -755,7 +727,9 @@ paths:
|
|
|
755
727
|
description: |-
|
|
756
728
|
Creates an empty folder. Folders are organizational only — they hold no
|
|
757
729
|
content and do not count against storage quota. To create files, use
|
|
758
|
-
`POST /v1/storage/files/initiateUpload`.
|
|
730
|
+
`POST /v1/storage/files/initiateUpload`. A name already held by a live
|
|
731
|
+
file or folder in the parent is rejected with 409
|
|
732
|
+
`STORAGE_ITEM_ALREADY_EXISTS`.
|
|
759
733
|
operationId: createStorageFolder
|
|
760
734
|
tags:
|
|
761
735
|
- File Storage
|
|
@@ -808,6 +782,20 @@ paths:
|
|
|
808
782
|
$ref: '#/components/responses/403-forbidden'
|
|
809
783
|
'404':
|
|
810
784
|
$ref: '#/components/responses/404-not-found'
|
|
785
|
+
'409':
|
|
786
|
+
description: |-
|
|
787
|
+
A live file or folder with this name already exists in the parent.
|
|
788
|
+
Error code: `STORAGE_ITEM_ALREADY_EXISTS`.
|
|
789
|
+
content:
|
|
790
|
+
application/json:
|
|
791
|
+
schema:
|
|
792
|
+
$ref: '#/components/schemas/Error'
|
|
793
|
+
examples:
|
|
794
|
+
nameTaken:
|
|
795
|
+
value:
|
|
796
|
+
errors:
|
|
797
|
+
- code: STORAGE_ITEM_ALREADY_EXISTS
|
|
798
|
+
message: An item named "Reports" already exists in this folder
|
|
811
799
|
'422':
|
|
812
800
|
$ref: '#/components/responses/422-unprocessable-entity'
|
|
813
801
|
/v1/storage/items/batch:
|
|
@@ -1099,7 +1087,8 @@ paths:
|
|
|
1099
1087
|
'207':
|
|
1100
1088
|
description: |-
|
|
1101
1089
|
Mixed results — at least one item failed to move. Inspect each
|
|
1102
|
-
entry's `status
|
|
1090
|
+
entry's `status`; a destination name collision reports
|
|
1091
|
+
`STORAGE_ITEM_ALREADY_EXISTS` on that entry while the others proceed.
|
|
1103
1092
|
content:
|
|
1104
1093
|
application/json:
|
|
1105
1094
|
schema:
|
|
@@ -1118,6 +1107,10 @@ paths:
|
|
|
1118
1107
|
status: error
|
|
1119
1108
|
errorCode: STORAGE_MOVE_SAME_PARENT_DISALLOWED
|
|
1120
1109
|
message: The item is already in the destination folder
|
|
1110
|
+
- _id: 683b2a0e1c3d5f001a9e8b05
|
|
1111
|
+
status: error
|
|
1112
|
+
errorCode: STORAGE_ITEM_ALREADY_EXISTS
|
|
1113
|
+
message: An item named "Reports" already exists in this folder
|
|
1121
1114
|
'400':
|
|
1122
1115
|
description: |-
|
|
1123
1116
|
Malformed request — `_parentFolderId` key missing
|
|
@@ -1272,9 +1265,10 @@ paths:
|
|
|
1272
1265
|
description: |-
|
|
1273
1266
|
Updates an item's `name` and/or `description`. Renaming keeps the item's
|
|
1274
1267
|
`_id` stable, so references from flows, exports, imports, and tokens
|
|
1275
|
-
survive
|
|
1276
|
-
`
|
|
1277
|
-
`PATCH /v1/storage/items/{_id}/replace
|
|
1268
|
+
survive; a name already held by another live item in the same folder is
|
|
1269
|
+
rejected with 409 `STORAGE_ITEM_ALREADY_EXISTS`. To move an item to a
|
|
1270
|
+
different folder, use `PATCH /v1/storage/items/{_id}/move`; to replace a
|
|
1271
|
+
file's content, use `PATCH /v1/storage/items/{_id}/replace`.
|
|
1278
1272
|
operationId: updateStorageItem
|
|
1279
1273
|
tags:
|
|
1280
1274
|
- File Storage
|
|
@@ -1334,6 +1328,20 @@ paths:
|
|
|
1334
1328
|
$ref: '#/components/responses/403-forbidden'
|
|
1335
1329
|
'404':
|
|
1336
1330
|
$ref: '#/components/responses/404-not-found'
|
|
1331
|
+
'409':
|
|
1332
|
+
description: |-
|
|
1333
|
+
Another live item in the same folder already has the requested
|
|
1334
|
+
`name` (`STORAGE_ITEM_ALREADY_EXISTS`). Nothing was changed.
|
|
1335
|
+
content:
|
|
1336
|
+
application/json:
|
|
1337
|
+
schema:
|
|
1338
|
+
$ref: '#/components/schemas/Error'
|
|
1339
|
+
examples:
|
|
1340
|
+
nameTaken:
|
|
1341
|
+
value:
|
|
1342
|
+
errors:
|
|
1343
|
+
- code: STORAGE_ITEM_ALREADY_EXISTS
|
|
1344
|
+
message: An item named "quarterly-report-final.pdf" already exists in this folder
|
|
1337
1345
|
'422':
|
|
1338
1346
|
$ref: '#/components/responses/422-unprocessable-entity'
|
|
1339
1347
|
delete:
|
|
@@ -1351,7 +1359,9 @@ paths:
|
|
|
1351
1359
|
`STORAGE_SFTP_HOME_FOLDER_PROTECTED` until that account is deleted or moved
|
|
1352
1360
|
to another folder (`/v1/mft/fileserver/accounts`). Renaming or moving such
|
|
1353
1361
|
a folder is still allowed. A pending multipart upload cannot be deleted
|
|
1354
|
-
here — cancel it with `POST /v1/storage/files/{_id}/cancel`.
|
|
1362
|
+
here — cancel it with `POST /v1/storage/files/{_id}/cancel`. A pending
|
|
1363
|
+
single PUT upload whose presigned URL is still live is refused with 403
|
|
1364
|
+
`STORAGE_PRESIGNED_URL_ACTIVE`; retry after the URL expires.
|
|
1355
1365
|
operationId: deleteStorageItem
|
|
1356
1366
|
tags:
|
|
1357
1367
|
- File Storage
|
|
@@ -1375,10 +1385,12 @@ paths:
|
|
|
1375
1385
|
$ref: '#/components/responses/401-unauthorized'
|
|
1376
1386
|
'403':
|
|
1377
1387
|
description: |-
|
|
1378
|
-
The caller lacks permission for this item
|
|
1379
|
-
contains) a File Server account's home folder
|
|
1380
|
-
`STORAGE_SFTP_HOME_FOLDER_PROTECTED`
|
|
1381
|
-
the
|
|
1388
|
+
The caller lacks permission for this item; the folder is (or
|
|
1389
|
+
contains) a File Server account's home folder
|
|
1390
|
+
(`STORAGE_SFTP_HOME_FOLDER_PROTECTED` — delete or move the account
|
|
1391
|
+
first); or the item is a pending single PUT upload whose presigned
|
|
1392
|
+
URL has not expired yet (`STORAGE_PRESIGNED_URL_ACTIVE` — the upload
|
|
1393
|
+
may still be in flight, so retry once the URL's lifetime has passed).
|
|
1382
1394
|
content:
|
|
1383
1395
|
application/json:
|
|
1384
1396
|
schema:
|
|
@@ -1390,6 +1402,12 @@ paths:
|
|
|
1390
1402
|
errors:
|
|
1391
1403
|
- code: STORAGE_SFTP_HOME_FOLDER_PROTECTED
|
|
1392
1404
|
message: This folder cannot be deleted because it is in use as an SFTP home folder
|
|
1405
|
+
presignedUrlActive:
|
|
1406
|
+
summary: Pending single PUT upload with a live URL
|
|
1407
|
+
value:
|
|
1408
|
+
errors:
|
|
1409
|
+
- code: STORAGE_PRESIGNED_URL_ACTIVE
|
|
1410
|
+
message: Presigned upload URL is still active; retry after it expires
|
|
1393
1411
|
'404':
|
|
1394
1412
|
$ref: '#/components/responses/404-not-found'
|
|
1395
1413
|
'422':
|
|
@@ -1647,7 +1665,10 @@ paths:
|
|
|
1647
1665
|
quota is unaffected. Moving a folder re-parents the folder immediately and
|
|
1648
1666
|
re-anchors its descendants asynchronously, so the response reflects only
|
|
1649
1667
|
the moved item itself. A folder cannot be moved into itself or one of its
|
|
1650
|
-
own descendants.
|
|
1668
|
+
own descendants. A destination that already holds a live item with the
|
|
1669
|
+
same name rejects the move with 409 `STORAGE_ITEM_ALREADY_EXISTS` — send
|
|
1670
|
+
`name` to land beside it, or fold a folder into its namesake with
|
|
1671
|
+
`POST /v1/storage/items/{_id}/merge`.
|
|
1651
1672
|
operationId: moveStorageItem
|
|
1652
1673
|
tags:
|
|
1653
1674
|
- File Storage
|
|
@@ -1753,6 +1774,21 @@ paths:
|
|
|
1753
1774
|
$ref: '#/components/responses/403-forbidden'
|
|
1754
1775
|
'404':
|
|
1755
1776
|
$ref: '#/components/responses/404-not-found'
|
|
1777
|
+
'409':
|
|
1778
|
+
description: |-
|
|
1779
|
+
The destination already holds a live item with the moved item's
|
|
1780
|
+
name — or with the `name` sent (`STORAGE_ITEM_ALREADY_EXISTS`).
|
|
1781
|
+
Nothing was moved.
|
|
1782
|
+
content:
|
|
1783
|
+
application/json:
|
|
1784
|
+
schema:
|
|
1785
|
+
$ref: '#/components/schemas/Error'
|
|
1786
|
+
examples:
|
|
1787
|
+
nameTaken:
|
|
1788
|
+
value:
|
|
1789
|
+
errors:
|
|
1790
|
+
- code: STORAGE_ITEM_ALREADY_EXISTS
|
|
1791
|
+
message: An item named "inv-001.pdf" already exists in this folder
|
|
1756
1792
|
'422':
|
|
1757
1793
|
$ref: '#/components/responses/422-unprocessable-entity'
|
|
1758
1794
|
/v1/storage/items/{_id}/copy:
|
|
@@ -1760,11 +1796,12 @@ paths:
|
|
|
1760
1796
|
x-internal: false
|
|
1761
1797
|
summary: Copy a file
|
|
1762
1798
|
description: |-
|
|
1763
|
-
Creates an independent copy of a file in
|
|
1764
|
-
`_id` and its own copy of the content. Consumes quota equal to
|
|
1765
|
-
file's size. Files only — folder copy is not supported.
|
|
1766
|
-
|
|
1767
|
-
|
|
1799
|
+
Creates an independent copy of a file in the folder named by `_parentId`,
|
|
1800
|
+
with a new `_id` and its own copy of the content. Consumes quota equal to
|
|
1801
|
+
the source file's size. Files only — folder copy is not supported.
|
|
1802
|
+
Without `name` the copy is called `Clone - ` followed by the source
|
|
1803
|
+
file's name; a name already held by a live item in the destination is
|
|
1804
|
+
rejected with 409 `STORAGE_ITEM_ALREADY_EXISTS`.
|
|
1768
1805
|
operationId: copyStorageFile
|
|
1769
1806
|
tags:
|
|
1770
1807
|
- File Storage
|
|
@@ -1789,12 +1826,12 @@ paths:
|
|
|
1789
1826
|
rename:
|
|
1790
1827
|
summary: Copy into a folder with a new name
|
|
1791
1828
|
value:
|
|
1792
|
-
|
|
1829
|
+
_parentId: 684c3b1f2d4e6g002b0h9c34
|
|
1793
1830
|
name: quarterly-report-copy.pdf
|
|
1794
1831
|
toRoot:
|
|
1795
|
-
summary: Copy to the account root
|
|
1832
|
+
summary: Copy to the account root as "Clone - <source name>"
|
|
1796
1833
|
value:
|
|
1797
|
-
|
|
1834
|
+
_parentId: null
|
|
1798
1835
|
responses:
|
|
1799
1836
|
'201':
|
|
1800
1837
|
description: The newly created copy.
|
|
@@ -1828,6 +1865,20 @@ paths:
|
|
|
1828
1865
|
$ref: '#/components/responses/403-forbidden'
|
|
1829
1866
|
'404':
|
|
1830
1867
|
$ref: '#/components/responses/404-not-found'
|
|
1868
|
+
'409':
|
|
1869
|
+
description: |-
|
|
1870
|
+
A live item with the copy's name already exists in the destination
|
|
1871
|
+
(`STORAGE_ITEM_ALREADY_EXISTS`). Retry with a different `name`.
|
|
1872
|
+
content:
|
|
1873
|
+
application/json:
|
|
1874
|
+
schema:
|
|
1875
|
+
$ref: '#/components/schemas/Error'
|
|
1876
|
+
examples:
|
|
1877
|
+
nameTaken:
|
|
1878
|
+
value:
|
|
1879
|
+
errors:
|
|
1880
|
+
- code: STORAGE_ITEM_ALREADY_EXISTS
|
|
1881
|
+
message: An item named "Clone - quarterly-report.pdf" already exists in this folder
|
|
1831
1882
|
'422':
|
|
1832
1883
|
$ref: '#/components/responses/422-unprocessable-entity'
|
|
1833
1884
|
/v1/storage/items/{_id}/restore:
|
|
@@ -1840,7 +1891,9 @@ paths:
|
|
|
1840
1891
|
removed with it; the folder comes back immediately and its descendants
|
|
1841
1892
|
follow asynchronously. Only items deleted directly can be restored — a
|
|
1842
1893
|
descendant removed by its parent's deletion comes back only when that
|
|
1843
|
-
parent folder is restored.
|
|
1894
|
+
parent folder is restored. If a live item has taken the name in the
|
|
1895
|
+
original folder since the delete, the restore is rejected with 409
|
|
1896
|
+
`STORAGE_ITEM_ALREADY_EXISTS`; send `name` to restore under a new one.
|
|
1844
1897
|
operationId: restoreStorageItem
|
|
1845
1898
|
tags:
|
|
1846
1899
|
- File Storage
|
|
@@ -1855,17 +1908,67 @@ paths:
|
|
|
1855
1908
|
x-celigo-refModel: storageitems
|
|
1856
1909
|
examples:
|
|
1857
1910
|
- 683b2a0e1c3d5f001a9e8b01
|
|
1911
|
+
requestBody:
|
|
1912
|
+
required: false
|
|
1913
|
+
content:
|
|
1914
|
+
application/json:
|
|
1915
|
+
schema:
|
|
1916
|
+
$ref: '#/components/schemas/RestoreRequest'
|
|
1917
|
+
examples:
|
|
1918
|
+
keepName:
|
|
1919
|
+
summary: Restore under the original name
|
|
1920
|
+
value: {}
|
|
1921
|
+
rename:
|
|
1922
|
+
summary: Restore under a new name because the original is taken
|
|
1923
|
+
value:
|
|
1924
|
+
name: inv-001 (restored).pdf
|
|
1858
1925
|
responses:
|
|
1859
|
-
'
|
|
1926
|
+
'200':
|
|
1860
1927
|
description: |-
|
|
1861
|
-
|
|
1862
|
-
follow asynchronously.
|
|
1928
|
+
The restored item. For a folder, the root is restored and its
|
|
1929
|
+
descendants follow asynchronously.
|
|
1930
|
+
content:
|
|
1931
|
+
application/json:
|
|
1932
|
+
schema:
|
|
1933
|
+
$ref: '#/components/schemas/StorageItem'
|
|
1934
|
+
examples:
|
|
1935
|
+
default:
|
|
1936
|
+
value:
|
|
1937
|
+
_id: 683b2a0e1c3d5f001a9e8b01
|
|
1938
|
+
_userId: 624cb0346309dc3a543733a2
|
|
1939
|
+
_parentId: 683a1f2e9b0c4d001e8f7a23
|
|
1940
|
+
__ancestorIds:
|
|
1941
|
+
- 683a1f2e9b0c4d001e8f7a23
|
|
1942
|
+
_integrationId: null
|
|
1943
|
+
type: file
|
|
1944
|
+
name: inv-001 (restored).pdf
|
|
1945
|
+
size: 245760
|
|
1946
|
+
mimeType: application/pdf
|
|
1947
|
+
status: active
|
|
1948
|
+
isSystem: false
|
|
1949
|
+
createdAt: '2026-03-28T10:00:00.000Z'
|
|
1950
|
+
lastModified: '2026-04-28T09:15:00.000Z'
|
|
1863
1951
|
'401':
|
|
1864
1952
|
$ref: '#/components/responses/401-unauthorized'
|
|
1865
1953
|
'403':
|
|
1866
1954
|
$ref: '#/components/responses/403-forbidden'
|
|
1867
1955
|
'404':
|
|
1868
1956
|
$ref: '#/components/responses/404-not-found'
|
|
1957
|
+
'409':
|
|
1958
|
+
description: |-
|
|
1959
|
+
A live item in the original folder already has the item's name — or
|
|
1960
|
+
the `name` sent (`STORAGE_ITEM_ALREADY_EXISTS`). The item stays in
|
|
1961
|
+
the recycle bin.
|
|
1962
|
+
content:
|
|
1963
|
+
application/json:
|
|
1964
|
+
schema:
|
|
1965
|
+
$ref: '#/components/schemas/Error'
|
|
1966
|
+
examples:
|
|
1967
|
+
nameTaken:
|
|
1968
|
+
value:
|
|
1969
|
+
errors:
|
|
1970
|
+
- code: STORAGE_ITEM_ALREADY_EXISTS
|
|
1971
|
+
message: An item named "inv-001.pdf" already exists in this folder
|
|
1869
1972
|
'422':
|
|
1870
1973
|
$ref: '#/components/responses/422-unprocessable-entity'
|
|
1871
1974
|
/v1/storage/items/{_id}/purge:
|
|
@@ -2269,7 +2372,11 @@ components:
|
|
|
2269
2372
|
name:
|
|
2270
2373
|
type: string
|
|
2271
2374
|
maxLength: 256
|
|
2272
|
-
description:
|
|
2375
|
+
description: |-
|
|
2376
|
+
File name, including extension. Must not match a live file or folder
|
|
2377
|
+
in the target folder (case-sensitive; a pending upload already holds
|
|
2378
|
+
its name), or the entry fails with 409 `STORAGE_ITEM_ALREADY_EXISTS`
|
|
2379
|
+
while the rest of the batch proceeds.
|
|
2273
2380
|
examples:
|
|
2274
2381
|
- logo.png
|
|
2275
2382
|
mimeType:
|
|
@@ -2401,8 +2508,10 @@ components:
|
|
|
2401
2508
|
Present when uploadType is single. The PUT must carry the header
|
|
2402
2509
|
`x-amz-server-side-encryption: AES256` — it is part of the signature,
|
|
2403
2510
|
and S3 rejects the upload with 403 `SignatureDoesNotMatch` without
|
|
2404
|
-
it. The URL's `X-Amz-Expires` parameter carries its lifetime
|
|
2405
|
-
|
|
2511
|
+
it. The URL's `X-Amz-Expires` parameter carries its lifetime and
|
|
2512
|
+
there is no endpoint to reissue it: an expired single PUT means
|
|
2513
|
+
starting a new upload. While the URL is live the pending item holds
|
|
2514
|
+
its name and cannot be deleted (`STORAGE_PRESIGNED_URL_ACTIVE`).
|
|
2406
2515
|
examples:
|
|
2407
2516
|
- https://integrator-file-storage.s3.us-west-2.amazonaws.com/...
|
|
2408
2517
|
x-celigo-ai-guidance:
|
|
@@ -2411,8 +2520,9 @@ components:
|
|
|
2411
2520
|
type: string
|
|
2412
2521
|
description: |-
|
|
2413
2522
|
S3 multipart upload identifier. Present when uploadType is
|
|
2414
|
-
multipart.
|
|
2415
|
-
to
|
|
2523
|
+
multipart. Send it back to `POST /v1/storage/files/initiateUpload`
|
|
2524
|
+
with the item's `_id` and `issuedPartsCount` to fetch the next batch
|
|
2525
|
+
of part URLs once every part already issued has been uploaded.
|
|
2416
2526
|
examples:
|
|
2417
2527
|
- abcD12efGHIjklMN3opQrst
|
|
2418
2528
|
partUrls:
|
|
@@ -2420,8 +2530,11 @@ components:
|
|
|
2420
2530
|
description: |-
|
|
2421
2531
|
Presigned URLs for the next batch of parts. Present when uploadType
|
|
2422
2532
|
is multipart. A request may return fewer parts than requested when
|
|
2423
|
-
the account-wide part budget is constrained;
|
|
2424
|
-
parts
|
|
2533
|
+
the account-wide part budget is constrained; after uploading every
|
|
2534
|
+
part in this batch, fetch the remaining parts by posting to
|
|
2535
|
+
initiateUpload again with the item's `_id`, `uploadId`, and
|
|
2536
|
+
`issuedPartsCount` — before then the entry fails with
|
|
2537
|
+
`STORAGE_PARTS_MISMATCH`.
|
|
2425
2538
|
items:
|
|
2426
2539
|
$ref: '#/components/schemas/PartUrl'
|
|
2427
2540
|
completeUrl:
|
|
@@ -2468,7 +2581,8 @@ components:
|
|
|
2468
2581
|
description: |-
|
|
2469
2582
|
ID of the pending item this result refers to. Present once the item
|
|
2470
2583
|
is created; absent when the file failed validation before creation.
|
|
2471
|
-
Use it to
|
|
2584
|
+
Use it to continue a multipart upload, cancel it, or download the
|
|
2585
|
+
file once active.
|
|
2472
2586
|
examples:
|
|
2473
2587
|
- 683b2a0e1c3d5f001a9e8b01
|
|
2474
2588
|
name:
|
|
@@ -2538,66 +2652,6 @@ components:
|
|
|
2538
2652
|
- message
|
|
2539
2653
|
required:
|
|
2540
2654
|
- errors
|
|
2541
|
-
RefreshUrlsRequest:
|
|
2542
|
-
type: object
|
|
2543
|
-
description: Reissues presigned URLs for pending uploads whose URLs have expired.
|
|
2544
|
-
required:
|
|
2545
|
-
- items
|
|
2546
|
-
properties:
|
|
2547
|
-
items:
|
|
2548
|
-
type: array
|
|
2549
|
-
minItems: 1
|
|
2550
|
-
description: Pending uploads to refresh. Each is processed independently.
|
|
2551
|
-
items:
|
|
2552
|
-
type: object
|
|
2553
|
-
required:
|
|
2554
|
-
- _id
|
|
2555
|
-
- uploadType
|
|
2556
|
-
properties:
|
|
2557
|
-
_id:
|
|
2558
|
-
type: string
|
|
2559
|
-
format: objectId
|
|
2560
|
-
x-celigo-refModel: storageitems
|
|
2561
|
-
description: Pending item to reissue URLs for.
|
|
2562
|
-
examples:
|
|
2563
|
-
- 683b2a0e1c3d5f001a9e8b03
|
|
2564
|
-
uploadType:
|
|
2565
|
-
type: string
|
|
2566
|
-
enum:
|
|
2567
|
-
- single
|
|
2568
|
-
- multipart
|
|
2569
|
-
x-enumDescriptions:
|
|
2570
|
-
single: Reissue the single PUT URL.
|
|
2571
|
-
multipart: Reissue URLs for the part numbers in `partNumbers`.
|
|
2572
|
-
description: Must match the upload type the item was initiated with.
|
|
2573
|
-
uploadId:
|
|
2574
|
-
type: string
|
|
2575
|
-
description: S3 multipart upload ID. Required when uploadType is multipart.
|
|
2576
|
-
examples:
|
|
2577
|
-
- abcD12efGHIjklMN3opQrst
|
|
2578
|
-
partNumbers:
|
|
2579
|
-
type: array
|
|
2580
|
-
description: |-
|
|
2581
|
-
Part numbers to reissue URLs for. Required when uploadType is
|
|
2582
|
-
multipart. Must continue sequentially after the last issued
|
|
2583
|
-
batch. Already-uploaded parts are preserved.
|
|
2584
|
-
items:
|
|
2585
|
-
type: integer
|
|
2586
|
-
minimum: 1
|
|
2587
|
-
examples:
|
|
2588
|
-
- - 3
|
|
2589
|
-
- 4
|
|
2590
|
-
- 5
|
|
2591
|
-
RefreshUrlsResponse:
|
|
2592
|
-
type: object
|
|
2593
|
-
description: Per-item refreshed upload instructions.
|
|
2594
|
-
required:
|
|
2595
|
-
- items
|
|
2596
|
-
properties:
|
|
2597
|
-
items:
|
|
2598
|
-
type: array
|
|
2599
|
-
items:
|
|
2600
|
-
$ref: '#/components/schemas/UploadResult'
|
|
2601
2655
|
StorageItem:
|
|
2602
2656
|
type: object
|
|
2603
2657
|
description: A file or folder stored in Celigo Storage.
|
|
@@ -2630,8 +2684,11 @@ components:
|
|
|
2630
2684
|
maxLength: 256
|
|
2631
2685
|
description: |-
|
|
2632
2686
|
Display name, including the extension for files (for example
|
|
2633
|
-
`orders.csv`).
|
|
2634
|
-
|
|
2687
|
+
`orders.csv`). Unique among the live items of one folder: files and
|
|
2688
|
+
folders share the namespace, matching is case-sensitive, and a
|
|
2689
|
+
pending upload holds its name. Any write that would duplicate a name
|
|
2690
|
+
is rejected with 409 `STORAGE_ITEM_ALREADY_EXISTS`; items in the
|
|
2691
|
+
recycle bin release theirs.
|
|
2635
2692
|
examples:
|
|
2636
2693
|
- logo.png
|
|
2637
2694
|
_userId:
|
|
@@ -2814,7 +2871,10 @@ components:
|
|
|
2814
2871
|
name:
|
|
2815
2872
|
type: string
|
|
2816
2873
|
maxLength: 256
|
|
2817
|
-
description:
|
|
2874
|
+
description: |-
|
|
2875
|
+
Folder name. Must not match a live file or folder already in the
|
|
2876
|
+
parent (case-sensitive); a duplicate is rejected with 409
|
|
2877
|
+
`STORAGE_ITEM_ALREADY_EXISTS`.
|
|
2818
2878
|
examples:
|
|
2819
2879
|
- Reports
|
|
2820
2880
|
_parentId:
|
|
@@ -2898,7 +2958,10 @@ components:
|
|
|
2898
2958
|
description: Type of the moved item. Present on success.
|
|
2899
2959
|
errorCode:
|
|
2900
2960
|
type: string
|
|
2901
|
-
description:
|
|
2961
|
+
description: |-
|
|
2962
|
+
Error code for this item, such as `STORAGE_ITEM_ALREADY_EXISTS`
|
|
2963
|
+
when the destination already holds a live item with that name.
|
|
2964
|
+
Present on error.
|
|
2902
2965
|
message:
|
|
2903
2966
|
type: string
|
|
2904
2967
|
description: Human-readable failure reason. Present on error.
|
|
@@ -2912,7 +2975,10 @@ components:
|
|
|
2912
2975
|
name:
|
|
2913
2976
|
type: string
|
|
2914
2977
|
maxLength: 256
|
|
2915
|
-
description:
|
|
2978
|
+
description: |-
|
|
2979
|
+
New display name for the item. Must not match another live item in
|
|
2980
|
+
the same folder (case-sensitive); a collision is rejected with 409
|
|
2981
|
+
`STORAGE_ITEM_ALREADY_EXISTS`.
|
|
2916
2982
|
examples:
|
|
2917
2983
|
- quarterly-report-final.pdf
|
|
2918
2984
|
description:
|
|
@@ -3039,7 +3105,7 @@ components:
|
|
|
3039
3105
|
type: object
|
|
3040
3106
|
description: Request body for copying a file.
|
|
3041
3107
|
properties:
|
|
3042
|
-
|
|
3108
|
+
_parentId:
|
|
3043
3109
|
type:
|
|
3044
3110
|
- string
|
|
3045
3111
|
- 'null'
|
|
@@ -3047,18 +3113,37 @@ components:
|
|
|
3047
3113
|
x-celigo-refModel: storageitems
|
|
3048
3114
|
description: |-
|
|
3049
3115
|
Destination folder for the copy. Pass null to copy to the account
|
|
3050
|
-
root
|
|
3116
|
+
root; omit it to copy into the source file's own folder. An id that
|
|
3117
|
+
names no folder answers 404 `STORAGE_PARENT_NOT_FOUND`, and a file's
|
|
3118
|
+
id 422 `STORAGE_PARENT_NOT_FOLDER`.
|
|
3051
3119
|
examples:
|
|
3052
3120
|
- 684c3b1f2d4e6g002b0h9c34
|
|
3053
3121
|
name:
|
|
3054
3122
|
type: string
|
|
3055
3123
|
maxLength: 256
|
|
3056
3124
|
description: |-
|
|
3057
|
-
Name for the copy.
|
|
3058
|
-
|
|
3059
|
-
|
|
3125
|
+
Name for the copy. When omitted, the copy is called `Clone - `
|
|
3126
|
+
followed by the source file's name. Must not match a live item in
|
|
3127
|
+
the destination (case-sensitive): a collision is rejected with 409
|
|
3128
|
+
`STORAGE_ITEM_ALREADY_EXISTS`, so a second unnamed copy into the
|
|
3129
|
+
same folder needs an explicit name.
|
|
3060
3130
|
examples:
|
|
3061
3131
|
- quarterly-report-copy.pdf
|
|
3132
|
+
RestoreRequest:
|
|
3133
|
+
type: object
|
|
3134
|
+
description: |-
|
|
3135
|
+
Optional request body for restoring an item from the recycle bin. Send
|
|
3136
|
+
an empty body or omit it to restore under the original name.
|
|
3137
|
+
properties:
|
|
3138
|
+
name:
|
|
3139
|
+
type: string
|
|
3140
|
+
maxLength: 256
|
|
3141
|
+
description: |-
|
|
3142
|
+
New name applied as the item comes back, so a name taken in its
|
|
3143
|
+
original folder since the delete can be resolved in the same call.
|
|
3144
|
+
Omit to keep the original name.
|
|
3145
|
+
examples:
|
|
3146
|
+
- inv-001 (restored).pdf
|
|
3062
3147
|
StorageAuditEntry:
|
|
3063
3148
|
type: object
|
|
3064
3149
|
description: |-
|