Current public contract
The current backend Files controller does not expose a public move, archive, restore, ACL, retention, or multipart-session endpoint. Do not build a recovery promise around frontend compatibility controls that are not backed by the current public API.
Path-oriented identity
Files storesfileName separately from path:
fileNamecannot contain/;- a non-empty
pathcannot begin or end with/; - the target path must already exist;
- root objects use
path: null; - the stable API reference is still
fileId, not the reconstructed display path.
force: true lets the legacy service replace a conflicting path/name record. This is not the same as Storage replacement: it does not use the caller-observed entry version as an optimistic concurrency guard.
Legacy direct upload
The browser flow is:filesSingle quota when the record is created. The returned upload constraints, file identifier, and actor metadata bind the managed upload to that record.
A successful byte transfer is not a reason to invent a new durable contract around Files. Re-query the fileId before downstream work and use the legacy FILE_FINALIZED event only while maintaining an existing event integration.
Legacy event topics
Legacy upload lifecycle events are normalized as:FILE_FINALIZED;FILE_DELETED;FILE_ARCHIVED;FILE_UPDATEDfor supported metadata updates.
STORAGE_CREATED, or STORAGE_SYNCHRONIZED when asynchronous text statistics must be ready before work starts.
What Storage adds
Migrate an existing fileId workflow
1
Inventory references
Find application rows, Component inputs, Events, dashboard definitions, and external systems that persist
fileId or a Files path.2
Create the governed destination
Create or ensure a Storage folder. Configure the effective User/Group ACL and retention before moving production traffic.
3
Copy and finalize
Read the legacy object through its temporary download URL, stream it into a Storage target, and wait for a finalized
storageEntryId.4
Update consumers
Persist the new
storageEntryId; change Components to the current storage.* API and Events to Storage lifecycle topics.5
Verify the execution principal
Preview, download, batch-read, and process the object as the real user or Job service account—not only as an administrator.
6
Retire the legacy object
Stop new writes, observe the migrated workflow, and soft-delete the legacy record only after every consumer uses Storage.
Copying bytes is only half of migration. Identity, ACL, retention, events, and every persisted reference must move before the old
fileId can be retired.New code uses Storage
Legacy low-code file helpers and signed Files URL helpers remain compatibility-only. This guide intentionally does not publish their signatures or examples. New implementations use:storage.getFile()andstorage.getText();storage.getFileStats()andstorage.getFileData();storage.putObject();storage.createUploadSession()withuploadPart()andfinalizeUploadSession();storage.archiveEntry(),restoreEntry(), anddeleteEntry();- Storage
sourceandtargetobjects inapi.httpCall().

