@celigo/api-specs 0.2.39 → 0.2.40

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.
@@ -32,8 +32,10 @@ paths:
32
32
  pending item, and returns presigned S3 URLs to transfer the bytes to:
33
33
  a single PUT URL for files up to 5 GB, or a multipart `uploadId`,
34
34
  `partUrls`, and `completeUrl` for larger files. Upload the bytes directly
35
- to those URLs, then the item flips to active once S3 confirms it — no
36
- further API call is needed. URLs expire after one hour; reissue them with
35
+ to those URLs — a single PUT must carry the
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
38
+ lifetime is in its `X-Amz-Expires` parameter; reissue expired URLs with
37
39
  `POST /v1/storage/files/refresh-urls`. Each file is validated
38
40
  independently, so the response can mix per-file successes and failures
39
41
  while the request itself returns 200.
@@ -126,10 +128,10 @@ paths:
126
128
  summary: Refresh upload URLs
127
129
  description: |-
128
130
  Reissues presigned upload URLs for pending uploads whose URLs have
129
- expired (URLs last one hour). For a single PUT, returns a fresh upload
130
- URL; for multipart, returns fresh URLs for the requested part numbers plus
131
- the complete URL. Already-uploaded parts are preserved. Each item is
132
- processed independently.
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.
133
135
  operationId: refreshStorageUploadUrls
134
136
  tags:
135
137
  - File Storage
@@ -275,6 +277,115 @@ paths:
275
277
  $ref: '#/components/responses/404-not-found'
276
278
  '422':
277
279
  $ref: '#/components/responses/422-unprocessable-entity'
280
+ /v1/storage/folders/{_id}/download:
281
+ get:
282
+ x-internal: false
283
+ summary: Get a folder download URL
284
+ description: |-
285
+ Packages a folder and everything beneath it into a zip and returns a
286
+ short-lived presigned S3 URL to fetch it from — the content does not pass
287
+ through this API. The zip is built synchronously before the response, so
288
+ large trees take longer to answer; entries are rooted at the folder's own
289
+ name and every subfolder is written as a directory entry, so empty
290
+ subfolders survive extraction. Pending (not yet finalized) files are
291
+ skipped. Re-downloading the same folder overwrites its previously staged
292
+ zip rather than piling up copies. Folders only; download a single file
293
+ with `GET /v1/storage/files/{_id}/download`.
294
+ operationId: getStorageFolderDownloadUrl
295
+ tags:
296
+ - File Storage
297
+ parameters:
298
+ - name: _id
299
+ in: path
300
+ required: true
301
+ description: ID of the folder to download.
302
+ schema:
303
+ type: string
304
+ format: objectId
305
+ x-celigo-refModel: storageitems
306
+ examples:
307
+ - 684c3b1f2d4e6a002b0f9c34
308
+ responses:
309
+ '200':
310
+ description: A presigned download URL for the zip, its lifetime, and what it contains.
311
+ content:
312
+ application/json:
313
+ schema:
314
+ type: object
315
+ required:
316
+ - downloadUrl
317
+ - expiresIn
318
+ - name
319
+ - fileCount
320
+ - size
321
+ properties:
322
+ downloadUrl:
323
+ type: string
324
+ format: uri
325
+ description: |-
326
+ Presigned S3 URL to GET the zip from. Serves the archive with
327
+ a `Content-Disposition: attachment` header carrying `name`.
328
+ examples:
329
+ - https://integrator-file-storage.s3.us-west-2.amazonaws.com/file-storage/.../folder-downloads/684c3b1f2d4e6a002b0f9c34.zip?X-Amz-Expires=3600&...
330
+ expiresIn:
331
+ type: integer
332
+ description: Seconds the URL stays valid from the time of this response.
333
+ examples:
334
+ - 3600
335
+ name:
336
+ type: string
337
+ description: |-
338
+ File name of the zip — the folder's name with characters that
339
+ are illegal in file names replaced by `_`, plus `.zip`.
340
+ examples:
341
+ - Reports.zip
342
+ fileCount:
343
+ type: integer
344
+ description: Number of files packaged into the zip. Folders are not counted.
345
+ examples:
346
+ - 3
347
+ size:
348
+ type: integer
349
+ format: int64
350
+ description: Total uncompressed size in bytes of the packaged files.
351
+ examples:
352
+ - 51
353
+ examples:
354
+ default:
355
+ value:
356
+ downloadUrl: https://integrator-file-storage.s3.us-west-2.amazonaws.com/file-storage/624cb0346309dc3a543733a2/folder-downloads/684c3b1f2d4e6a002b0f9c34.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3D%22Reports.zip%22&X-Amz-Signature=REDACTED
357
+ expiresIn: 3600
358
+ name: Reports.zip
359
+ fileCount: 3
360
+ size: 51
361
+ '401':
362
+ $ref: '#/components/responses/401-unauthorized'
363
+ '403':
364
+ $ref: '#/components/responses/403-forbidden'
365
+ '404':
366
+ description: No folder or file with this ID exists in the environment. Error code `STORAGE_ITEM_NOT_FOUND`.
367
+ content:
368
+ application/json:
369
+ schema:
370
+ $ref: '#/components/schemas/Error'
371
+ examples:
372
+ notFound:
373
+ value:
374
+ errors:
375
+ - code: STORAGE_ITEM_NOT_FOUND
376
+ message: Storage item not found
377
+ '422':
378
+ description: The ID belongs to a file, not a folder. Error code `STORAGE_NOT_A_FOLDER`.
379
+ content:
380
+ application/json:
381
+ schema:
382
+ $ref: '#/components/schemas/Error'
383
+ examples:
384
+ notAFolder:
385
+ value:
386
+ errors:
387
+ - code: STORAGE_NOT_A_FOLDER
388
+ message: Storage item "orders.csv" is not a folder
278
389
  /v1/storage/items:
279
390
  get:
280
391
  x-internal: false
@@ -306,15 +417,59 @@ paths:
306
417
  in: query
307
418
  required: false
308
419
  description: |-
