Content types
Response envelopes
There is more than one envelope. Which one you receive depends on where the failure occurred.Controller success
Controller error
code.
Middleware / guard error
code. This is the shape to branch on for authorization and quota decisions.
Framework error
Framework-level failures can surface as:HTTP status versus inner status
Most endpoints report HTTP status directly. Two areas are exceptions:- File restore and version operations return HTTP
200even when the underlying operation failed, and carry the failure insidedata.status. - Folder restore returns HTTP
200with an explanatory message when the folder is not in trash.
Identifiers
Path identifiers are UUIDs unless stated otherwise. Do not construct or guess them.
File naming
nameis the display name without the extension.extFileis the lowercased extension without a leading dot.- The reconstructed filename is
name + "." + extFilewhenextFileis non-empty.
name contains a dot or an extension.
Timestamps
Timestamps are ISO 8601 strings. Treat them as UTC; do not assume a local offset.Null versus absent
nullis meaningful: for example,effectiveFolderId: nullmeans the bucket root.- An absent field means the information was not included, not that it is empty.
null to "" or 0 in your own models.
Empty success payloads
Some operations returndata: "". A file delete is the notable example. This is a success, not an error. Check the HTTP status and message, not the truthiness of data.
Required scopes
Every documented operation lists the scope pair it needs. Storage operations require a bucket scope plus a resource scope:- read:
buckets:read+ resource read scope - write:
buckets:write+ resource write scope - delete:
buckets:write+ resource delete scope
Idempotency
No idempotency key header is documented. Retrying a write blindly can create duplicates or extra versions. Safe retry guidance:Errors to retry
Related
Pagination
List response shape.
Errors
Status codes and codes.
Authentication
Headers.
Playground
Request display limits.