Release a folder from its application's management
const url = 'https://files.centralcodestation.com/api/v1/tenants/example/applications/example/folders/example/release-management';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"reason":"The Fitness backend was retired; the files are handed over to the editors"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://files.centralcodestation.com/api/v1/tenants/example/applications/example/folders/example/release-management \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "reason": "The Fitness backend was retired; the files are handed over to the editors" }'The tenant owner’s emergency action: removes the application-managed mark from the folder that carries it, so people can change it again. The reason is kept in the audit log (folder.management_released). It may break the application’s references to the files. Machine clients unmark with PATCH { managed: false } instead.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”A folder id (ULID), or root for the application’s root folder.
The Identity Server tenant id.
The Identity Server application id: a tenant application, or (platform clients) the client’s own platform application.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Why the tenant owner releases the folder; kept in the audit log.
Example
{ "reason": "The Fitness backend was retired; the files are handed over to the editors"}Responses
Section titled “Responses”Success.
object
root for the application’s root folder.
object
Send it as If-Match to refuse a stale write (412 revision_mismatch).
object
A background job rewrites the subtree; writes under it answer 409 folder_busy.
Application-managed: the item is a folder an application marked, or lies below one. Read-only for people (403 folder_managed); only the application’s machine clients change it.
Who manages it and which folder carries the mark; null when not managed.
object
The machine client that marked the managing folder.
A display name for it: the tenant application’s name, or a platform application’s slug.
The folder that carries the mark (the item itself, or its nearest marked ancestor). The tenant owner releases this one.
What the caller may do with the folder.
Example
{ "type": "folder", "folder_id": "01J9Z6R2M3N4P5Q6R7S8T9V0W1", "tenant_id": "fitness-co", "application_id": "fitness-app", "parent_id": "root", "name": "posts", "path": "/posts", "depth": 1, "description": null, "owner_id": "u-ana", "inherit": true, "acl_scope_id": "root", "entries_count": 0, "state": "available", "revision": 1, "metadata": {}, "managed": true, "managed_by": { "client_id": "fitness-backend", "name": "Fitness", "managed_folder_id": "01J9Z6R2M3N4P5Q6R7S8T9V0W1", "managed_at": "2026-10-22T09:12:33.120Z" }, "created_at": "2026-10-22T09:12:33.120Z", "updated_at": "2026-10-22T09:12:33.120Z", "trashed_at": null, "trashed_by": null, "my_actions": [ "view", "download", "edit", "share", "delete" ]}Error. error is one of: invalid_request.
object
Stable snake_case error code.
Example
{ "status_code": 400, "error": "invalid_request", "message": "The request is malformed: a required field is missing, a value has the wrong type or format, or a field the route does not accept was sent", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: invalid_token.
object
Stable snake_case error code.
Example
{ "status_code": 401, "error": "invalid_token", "message": "The bearer token is missing, malformed, expired, signed by an unknown key, or has the wrong audience (`aud` must be `files-api`).", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: not_tenant_member, no_application_access, tenant_not_available, insufficient_scope, client_context_mismatch, principal_not_allowed, files_access_not_granted, missing_action, tenant_owner_required.
object
Stable snake_case error code.
Example
{ "status_code": 403, "error": "not_tenant_member", "message": "The user is not an active member of the tenant in the URL.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: application_not_found, not_found, folder_not_found.
object
Stable snake_case error code.
Example
{ "status_code": 404, "error": "application_not_found", "message": "The application in the URL is not an active application of the tenant.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: rate_limited.
object
Stable snake_case error code.
Example
{ "status_code": 429, "error": "rate_limited", "message": "Too many requests in the current window; `retry_after` (and the `Retry-After` header) says when to retry.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: identity_unavailable.
object
Stable snake_case error code.
Example
{ "status_code": 503, "error": "identity_unavailable", "message": "The service could not reach the Identity Server and has no fresh cached answer.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}default
Section titled “default”Error: see error for the code.
object
Stable snake_case error code.
Example
{ "status_code": 403, "error": "invalid_request", "message": "This client is not bound to this tenant/application", "path": "/api/v1/tenants/t1/applications/a1/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D"}