309
- Recursive, case-insensitive substring match on item names across the
310
- whole account. Switches the endpoint to search mode, where
311
- `_parentId` is ignored and each item carries its `location`. Matches
312
- names only, not contents or descriptions.
420
+ Recursive, case-insensitive match on item names across the whole
421
+ account. Switches the endpoint to search mode, where `_parentId` is
422
+ ignored and each item carries its `location`. Matches names only, not
423
+ contents or descriptions; a query of several words matches names that
424
+ contain any of them. Cannot be combined with `name`, `prefix`, or
425
+ `_integrationId`.
313
426
  schema:
314
427
  type: string
315
428
  minLength: 2
316
429
  examples:
317
430
  - report
431
+ - name: name
432
+ in: query
433
+ required: false
434
+ description: |-
435
+ Return only items whose name equals one of the given values —
436
+ case-sensitive, exact match. Repeat the parameter for several names;
437
+ a comma inside a value is part of the name, not a separator. Cannot
438
+ be combined with `search` or `prefix`.
439
+ schema:
440
+ type: array
441
+ items:
442
+ type: string
443
+ maxLength: 256
444
+ examples:
445
+ - - orders.csv
446
+ - invoices.csv
447
+ - name: prefix
448
+ in: query
449
+ required: false
450
+ description: |-
451
+ Return only items whose name starts with this value (case-sensitive).
452
+ A single value — cannot be combined with `search` or `name`.
453
+ schema:
454
+ type: string
455
+ minLength: 1
456
+ maxLength: 256
457
+ examples:
458
+ - orders-2026-
459
+ - name: _integrationId
460
+ in: query
461
+ required: false
462
+ description: |-
463
+ Return only items that belong to this integration's system folder
464
+ tree. At the account root this yields the integration's root folder;
465
+ with `_parentId` set to a folder inside the tree it narrows that
466
+ folder's children. Cannot be combined with `search`.
467
+ schema:
468
+ type: string
469
+ format: objectId
470
+ x-celigo-refModel: integrations
471
+ examples:
472
+ - 6ab1e7ab38d7733b4594d0d2
318
473
  - name: type
319
474
  in: query
320
475
  required: false
@@ -332,11 +487,36 @@ paths:
332
487
  - name: mimeType
333
488
  in: query
334
489
  required: false
335
- description: Restrict results to files of a single media type.
490
+ description: |-
491
+ Return only files whose media type is one of the given values —
492
+ case-sensitive, exact match, so `image/*` is rejected. Pass several
493
+ values as a comma-separated list or by repeating the parameter; up to
494
+ 50 distinct values per request. Folders never match.
336
495
  schema:
337
- type: string
496
+ type: array
497
+ items:
498
+ type: string
499
+ maxItems: 50
338
500
  examples:
339
- - image/png
501
+ - - text/csv
502
+ - image/png
503
+ - name: mimeType_nin
504
+ in: query
505
+ required: false
506
+ description: |-
507
+ Exclude files whose media type is one of the given values — the
508
+ "Other" filter. Same list syntax and 50-value cap as `mimeType`.
509
+ Folders carry no media type, so they are never excluded; add
510
+ `type=file` to drop them. Combined with `mimeType`, both conditions
511
+ apply.
512
+ schema:
513
+ type: array
514
+ items:
515
+ type: string
516
+ maxItems: 50
517
+ examples:
518
+ - - text/csv
519
+ - application/pdf
340
520
  - name: sort_by
341
521
  in: query
342
522
  required: false
@@ -467,13 +647,24 @@ paths:
467
647
  value:
468
648
  items:
469
649
  - _id: 684c3b1f2d4e6g002b0h9c34
650
+ _userId: 624cb0346309dc3a543733a2
651
+ _parentId: 683a1f2e9b0c4d001e8f7a23
652
+ __ancestorIds:
653
+ - 683a1f2e9b0c4d001e8f7a23
654
+ _integrationId: null
470
655
  type: folder
471
656
  name: Reports
657
+ size: 0
472
658
  status: active
473
659
  isSystem: false
474
660
  createdAt: '2026-03-28T10:00:00.000Z'
475
661
  lastModified: '2026-03-28T14:30:00.000Z'
476
662
  - _id: 683b2a0e1c3d5f001a9e8b01
663
+ _userId: 624cb0346309dc3a543733a2
664
+ _parentId: 683a1f2e9b0c4d001e8f7a23
665
+ __ancestorIds:
666
+ - 683a1f2e9b0c4d001e8f7a23
667
+ _integrationId: null
477
668
  type: file
478
669
  name: logo.png
479
670
  size: 245760
@@ -485,11 +676,33 @@ paths:
485
676
  breadcrumb:
486
677
  - _id: 683a1f2e9b0c4d001e8f7a23
487
678
  name: My Files
679
+ integrationRoot:
680
+ summary: Account root listing showing an integration's system folder
681
+ value:
682
+ items:
683
+ - _id: 6ab1e7abaa3e7ed226ea3cc4
684
+ _userId: 624cb0346309dc3a543733a2
685
+ _parentId: null
686
+ __ancestorIds: []
687
+ _integrationId: 6ab1e7ab38d7733b4594d0d2
688
+ integrationName: Order to cash
689
+ type: folder
690
+ name: Order to cash
691
+ size: 0
692
+ status: active
693
+ isSystem: true
694
+ createdAt: '2026-09-10T08:12:41.000Z'
695
+ lastModified: '2026-09-10T08:12:41.000Z'
488
696
  searchMode:
489
697
  summary: Search by name
490
698
  value:
491
699
  items:
492
700
  - _id: 683b2a0e1c3d5f001a9e8b01
701
+ _userId: 624cb0346309dc3a543733a2
702
+ _parentId: 683a1f2e9b0c4d001e8f7a23
703
+ __ancestorIds:
704
+ - 683a1f2e9b0c4d001e8f7a23
705
+ _integrationId: null
493
706
  type: file
494
707
  name: logo.png
495
708
  size: 245760
@@ -510,7 +723,32 @@ paths:
510
723
  '404':
511
724
  $ref: '#/components/responses/404-not-found'
512
725
  '422':
