A storage migration and its progress (platform administrators)
GET
/api/v1/platform/storage-migrations/{migration_id}
const url = 'https://files.centralcodestation.com/api/v1/platform/storage-migrations/example';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://files.centralcodestation.com/api/v1/platform/storage-migrations/example \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”migration_id
required
string
A storage migration id (ULID).
Responses
Section titled “Responses”Success.
Media typeapplication/json
object
migration_id
required
string
tenant_id
required
string
source_storage_account_id
required
string
target_storage_account_id
required
string
status
required
string
phase
required
string
progress
required
object
versions_total
required
number
versions_moved
required
number
objects_copied
required
number
bytes_copied
required
number
objects_verified
required
number
objects_deleted
required
number
versions_waiting
required
Versions still waiting for an open upload on another account.
number
switched_at
required
When the tenant switched to the target.
string format: date-time
delete_after
required
When the source copies may be deleted (signed URLs minted before the switch expire by then).
string format: date-time
error
required
object
code
required
string
message
required
string
created_by
required
object
user_id
required
string
client_id
required
string
created_at
required
string format: date-time
updated_at
required
string format: date-time
finished_at
required
string format: date-time
Example
{ "status": "queued", "phase": "copying"}Error. error is one of: invalid_token.
Media typeapplication/json
object
status_code
required
number
error
required
Stable snake_case error code.
string
message
required
One of:
string
Array<string>
path
required
string
timestamp
required
string format: date-time
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: insufficient_scope, client_context_mismatch, files_access_not_granted, platform_admin_required.
Media typeapplication/json
object
status_code
required
number
error
required
Stable snake_case error code.
string
message
required
One of:
string
Array<string>
path
required
string
timestamp
required
string format: date-time
Example
{ "status_code": 403, "error": "insufficient_scope", "message": "A user token lacks `files:access`, a machine token carries none of `files:manage`, `files:read`, `files:config.manage`, or the route needs a scope the token does not carry.", "path": "/api/v1/tenants/fitness-co/applications/fitness-app/files/01J9Z6S9Q5F5R6Y2W2GZ3B3K4D", "timestamp": "2026-10-22T09:12:33.120Z"}Error. error is one of: not_found, storage_migration_not_found.
Media typeapplication/json
object
status_code
required
number
error
required
Stable snake_case error code.
string
message
required
One of:
string
Array<string>
path
required
string
timestamp
required
string format: date-time
Example
{ "status_code": 404, "error": "not_found", "message": "An id in the path is malformed, or the route does not exist.", "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.
Media typeapplication/json
object
status_code
required
number
error
required
Stable snake_case error code.
string
message
required
One of:
string
Array<string>
path
required
string
timestamp
required
string format: date-time
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.
Media typeapplication/json
object
status_code
required
number
error
required
Stable snake_case error code.
string
message
required
One of:
string
Array<string>
path
required
string
timestamp
required
string format: date-time
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.
Media typeapplication/json
object
status_code
required
number
error
required
Stable snake_case error code.
string
message
required
One of:
string
Array<string>
path
required
string
timestamp
required
string format: date-time
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"}