List drive folders
GEThttps://
Returns the drive folders the caller may read: the tree plnnrly's file browser draws.
Access
- Token scope
- api:
read: orapi:project_drive read: orapi:customer_drive read: orapi:organization_drive read: user_drive Without it:
403 insufficient-token-scope. - Permission
- project_drive::
access Without it:
403 insufficient-permission. - Rate cost
- 1 unit, read bucket.
view=detailmakes it 3. Adds:with_total=1+2, each include +1,q+2. - Also
If-None-Matchanswers304when nothing changed. Never cached:private, no-store. Unknown query parameters are refused, never ignored.
Both are checked, scope first. A token never does more than its user. How access is checked
Access is decided per folder (the permission for the owner type, the access inherited from the nearest ancestor that does not inherit, then any per-folder grant), and it applies before any filter you send, so this collection can be read across the whole organisation without leaking a folder the caller cannot open. Narrow it to one drive with the owner_type/owner_id pair, which must be sent together, and to one level with filter[parent_id]; filter[parent_id][null]=true is the drive root, and a bare id is that folder's direct children, which is how a client walks the tree. The default name sort is stable across the organisation; the order sort is only meaningful once you have narrowed to one drive and one level, because positions are scoped per (owner_type, owner_id, parent_id). A folder is hard-deleted, so there is no trashed parameter. total is omitted unless you pass with_total=1. The declared permission is project_drive::access; customer_drive, organization_drive and user_drive apply by owner type, a token covering any of the four is accepted, and the per-folder rule is what actually decides.
Query parameters
Unknown parameters are refused with 400, naming the parameter.
26 parameters in 6 groups
Views
Pagination
Cursor pagination only. Follow links.next.
Rows per page. At most 25 when include names a to-many relation; a larger value is 400 invalid-query-parameter.
Default: 25
Filters
- =
- equals
- [in]
- any of a comma-separated list
- [null]
trueorfalse: whether it is empty- [gte][lt]
- at least, less than
- [ne]
- not equal
Creation timestamp. Pair with sort=id for a stable full export.
Author of the folder. Null on legacy rows.
A comma-separated list of at most 100 values.
Baseline sharing tier, which applies only while inherits_permissions is false.
A comma-separated list of at most 100 values.
everyone_editeveryone_viewrestricted
New values may be added.
Id of the record whose drive this is, within the owner_type given. Must be sent together with owner_type. For organization it is your own organisation's id.
A comma-separated list of at most 100 values.
Which drive the folder lives in: project, customer, organization or user. Must be sent together with owner_id.
Folder this one sits in. Pass null to list the folders at the drive root, or an id to list one level of the tree.
A comma-separated list of at most 100 values.
Search
Sorting
| Key | Sorts by |
|---|---|
name | Folder name, A to Z. |
order | Sort position within the drive and level, as shown in the drive tree. Positions count per drive and level, so this order is only meaningful once the collection is narrowed with filter[owner_type], filter[owner_id] and filter[parent_id]; across the whole organisation it interleaves every drive and every level. |
id | Id, ascending. An id never changes, so use this for a stable full export. |
updated_at | Last-write timestamp; pair with the id tiebreaker for sync. |
Prefix a key with - for descending.
Includes
| Path | Adds | Cost |
|---|---|---|
owner | The project, customer, organisation or user whose drive this folder lives in. | +1 |
parent_folder | The folder this one sits in; absent for folders at the drive root. | +1 |
Request headers
A correlation id of your own. It is recorded in our logs next to the server's request id but never returned: the response header always carries the server's id. A value that does not match the pattern is discarded silently, never rejected.
Response 200
Returns a page of DriveFolderList rows.
The rows, each a DriveFolderList.
per_page, next_cursor, prev_cursor, total.
self, next, prev.
Each row is a DriveFolderList: 16 fields.
Headers
ETag- A weak validator (
W/"…") of the rendered page. RateLimit- The IETF
httpapi-ratelimit-headersform of your remaining allowance on the tightest bucket this request touched. RateLimit-Policy- The ceiling and window of that bucket, as
<limit>;w=<seconds>. X-Request-Id- The server-generated ULID correlating this response with our logs.
Every response also carries Cache-Control, Vary, X-Content-Type-Options, X-Plnnrly-Api-Version, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Headers and versioning
The folder this one sits in; absent for folders at the drive root.
The kind of record owner points at; it says which branch of owner applies.
projectcustomerorganizationuser
New values may be added.
The project, customer, organisation or user whose drive this folder lives in. An organisation-owned folder renders as a bare {"id": N} reference.
Which form you get depends on owner_type.
projectProjectSummarycustomerCustomerSummaryorganizationRefuserUserSummary
Sort position within the drive and level, as shown in the drive tree. Positions count per drive and level, so the sequence is only meaningful once the collection is narrowed to one drive and one level. It is not assigned on create, so a folder created through the API stays at 0 until it is positioned in plnnrly; reordering is not exposed in v2.0.
Author; always the authenticated user at create time. Null on legacy rows and where the author has since been deleted.
Baseline sharing tier, consulted only while inherits_permissions is false.
everyone_editeveryone_viewrestricted
New values may be added.
The calling user's effective access level on this folder, after the permission for the owner type, the access inherited from folders and any per-folder grant.
viewedit
New values may be added.
Live drive items directly in this folder that the caller may see. Archived items are not counted, and neither are items in subfolders.
Errors
8 errors every operation can return: 304, 400, 401, 404, 406, 429, 500, 503
304 Not modified.
400 Bad request.
idempotency-key-requiredinvalid-cursorinvalid-query-parametermalformed-requestunsupported-parameter
401 Unauthenticated.
404 Not found.
406 Not acceptable.
429 Too many requests.
500 Server error.
503 Service unavailable.
This path allows GET, POST. Anything else answers 405.
Something wrong or missing on this page? Tell us