513
- $ref: '#/components/responses/422-unprocessable-entity'
726
+ description: |-
727
+ A filter is malformed or two filters that cannot be combined were
728
+ sent together. Error code: `STORAGE_INVALID_FILTER`.
729
+ content:
730
+ application/json:
731
+ schema:
732
+ $ref: '#/components/schemas/Error'
733
+ examples:
734
+ invalidMimeType:
735
+ summary: Media type is not a valid type/subtype pair
736
+ value:
737
+ errors:
738
+ - code: STORAGE_INVALID_FILTER
739
+ message: 'Invalid MIME type format in mimeType: image/*'
740
+ tooManyMimeTypes:
741
+ summary: More than 50 values in one media-type filter
742
+ value:
743
+ errors:
744
+ - code: STORAGE_INVALID_FILTER
745
+ message: mimeType must not exceed 50 entries
746
+ exclusiveFilters:
747
+ summary: prefix sent together with search
748
+ value:
749
+ errors:
750
+ - code: STORAGE_INVALID_FILTER
751
+ message: prefix and search are mutually exclusive
514
752
  post:
515
753
  x-internal: false
516
754
  summary: Create a folder
@@ -549,8 +787,14 @@ paths:
549
787
  default:
550
788
  value:
551
789
  _id: 684c3b1f2d4e6g002b0h9c34
790
+ _userId: 624cb0346309dc3a543733a2
791
+ _parentId: 683a1f2e9b0c4d001e8f7a23
792
+ __ancestorIds:
793
+ - 683a1f2e9b0c4d001e8f7a23
794
+ _integrationId: null
552
795
  type: folder
553
796
  name: Reports
797
+ size: 0
554
798
  description: Quarterly financial reports
555
799
  status: active
556
800
  isSystem: false
@@ -973,6 +1217,10 @@ paths:
973
1217
  value:
974
1218
  items:
975
1219
  - _id: 683b2a0e1c3d5f001a9e8b01
1220
+ _userId: 60a1b2c3d4e5f6001a2b3c4d
1221
+ _parentId: null
1222
+ __ancestorIds: []
1223
+ _integrationId: null
976
1224
  type: file
977
1225
  name: old-report.pdf
978
1226
  size: 245760
@@ -984,8 +1232,13 @@ paths:
984
1232
  createdAt: '2026-03-01T09:00:00.000Z'
985
1233
  lastModified: '2026-03-28T10:00:00.000Z'
986
1234
  - _id: 684c3b1f2d4e6g002b0h9c34
1235
+ _userId: 60a1b2c3d4e5f6001a2b3c4d
1236
+ _parentId: null
1237
+ __ancestorIds: []
1238
+ _integrationId: null
987
1239
  type: folder
988
1240
  name: Archived Reports
1241
+ size: 0
989
1242
  status: active
990
1243
  isSystem: false
991
1244
  deletedBy: 60a1b2c3d4e5f6001a2b3c4d
@@ -1059,6 +1312,11 @@ paths:
1059
1312
  default:
1060
1313
  value:
1061
1314
  _id: 683b2a0e1c3d5f001a9e8b01
1315
+ _userId: 624cb0346309dc3a543733a2
1316
+ _parentId: 683a1f2e9b0c4d001e8f7a23
1317
+ __ancestorIds:
1318
+ - 683a1f2e9b0c4d001e8f7a23
1319
+ _integrationId: null
1062
1320
  type: file
1063
1321
  name: quarterly-report-final.pdf
1064
1322
  description: Updated Q1 2026 financial report
@@ -1088,9 +1346,8 @@ paths:
1088
1346
  its entire subtree; the folder is removed immediately and its descendants
1089
1347
  follow asynchronously. Delete is never blocked by references — flows,
1090
1348
  exports, imports, and tokens that point at the item are left dangling and
1091
- fail at runtime, so check `GET /v1/storage/items/{_id}/dependencies`
1092
- first. A pending multipart upload cannot be deleted here — cancel it with
1093
- `POST /v1/storage/files/{_id}/cancel`.
1349
+ fail at runtime. A pending multipart upload cannot be deleted here —
1350
+ cancel it with `POST /v1/storage/files/{_id}/cancel`.
1094
1351
  operationId: deleteStorageItem
1095
1352
  tags:
1096
1353
  - File Storage
@@ -1506,9 +1763,13 @@ paths:
1506
1763
  default:
1507
1764
  value:
1508
1765
  _id: 685d4c2g3e5f7h003c1i0d45
1766
+ _userId: 624cb0346309dc3a543733a2
1767
+ _parentId: 684c3b1f2d4e6g002b0h9c34
1768
+ __ancestorIds:
1769
+ - 684c3b1f2d4e6g002b0h9c34
1770
+ _integrationId: null
1509
1771
  type: file
1510
1772
  name: quarterly-report-copy.pdf
1511
- _parentId: 684c3b1f2d4e6g002b0h9c34
1512
1773
  size: 5242880
1513
1774
  mimeType: application/pdf
1514
1775
  description: Q1 2026 financial report
@@ -1602,169 +1863,156 @@ paths:
1602
1863
  $ref: '#/components/responses/404-not-found'
1603
1864
  '422':
1604
1865
  $ref: '#/components/responses/422-unprocessable-entity'
1605
- /v1/storage/items/{_id}/dependencies:
1866
+ /v1/files/{_id}/audit:
1606
1867
  get:
1607
1868
  x-internal: false
1608
- operationId: listStorageItemDependencies
1869
+ summary: Get audit log for a file
1870
+ description: |-
1871
+ Returns the change history for a file — creation (recorded once the
1872
+ upload finalizes), renames and description edits, moves, content
1873
+ replacements, downloads, deletes, restores, and purges — newest first.
1874
+ Each entry records who made the change, when, and which fields were
1875
+ affected. History survives purging, so a purged file's entries stay
1876
+ readable. Folders have their own route, `GET /v1/folders/{_id}/audit`.
1609
1877
  tags:
1610
1878
  - File Storage
1611
- summary: List dependencies of an item
1612
- description: |-
1613
- Returns the resources that reference this item — flows, exports, imports,
1614
- MCP servers, and access tokens. These references are soft: they never
1615
- block a delete or move, and go dangling if the item is removed. Check this
1616
- before deleting or moving an item to see what may break.
1879
+ operationId: getStorageFileAudit
1617
1880
  parameters:
1618
1881
  - name: _id
1619
1882
  in: path
1883
+ description: File ID.
1620
1884
  required: true
1621
- description: Item ID.
1622
1885
  schema:
