Changelog
The File Service’s API is versioned in its path (/api/v1); within a version, changes only add (new fields, new operations, new error codes) and never remove or rename. The libraries follow semver; their own changelogs are generated from each package.
Packages
Section titled “Packages”| Package | Version | Changelog |
|---|---|---|
@central-code-station/ccs-files-client |
2.0.0 | ccs-files-client changelog |
@central-code-station/ccs-files-user-client |
1.3.0 | ccs-files-user-client changelog |
ccs_files_user_client (Flutter) |
1.3.0 | ccs_files_user_client changelog |
2026-10-25: production addresses by default
Section titled “2026-10-25: production addresses by default”ccs-files-client2.0.0. The File Service’s address is two variables,FILES_API_URLandFILES_API_RESOURCE(either one alone is enough when it has the usual…/api/v1or…/apishape), elseCCS_ENVIRONMENT;filesEndpoints()returns{ apiUrl, resource }.FileLock.user_id, which the service never sent, is gone. No change to the API.- The libraries know where the platform runs.
ccs-files-client1.4.0 makesissuerUrl,apiUrlandresourceoptional: omitted, they are production’s (https://auth.centralcodestation.com,https://files.centralcodestation.com/api/v1and/api), andCCS_ENVIRONMENT=localorstaging(orCCS_ISSUER_URLand, since 2.0.0,FILES_API_URL+FILES_API_RESOURCE) in the backend’s environment moves them; an explicit option always wins,env: {}ignores the environment.ccs-files-user-client1.3.0 andccs_files_user_client1.3.0 makeapiUrloptional with the production default;fromTokenRouteis unchanged and still the recommended way. No change to the API. - Requests may carry an
x-request-id(letters, digits,.,_,:and-, up to 128 characters); the service echoes it, or a new one, in the response.
2026-10-24: application-managed folders
Section titled “2026-10-24: application-managed folders”- Application-managed folders: a backend client with
files:managecreates a folder withmanaged: true, or marks and unmarks one withPATCH P/folders/:folder_id. The folder and its subtree become read-only for people, the tenant owner included, so a change in the Files console cannot break the references the application keeps; its backend clients change them as before. People keep viewing, downloading, copying out, legal holds and emptying the trash. Inside a managed folder only the application’s backend creates share links; a link a person made before the mark answersshare_gone. Every folder and file gainsmanagedandmanaged_by. New error codefolder_managed. New routePOST P/folders/:folder_id/release-management: the tenant owner’s audited emergency release, with a reason. Audited asfolder.managed,folder.unmanaged,folder.management_released. In the console, a Managed by badge, the editing actions hidden, and Release from app management for the tenant owner. See Application-managed folders. ccs-files-client1.3.0 (managedonfolders.createandfolders.update),ccs-files-user-client1.2.0 andccs_files_user_client1.2.0 (managed,managed_by, the read-only helper andreleaseManagement); all three readfolder_managed.
2026-10-23: legal hold, search at scale, storage of your own, platform reports
Section titled “2026-10-23: legal hold, search at scale, storage of your own, platform reports”- Legal hold: a hold with a reason and an optional end keeps a file’s bytes; purging it and deleting its versions answer
file_on_hold, the trash and version pruning keep it, and the work on it goes on.File.holdgainsuntil. New routesPUTandDELETE P/files/:file_id/holdandGET P/holds, withfiles.manage; in the console, a banner and actions on the file page and a Legal holds page. Audited ashold.placed,hold.updated,hold.released. See Legal hold. - Search in large applications:
in=namenow matches names that start with the query, ignoring case (it matched inside names before, and titles); titles and other words match whole words throughkeywords, and the default search falls back to the name prefix when no whole word matches.totalstays exact up to 10,000 andnullabove. See Search. - A tenant’s files in its own storage: platform administrators can add storage accounts, assign a tenant to one, and move its files there or back while downloads and uploads keep working; file ids never change. A public file’s
public_urlcan change after a move: read it from the file again. Treat every upload, download and public URL as opaque: it may point at a store, a CDN or the service’s own host. New error codes for storage accounts (storage_account_not_found,storage_account_in_use,storage_account_not_verified,storage_account_verification_failed,storage_adapter_not_allowed,storage_migration_not_found,storage_migration_in_progress). See Where files are stored and Storage accounts. - Usage trends and platform reports:
GET P/usageanswersdaily, the application’s last 30 days, from daily snapshots kept 400 days. Platform administrators get usage trends across tenants (largest, fastest growing, closest to their quota), a tenant’s trend per application, a tenant’s audit log across its applications, and audit and usage exports in NDJSON or CSV, each read and export audited. See Platform administration. ccs-files-client1.2.0 (legal hold,daily, theplatformnamespace),ccs-files-user-client1.1.0 andccs_files_user_client1.1.0 (legal hold and the typedhold).
2026-10-23: media in CCS Chat
Section titled “2026-10-23: media in CCS Chat”- CCS Chat stores its attachments here. Photos, videos and files of Chat messages are files of the tenant application, in a
chatfolder with one folder per conversation, open to the conversation’s members. Chat’s uploads use the upload policy namedchatwhen the application defines one, and the application’s own rules otherwise; scanning, renditions, quota and the trash apply as to any file. No change to the API. See Media in Chat.
2026-10-23: scanning, previews, content search, webhooks and the user clients
Section titled “2026-10-23: scanning, previews, content search, webhooks and the user clients”- Malware scanning of every upload, with a choice per application: block downloads until the scan is clean (the default), serve during the scan, or off; and what a file whose scan failed or that is too large to scan gets. Infected files are quarantined and
file.quarantinedis published. See Malware scanning. - PDF previews: the first page as
thumbnailandpreview. Playable video:mp4_720pandmp4_1080prenditions, picked by the preview call. Office documents get no preview. See Previews and renditions. - Media metadata: the capture date and the camera of photos, the title and the author of PDFs.
- Content search:
in=contentmatches the text of PDF, Office, OpenDocument, text, HTML and JSON files, with highlights. See Searching inside documents. - Webhooks: the events as signed HTTPS calls to your backend, with a ping when saved, retries, a delivery log, and switching off after repeated failures. New error code
webhook_url_not_allowed. See Webhooks. ccs-files-user-client1.0.0, the web client (uploads with progress, pause, resume and cancel, previews, Angular and React), andccs_files_user_client1.0.0, the Flutter package (uploads that resume after a restart, a persisted queue). See the web and Flutter quickstarts.ccs-files-client1.1.0: the new fields, and response types corrected to match the API.
2026-10-22: first release
Section titled “2026-10-22: first release”- The File Service API v1: folders, upload tickets with single PUT and multipart uploads to signed URLs, files with metadata, external references, versions, renditions of images and videos, signed download, preview and batch URLs, visibility (private, application, public), search with filters, access entries with inheritance, the role matrix of the eleven
files.*keys, share links with expiry, password and download limits, the trash, quotas per application and tenant, settings, usage and the audit log. - The Files console: browse and upload (files and folders, with pause and resume), file details with versions, permissions, share links and activity, search, trash, share links, the Permissions, Settings, Usage and Audit pages, platform administration, and public share link pages.
- Events through the Notification Service:
file.ready,file.failed,file.status.changed,file.shared,file.version.createdandfolder.changed. ccs-files-client1.0.0, the Node.js client for backends.- Also in this release:
on_name_conflict: "rename"on upload tickets,external_refon folders withGET P/folders/by-external-ref/:external_ref,GET P/jobs/:job_idfor background work, and users listing their own share links onGET P/shares.
What is coming is on What’s coming.