Skip to main content

File storage error codes (mpbx-files)

Codes returned by the ObjectStore abstraction (S3-compatible, GCS, local disk). The API layer maps the kind to an HTTP status as for all mpbx_common::Error values. Messages never contain credentials or signed URLs.

CodeKindMeaningWhat to do
MPBX-FILES-INVALID-KEYinvalid_argumentAn object key or list prefix is malformed: empty, over 1024 bytes, empty or dot segment, a character outside A-Z a-z 0-9 . _ - = @ + and /, or a system key that starts with t/ (reserved for tenants).Build keys from ids and sanitised names; never put user-supplied file names into a key.
MPBX-FILES-INVALID-TTLinvalid_argumentA signed URL lifetime is zero or longer than 7 days.Use 1 second to 7 days.
MPBX-FILES-NOT-FOUNDnot_foundThe object does not exist (or is outside the caller's scope).Check the key and tenant.
MPBX-FILES-CONFLICTconflictA create-only upload found an existing object.Use a new key, or overwrite on purpose.
MPBX-FILES-BACKENDunavailableThe storage backend rejected or could not complete a request: network error, credentials, permissions, missing bucket, throttling. Retryable.Check the storage settings and mpbx selftest; see the log line for the backend's reason.
MPBX-FILES-NOT-SUPPORTEDinternalThe active backend cannot do the requested operation.Report with the log line.
MPBX-FILES-CONFIGconfigThe storage configuration is unusable: bad prefix, missing or half-set credentials, unwritable local root, invalid bucket settings.Fix the [files] settings or the storage backend in the admin UI.
MPBX-FILES-TENANT-DENIEDpermission_deniedA company-scoped file handle (TenantFiles) was given a key of another company or of the install-wide scope, for example a tampered stored reference (W1-PBX-10).A bug or an attack: check where the key came from. Keys of the company are built with TenantFiles::key or accepted with TenantFiles::parse_owned.
MPBX-FILES-MIGRATE-SIZEunavailablempbx storage migrate copied an object but the stored size differs from the source (the source changed while it was read, or the destination lost bytes). The partial copy was removed.Run the migration again; it retries that object. If it repeats, check the destination backend and that nothing writes to the object while it is copied.