1623
1886
  type: string
1624
1887
  format: objectId
1625
1888
  x-celigo-refModel: storageitems
1626
1889
  examples:
1627
1890
  - 683b2a0e1c3d5f001a9e8b01
1891
+ - $ref: '#/components/parameters/Limit'
1892
+ - $ref: '#/components/parameters/After'
1893
+ - $ref: '#/components/parameters/From'
1894
+ - $ref: '#/components/parameters/To'
1895
+ - $ref: '#/components/parameters/Action'
1896
+ - $ref: '#/components/parameters/Source'
1897
+ - $ref: '#/components/parameters/ByUserId'
1628
1898
  responses:
1629
1899
  '200':
1630
- description: |-
1631
- Dependency map. Keys are resource-type strings; values are arrays of
1632
- dependency entries. Returns `{}` when nothing references the item.
1900
+ description: Array of audit entries, newest first.
1901
+ headers:
1902
+ Link:
1903
+ description: |-
1904
+ RFC 5988 pagination link. Includes `<...>; rel="next"` with an
1905
+ `after` cursor when more entries exist; absent on the final page.
1906
+ schema:
1907
+ type: string
1633
1908
  content:
1634
1909
  application/json:
1635
1910
  schema:
1636
- $ref: '#/components/schemas/DependencyResponse'
1911
+ type: array
1912
+ items:
1913
+ $ref: '#/components/schemas/StorageAuditEntry'
1637
1914
  examples:
1638
- withDependents:
1639
- summary: Item referenced by a flow
1915
+ default:
1916
+ summary: A file that was renamed after upload
1640
1917
  value:
1641
- flows:
1642
- - id: 673e486ac12b3453ea0ba99a
1643
- name: Nightly export
1644
- paths:
1645
- - pageGenerators[*]._exportId
1646
- accessLevel: manage
1647
- dependencyIds:
1648
- export:
1649
- - 673e486adc497ab5e649f1ca
1650
- empty:
1651
- summary: No dependents
1652
- value: {}
1918
+ - _id: 69f63dd77009ea11abf0bce3
1919
+ resourceType: file
1920
+ _resourceId: 683b2a0e1c3d5f001a9e8b01
1921
+ source: api
1922
+ event: update
1923
+ time: '2026-05-02T18:09:26.975Z'
1924
+ byUser:
1925
+ _id: 624cb0346309dc3a543733a2
1926
+ email: user@example.com
1927
+ name: Jane Doe
1928
+ fieldChanges:
1929
+ - fieldPath: name
1930
+ oldValue: report.pdf
1931
+ newValue: quarterly-report.pdf
1932
+ - _id: 6ab1f69bf9f97c6e8f353b3c
1933
+ resourceType: file
1934
+ _resourceId: 683b2a0e1c3d5f001a9e8b01
1935
+ source: ui
1936
+ event: create
1937
+ time: '2026-05-02T17:58:39.755Z'
1938
+ fieldChanges: []
1939
+ byUser:
1940
+ _id: 624cb0346309dc3a543733a2
1941
+ email: user@example.com
1942
+ name: Jane Doe
1943
+ '204':
1944
+ description: No audit entries exist for this file ID.
1945
+ '400':
1946
+ description: The `_id` is not a valid ObjectId (`invalid_ref`), or `limit` is out of range (`invalid_query_param`).
1947
+ content:
1948
+ application/json:
1949
+ schema:
1950
+ $ref: '#/components/schemas/Error'
1951
+ examples:
1952
+ invalidId:
1953
+ value:
1954
+ errors:
1955
+ - code: invalid_ref
1956
+ message: Please provide a valid _id.
1957
+ invalidLimit:
1958
+ value:
1959
+ errors:
1960
+ - code: invalid_query_param
1961
+ message: Invalid limit sent in request.
1653
1962
  '401':
1654
1963
  $ref: '#/components/responses/401-unauthorized'
1655
- '404':
1656
- $ref: '#/components/responses/404-not-found'
1657
- /v1/storageitems/{_id}/audit:
1964
+ '422':
1965
+ description: |-
1966
+ A filter value is invalid — an unknown `action` or `source`
1967
+ (`invalid_audit_field`), a `from`/`to` that is not ISO 8601
1968
+ (`invalid_timestamp_format`), or a window outside the last three
1969
+ years or in the future (`invalid_time_period`).
1970
+ content:
1971
+ application/json:
1972
+ schema:
1973
+ $ref: '#/components/schemas/Error'
1974
+ examples:
1975
+ invalidSource:
1976
+ value:
1977
+ errors:
1978
+ - code: invalid_audit_field
1979
+ message: bogus is not a valid audit source.
1980
+ invalidTimePeriod:
1981
+ value:
1982
+ errors:
1983
+ - code: invalid_time_period
1984
+ message: 'Please make sure that the time provided for field: "to" is not older than 3 year(s) to current date and is not a future date.'
1985
+ /v1/folders/{_id}/audit:
1658
1986
  get:
1659
1987
  x-internal: false
1660
- summary: Get audit log for an item
1988
+ summary: Get audit log for a folder
1661
1989
  description: |-
1662
- Returns the change history for a storage item — creation, renames and
1663
- description edits, moves, content replacements, downloads, deletes,
1664
- restores, and purges — newest first. Each entry records who made the
1665
- change, when, and which fields were affected.
1990
+ Returns the change history for a folder — creation, renames and
1991
+ description edits, moves, deletes, restores, and purges — newest first.
1992
+ Each entry records who made the change, when, and which fields were
1993
+ affected. History survives purging, so a purged folder's entries stay
1994
+ readable. Files have their own route, `GET /v1/files/{_id}/audit`.
1666
1995
  tags:
1667
1996
  - File Storage
1668
- operationId: getStorageItemAudit
1997
+ operationId: getStorageFolderAudit
1669
1998
  parameters:
1670
1999
  - name: _id
1671
2000
  in: path
1672
- description: Item ID.
2001
+ description: Folder ID.
1673
2002
  required: true
1674
2003
  schema:
1675
2004
  type: string
1676
2005
  format: objectId
1677
2006
  x-celigo-refModel: storageitems
1678
2007
  examples:
1679
- - 683b2a0e1c3d5f001a9e8b01
1680
- - name: limit
1681
- in: query
1682
- description: Maximum number of audit entries to return per page.
1683
- required: false
1684
- schema:
1685
- type: integer
1686
- minimum: 1
1687
- maximum: 1000
1688
- default: 1000
1689
- examples:
1690
- - 100
1691
- - name: after
1692
- in: query
1693
- required: false
1694
- description: |-
1695
- Opaque pagination cursor for the next page. Take it from the `after`
1696
- value in the `Link` response header's `rel="next"` URL rather than
1697
- constructing it.
1698
- schema:
1699
- type: string
1700
- examples:
1701
- - W3siJGRhdGUiOiIyMDI2LTA1LTAxVDAwOjAwOjAwLjAwMFoifSwiNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIl0
1702
- - name: from
1703
- in: query
1704
- required: false
1705
- description: Only return entries at or after this timestamp.
1706
- schema:
1707
- type: string
1708
- format: date-time
1709
- examples:
1710
- - '2026-05-01T00:00:00.000Z'
1711
- - name: to
1712
- in: query
1713
- required: false
1714
- description: Only return entries at or before this timestamp.
1715
- schema:
1716
- type: string
1717
- format: date-time
1718
- examples:
1719
- - '2026-05-31T23:59:59.999Z'
1720
- - name: action
1721
- in: query
1722
- required: false
1723
- description: Filter by the change type. Maps to the `event` field on each entry.
1724
- schema:
1725
- type: string
1726
- enum:
1727
- - create
1728
- - update
1729
- - delete
1730
- - download
1731
- - restore
1732
- - purge
1733
- examples:
1734
- - update
1735
- x-enumDescriptions:
1736
- create: An item was created.
1737
- update: An item was renamed, re-described, moved, or had its content replaced.
1738
- delete: An item was soft-deleted to the recycle bin.
1739
- download: A presigned download URL was issued for a file.
1740
- restore: An item was restored from the recycle bin.
1741
- purge: An item was permanently purged from the recycle bin.
1742
- - name: source
1743
- in: query
1744
- required: false
1745
- description: Filter by how the change was initiated.
1746
- schema:
1747
- type: string
1748
- enum:
1749
- - ui
1750
- - api
1751
- - system
1752
- examples:
1753
- - ui
1754
- x-enumDescriptions:
1755
- ui: Change made through the Celigo web UI.
1756
- api: Change made via the REST API.
1757
- system: Change made automatically by the platform.
1758
- - name: _byUserId
1759
- in: query
1760
- required: false
1761
- description: Filter to changes performed by a single user.
1762
- schema:
1763
- type: string
1764
- format: objectId
1765
- x-celigo-refModel: users
1766
- examples:
1767
- - 624cb0346309dc3a543733a2
2008
+ - 684c3b1f2d4e6a002b0f9c34
2009
+ - $ref: '#/components/parameters/Limit'
2010
+ - $ref: '#/components/parameters/After'
2011
+ - $ref: '#/components/parameters/From'
2012
+ - $ref: '#/components/parameters/To'
2013
+ - $ref: '#/components/parameters/Action'
2014
+ - $ref: '#/components/parameters/Source'
2015
+ - $ref: '#/components/parameters/ByUserId'
1768
2016
  responses:
1769
2017
  '200':
1770
2018
  description: Array of audit entries, newest first.
@@ -1780,133 +2028,77 @@ paths:
1780
2028
  schema:
1781
2029
  type: array
1782
2030
  items:
1783
- type: object
1784
- properties:
1785
- _id:
1786
- type: string
1787
- format: objectId
1788
- description: Unique identifier for this audit entry.
1789
- examples:
1790
- - 69f63dd77009ea11abf0bce3
1791
- resourceType:
1792
- type: string
1793
- description: Always `storageitem` for this endpoint.
1794
- examples:
1795
- - storageitem
1796
- _resourceId:
1797
- type: string
1798
- format: objectId
1799
- x-celigo-refModel: storageitems
1800
- description: ID of the item this entry belongs to.
1801
- examples:
1802
- - 683b2a0e1c3d5f001a9e8b01
1803
- event:
1804
- type: string
1805
- description: Type of change that occurred.
1806
- enum:
1807
- - create
1808
- - update
1809
- - delete
1810
- - download
1811
- - restore
1812
- - purge
1813
- x-enumDescriptions:
1814
- create: Item was created.
1815
- update: Item was renamed, re-described, moved, or had its content replaced.
1816
- delete: Item was soft-deleted to the recycle bin.
1817
- download: A presigned download URL was issued for the file.
1818
- restore: Item was restored from the recycle bin.
1819
- purge: Item was permanently purged.
1820
- source:
1821
- type: string
1822
- description: How the change was initiated.
1823
- enum:
1824
- - api
1825
- - ui
1826
- - system
1827
- x-enumDescriptions:
1828
- api: Change made via the REST API.
1829
- ui: Change made through the Celigo UI.
1830
- system: Change made by an automated platform process.
1831
- time:
1832
- type: string
1833
- format: date-time
1834
- description: When the change occurred.
1835
- examples:
1836
- - '2026-05-02T18:09:26.975Z'
1837
- byUser:
1838
- type: object
1839
- description: User who made the change.
1840
- properties:
1841
- _id:
1842
- type: string
1843
- format: objectId
1844
- x-celigo-refModel: users
1845
- description: User ID.
1846
- examples:
1847
- - 624cb0346309dc3a543733a2
1848
- email:
1849
- type: string
1850
- format: email
1851
- description: User email address.
1852
- examples:
1853
- - user@example.com
1854
- name:
1855
- type: string
1856
- description: User display name.
1857
- examples:
1858
- - Tyler Lamparter
1859
- fieldChanges:
1860
- type: array
1861
- description: Fields that were modified.
1862
- items:
1863
- type: object
1864
- properties:
1865
- fieldPath:
1866
- type: string
1867
- description: Dot-notation path of the changed field.
1868
- examples:
1869
- - name
1870
- oldValue:
1871
- description: Previous value (absent on create).
1872
- newValue:
1873
- description: New value (absent on delete).
1874
- deletedInfo:
1875
- type: object
1876
- description: Metadata about the deleted item. Present on `delete` events.
1877
- properties:
1878
- name:
1879
- type: string
1880
- description: Name of the item at the time of deletion.
1881
- examples:
1882
- - old-report.pdf
2031
+ $ref: '#/components/schemas/StorageAuditEntry'
1883
2032
  examples:
1884
2033
  default:
2034
+ summary: A folder that was created and later deleted
1885
2035
  value:
1886
- - _id: 69f63dd77009ea11abf0bce3
1887
- resourceType: storageitem
1888
- _resourceId: 683b2a0e1c3d5f001a9e8b01
2036
+ - _id: 6ab1f736f9f97c6e8f353b5a
2037
+ resourceType: folder
2038
+ _resourceId: 684c3b1f2d4e6a002b0f9c34
1889
2039
  source: api
1890
- event: update
1891
- time: '2026-05-02T18:09:26.975Z'
2040
+ event: delete
2041
+ time: '2026-09-22T03:34:13.999Z'
2042
+ fieldChanges: []
2043
+ deletedInfo:
2044
+ name: Reports
1892
2045
  byUser:
1893
2046
  _id: 624cb0346309dc3a543733a2
2047
+ name: Jane Doe
2048
+ email: user@example.com
2049
+ - _id: 6ab1f25df9f97c6e8f352d63
2050
+ resourceType: folder
2051
+ _resourceId: 684c3b1f2d4e6a002b0f9c34
2052
+ source: api
2053
+ event: create
2054
+ time: '2026-09-22T03:13:33.631Z'
2055
+ fieldChanges: []
2056
+ byUser:
2057
+ _id: 624cb0346309dc3a543733a2
2058
+ name: Jane Doe
1894
2059
  email: user@example.com
1895
- name: Tyler Lamparter
1896
- fieldChanges:
1897
- - fieldPath: name
1898
- oldValue: report.pdf
1899
- newValue: quarterly-report.pdf
1900
2060
  '204':
1901
- description: No audit entries exist for this item.
2061
+ description: No audit entries exist for this folder ID.
1902
2062
  '400':
1903
- $ref: '#/components/responses/400-bad-request'
2063
+ description: The `_id` is not a valid ObjectId (`invalid_ref`), or `limit` is out of range (`invalid_query_param`).
2064
+ content:
2065
+ application/json:
2066
+ schema:
2067
+ $ref: '#/components/schemas/Error'
2068
+ examples:
2069
+ invalidId:
2070
+ value:
2071
+ errors:
2072
+ - code: invalid_ref
2073
+ message: Please provide a valid _id.
2074
+ invalidLimit:
2075
+ value:
2076
+ errors:
2077
+ - code: invalid_query_param
2078
+ message: Invalid limit sent in request.
1904
2079
  '401':
1905
2080
  $ref: '#/components/responses/401-unauthorized'
1906
- '404':
1907
- $ref: '#/components/responses/404-not-found'
1908
2081
  '422':
1909
- $ref: '#/components/responses/422-unprocessable-entity'
2082
+ description: |-
2083
+ A filter value is invalid — an unknown `action` or `source`
2084
+ (`invalid_audit_field`), a `from`/`to` that is not ISO 8601
2085
+ (`invalid_timestamp_format`), or a window outside the last three
2086
+ years or in the future (`invalid_time_period`).
2087
+ content:
2088
+ application/json:
2089
+ schema:
2090
+ $ref: '#/components/schemas/Error'
2091
+ examples:
2092
+ invalidAction:
2093
+ value:
2094
+ errors:
2095
+ - code: invalid_audit_field
2096
+ message: bogus is not a valid audit action.
2097
+ invalidTimestamp:
2098
+ value:
2099
+ errors:
2100
+ - code: invalid_timestamp_format
2101
+ message: 'Please make sure that the time provided for field: "from" is in ISO8601 time format.'
1910
2102
  /v1/storage/usage:
1911
2103
  get:
1912
2104
  x-internal: false
@@ -2163,10 +2355,15 @@ components:
2163
2355
  format: uri
2164
2356
  description: |-
2165
2357
  Presigned S3 URL to PUT the file's bytes to in a single request.
2166
- Present when uploadType is single. Expires after one hour; use
2167
- `POST /v1/storage/files/refresh-urls` to reissue.
2358
+ Present when uploadType is single. The PUT must carry the header
2359
+ `x-amz-server-side-encryption: AES256` — it is part of the signature,
2360
+ and S3 rejects the upload with 403 `SignatureDoesNotMatch` without
2361
+ it. The URL's `X-Amz-Expires` parameter carries its lifetime; use
2362
+ `POST /v1/storage/files/refresh-urls` to reissue an expired one.
2168
2363
  examples:
2169
2364
  - https://integrator-file-storage.s3.us-west-2.amazonaws.com/...
2365
+ x-celigo-ai-guidance:
2366
+ - Send the header x-amz-server-side-encryption AES256 on the presigned PUT; omitting it fails with 403 SignatureDoesNotMatch from S3, and the item then stays pending.
2170
2367
  uploadId:
2171
2368
  type: string
2172
2369
  description: |-
@@ -2394,6 +2591,14 @@ components:
2394
2591
  folder — the name is not a unique key.
2395
2592
  examples:
2396
2593
  - logo.png
2594
+ _userId:
2595
+ type: string
2596
+ format: objectId
2597
+ readOnly: true
2598
+ x-celigo-refModel: users
2599
+ description: Environment user that owns the item; every item an account lists carries its own environment's value.
2600
+ examples:
2601
+ - 624cb0346309dc3a543733a2
2397
2602
  _parentId:
2398
2603
  type:
2399
2604
  - string
@@ -2406,6 +2611,30 @@ components:
2406
2611
  account root.
2407
2612
  examples:
2408
2613
  - 683a1f2e9b0c4d001e8f7a23
2614
+ _integrationId:
2615
+ type:
2616
+ - string
2617
+ - 'null'
2618
+ format: objectId
2619
+ readOnly: true
2620
+ x-celigo-refModel: integrations
2621
+ description: |-
2622
+ Integration whose system folder tree contains this item. Set on an
2623
+ integration's root folder and inherited by everything created inside
2624
+ it; null for user-created folders and files at the account root and
2625
+ their descendants. Filter the list endpoint with `_integrationId` to
2626
+ scope a listing to one integration.
2627
+ examples:
2628
+ - 6ab1e7ab38d7733b4594d0d2
2629
+ integrationName:
2630
+ type: string
2631
+ readOnly: true
2632
+ description: |-
2633
+ Name of the integration an integration root folder belongs to. Present
2634
+ only on that root folder (the `isSystem` folder at the account root);
2635
+ items inside the tree carry `_integrationId` but not this field.
2636
+ examples:
2637
+ - Order to cash
2409
2638
  __ancestorIds:
2410
2639
  type: array
2411
2640
  readOnly: true
@@ -2424,9 +2653,9 @@ components:
2424
2653
  format: int64
2425
2654
  readOnly: true
2426
2655
  description: |-
2427
- File size in bytes. Present when type is file; folders carry no
2428
- size. While an upload is pending this reflects the reserved quota,
2429
- and is reconciled to the actual byte count once the upload finalizes.
2656
+ File size in bytes; always `0` for folders, which hold no content.
2657
+ While an upload is pending this reflects the reserved quota, and is
2658
+ reconciled to the actual byte count once the upload finalizes.
2430
2659
  examples:
2431
2660
  - 245760
2432
2661
  mimeType:
@@ -2436,7 +2665,8 @@ components:
2436
2665
  description: |-
2437
2666
  Media type recorded at upload time, used to set the download
2438
2667
  Content-Type. Present when type is file; absent for folders and for
2439
- files uploaded without a declared type.
2668
+ files uploaded without a declared type. Matched case-sensitively by
2669
+ the `mimeType` and `mimeType_nin` list filters.
2440
2670
  examples:
2441
2671
  - image/png
2442
2672
  description:
@@ -2525,6 +2755,7 @@ components:
2525
2755
  - '2026-03-28T14:30:00.000Z'
2526
2756
  required:
2527
2757
  - _id
2758
+ - _userId
2528
2759
  - type
2529
2760
  - name
2530
2761
  - status
@@ -2763,82 +2994,133 @@ components:
2763
2994
  with no name produces a second file with the same name.
2764
2995
  examples:
2765
2996
  - quarterly-report-copy.pdf
2766
- DependencyEntry:
2997
+ StorageAuditEntry:
2767
2998
  type: object
2768
- description: A single resource that depends on the queried resource.
2999
+ description: |-
3000
+ One change recorded against a file or folder. Returned newest first by
3001
+ `GET /v1/files/{_id}/audit` and `GET /v1/folders/{_id}/audit`.
3002
+ required:
3003
+ - _id
3004
+ - resourceType
3005
+ - _resourceId
3006
+ - event
3007
+ - source
3008
+ - time
2769
3009
  properties:
2770
- id:
3010
+ _id:
2771
3011
  type: string
2772
- description: Unique identifier of the dependent resource.
3012
+ format: objectId
3013
+ description: Unique identifier for this audit entry.
2773
3014
  examples:
2774
- - 61f92026dd053843b5d72350
2775
- name:
3015
+ - 69f63dd77009ea11abf0bce3
3016
+ resourceType:
2776
3017
  type: string
2777
- description: Display name of the dependent resource.
2778
- examples:
2779
- - Import Orders to NetSuite
2780
- paths:
2781
- type: array
3018
+ enum:
3019
+ - file
3020
+ - folder
3021
+ x-enumDescriptions:
3022
+ file: The entry belongs to a file
3023
+ folder: The entry belongs to a folder
2782
3024
  description: |-
2783
- Dot-notation paths within the dependent resource that reference
2784
- the target resource. `[*]` denotes array elements.
2785
- items:
2786
- type: string
3025
+ Type of storage item the entry belongs to. Matches the route used —
3026
+ `file` for `/v1/files/{_id}/audit`, `folder` for
3027
+ `/v1/folders/{_id}/audit`.
2787
3028
  examples:
2788
- - - hooks.preSavePage._scriptId
2789
- accessLevel:
3029
+ - folder
3030
+ _resourceId:
3031
+ type: string
3032
+ format: objectId
3033
+ x-celigo-refModel: storageitems
3034
+ description: ID of the item this entry belongs to.
3035
+ examples:
3036
+ - 683b2a0e1c3d5f001a9e8b01
3037
+ event:
2790
3038
  type: string
2791
- description: The caller's access level on the dependent resource.
3039
+ enum:
3040
+ - create
3041
+ - update
3042
+ - delete
3043
+ - download
3044
+ - restore
3045
+ - purge
3046
+ x-enumDescriptions:
3047
+ create: Item was created (a file is recorded once its upload finalizes)
3048
+ update: Item was renamed, re-described, moved, or had its content replaced
3049
+ delete: Item was soft-deleted to the recycle bin
3050
+ download: A presigned download URL was issued for the file
3051
+ restore: Item was restored from the recycle bin
3052
+ purge: Item was permanently purged
3053
+ description: |-
3054
+ Type of change. An item's history starts with `create`, gathers
3055
+ `update` and `download` entries while it is live, and ends with
3056
+ `delete` followed by either `restore` (back to live) or `purge`.
3057
+ examples:
3058
+ - update
3059
+ source:
3060
+ type: string
3061
+ enum:
3062
+ - api
3063
+ - ui
3064
+ - system
3065
+ x-enumDescriptions:
3066
+ api: Change made via the REST API
3067
+ ui: Change made through the Celigo UI
3068
+ system: Change made by an automated platform process, such as creating an integration's system folder
3069
+ description: How the change was initiated.
2792
3070
  examples:
2793
- - manage
2794
- dependencyIds:
3071
+ - api
3072
+ time:
3073
+ type: string
3074
+ format: date-time
3075
+ description: Timestamp when the change occurred.
3076
+ examples:
3077
+ - '2026-05-02T18:09:26.975Z'
3078
+ byUser:
2795
3079
  type: object
2796
- description: |-
2797
- Map of resource types to arrays of IDs that this dependent
2798
- resource references on the target. Keys are singular or plural
2799
- resource type strings; values are arrays of ID strings.
2800
- additionalProperties:
2801
- type: array
2802
- items:
3080
+ description: User who made the change.
3081
+ properties:
3082
+ _id:
2803
3083
  type: string
2804
- example:
2805
- script:
2806
- - 64ff4b21612a134bd2f45531
2807
- required:
2808
- - id
2809
- - name
2810
- - paths
2811
- - accessLevel
2812
- - dependencyIds
2813
- DependencyResponse:
2814
- type: object
2815
- description: |
2816
- Map of dependent-resource types to arrays of dependency entries.
2817
- Keys are plural resource type strings (e.g. `flows`, `imports`,
2818
- `connections`). An empty object `{}` means no dependents.
2819
- additionalProperties:
2820
- type: array
2821
- items:
2822
- $ref: '#/components/schemas/DependencyEntry'
2823
- example:
2824
- exports:
2825
- - id: 64ff4b21612a134bd2f45534
2826
- name: Bank FTP Export
2827
- paths:
2828
- - hooks.preSavePage._scriptId
2829
- accessLevel: manage
2830
- dependencyIds:
2831
- script:
2832
- - 64ff4b21612a134bd2f45531
2833
- flows:
2834
- - id: 64ff4b22612a134bd2f45538
2835
- name: CAMT-053 to Celigo CAM Format
2836
- paths:
2837
- - pageGenerators[*]._exportId
2838
- accessLevel: manage
2839
- dependencyIds:
2840
- export:
2841
- - 64ff4b21612a134bd2f45534
3084
+ format: objectId
3085
+ x-celigo-refModel: users
3086
+ description: User ID.
3087
+ examples:
3088
+ - 624cb0346309dc3a543733a2
3089
+ email:
3090
+ type: string
3091
+ format: email
3092
+ description: User email address.
3093
+ examples:
3094
+ - user@example.com
3095
+ name:
3096
+ type: string
3097
+ description: User display name.
3098
+ examples:
3099
+ - Jane Doe
3100
+ fieldChanges:
3101
+ type: array
3102
+ description: Fields that were modified. Empty on `create` and `delete` entries.
3103
+ items:
3104
+ type: object
3105
+ properties:
3106
+ fieldPath:
3107
+ type: string
3108
+ description: Dot-notation path of the changed field.
3109
+ examples:
3110
+ - name
3111
+ oldValue:
3112
+ description: Previous value (absent on create).
3113
+ newValue:
3114
+ description: New value (absent on delete).
3115
+ deletedInfo:
3116
+ type: object
3117
+ description: Metadata about the deleted item. Present on `delete` events.
3118
+ properties:
3119
+ name:
3120
+ type: string
3121
+ description: Name of the item at the time of deletion.
3122
+ examples:
3123
+ - old-report.pdf
2842
3124
  Usage:
2843
3125
  type: object
2844
3126
  description: Account-wide storage usage and entitlement, aggregated across all environments.
@@ -3098,5 +3380,105 @@ components:
3098
3380
  errors:
3099
3381
  - code: unprocessable_entity
3100
3382
  message: The request could not be processed due to a semantic error.
3383
+ parameters:
3384
+ Limit:
3385
+ name: limit
3386
+ in: query
3387
+ description: Maximum number of audit entries to return per page.
3388
+ required: false
3389
+ schema:
3390
+ type: integer
3391
+ minimum: 1
3392
+ maximum: 1000
3393
+ default: 1000
3394
+ examples:
3395
+ - 100
3396
+ After:
3397
+ name: after
3398
+ in: query
3399
+ required: false
3400
+ description: |-
3401
+ Opaque pagination cursor for the next page. Take it from the `after`
3402
+ value in the `Link` response header's `rel="next"` URL rather than
3403
+ constructing it.
3404
+ schema:
3405
+ type: string
3406
+ examples:
3407
+ - W3siJGRhdGUiOiIyMDI2LTA5LTIyVDAzOjM0OjEzLjk5OVoifSwiNmFiMWY3MzZmOWY5N2M2ZThmMzUzYjVhIl0
3408
+ From:
3409
+ name: from
3410
+ in: query
3411
+ required: false
3412
+ description: |-
3413
+ Only return entries at or after this timestamp. Must be within the last
3414
+ three years and not in the future.
3415
+ schema:
3416
+ type: string
3417
+ format: date-time
3418
+ examples:
3419
+ - '2026-05-01T00:00:00.000Z'
3420
+ To:
3421
+ name: to
3422
+ in: query
3423
+ required: false
3424
+ description: |-
3425
+ Only return entries at or before this timestamp. Must be within the last
3426
+ three years and not in the future.
3427
+ schema:
3428
+ type: string
3429
+ format: date-time
3430
+ examples:
3431
+ - '2026-05-31T23:59:59.999Z'
3432
+ Action:
3433
+ name: action
3434
+ in: query
3435
+ required: false
3436
+ description: Filter by the change type. Maps to the `event` field on each entry.
3437
+ schema:
3438
+ type: string
3439
+ enum:
3440
+ - create
3441
+ - update
3442
+ - delete
3443
+ - download
3444
+ - restore
3445
+ - purge
3446
+ examples:
3447
+ - update
3448
+ x-enumDescriptions:
3449
+ create: An item was created
3450
+ update: An item was renamed, re-described, moved, or had its content replaced
3451
+ delete: An item was soft-deleted to the recycle bin
3452
+ download: A presigned download URL was issued for a file
3453
+ restore: An item was restored from the recycle bin
3454
+ purge: An item was permanently purged from the recycle bin
3455
+ Source:
3456
+ name: source
3457
+ in: query
3458
+ required: false
3459
+ description: Filter by how the change was initiated.
3460
+ schema:
3461
+ type: string
3462
+ enum:
3463
+ - api
3464
+ - ui
3465
+ - system
3466
+ examples:
3467
+ - api
3468
+ x-enumDescriptions:
3469
+ api: Change made via the REST API
3470
+ ui: Change made through the Celigo UI
3471
+ system: Change made automatically by the platform
3472
+ ByUserId:
3473
+ name: _byUserId
3474
+ in: query
3475
+ required: false
3476
+ description: Filter to changes performed by a single user.
3477
+ schema:
3478
+ type: string
3479
+ format: objectId
3480
+ x-celigo-refModel: users
3481
+ examples:
3482
+ - 624cb0346309dc3a543733a2
3101
3483
  x-internal: false
3102
3484
  x-enable-proxy: true