List drive items
GEThttps://
Returns the drive items the caller may read: the rows plnnrly's file browser lists.
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 (to-many +3),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 item (the permission for the owner type, the access inherited from its folder, then any per-item grant), and it applies before any filter you send, so this collection can be read across the whole organisation without leaking an item the caller cannot open. Narrow it to one drive with the owner_type/owner_id pair, which must be sent together, and to one folder with filter[folder_id]; the default order_column sort is only meaningful once you have, because positions are scoped per (owner_type, owner_id, folder_id) and an organisation-wide sort by it interleaves every drive. Pass trashed=with or trashed=only to see archived items; that needs only this endpoint's permission, never the restore ability. 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, and a token covering any of the four is accepted.
Query parameters
Unknown parameters are refused with 400, naming the parameter.
41 parameters in 7 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
The user who archived the item. Pair it with trashed=only for an archive view.
A comma-separated list of at most 100 values.
Id of the document body. Must be sent together with content_record_type.
A comma-separated list of at most 100 values.
Type of body the item points at. drive_document is the only value. Must be sent together with content_record_id.
Creation timestamp. Pair with sort=id for a stable full export.
Author of the item.
A comma-separated list of at most 100 values.
Folder the item sits in. Pass null to list the items at the drive root.
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.
What the item is.
A comma-separated list of at most 100 values.
documentpdfimageaudiovideoofficeother
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 item lives in: project, customer, organization or user. Must be sent together with owner_id.
Where the item came from.
A comma-separated list of at most 100 values.
builtinupload
New values may be added.
Last-write timestamp. Use for incremental sync.
The drive items linked to one work item, by its numeric id. A work item's links.drive_items points here: it lists every linked item you may open, where include=drive_items stops at 25. Using it also requires project_management::manage_work_items.
Also needs project_management::view_backlog and a token with api:read:project_management.
Search
Sorting
| Key | Sorts by |
|---|---|
order_column | Sort position within the owner and folder, as shown in the drive tree. Positions count per drive and folder, so this order is only meaningful once the collection is narrowed with filter[owner_type], filter[owner_id] and filter[folder_id]; across the whole organisation it interleaves every drive. |
title | Item title, A to Z. |
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 |
|---|---|---|
drive_folder | The folder this item sits in; absent for items at the drive root. | +1 |
owner | The project, customer, organisation or user whose drive this item lives in. | +1 |
tags | Tags on this item. An item takes at most 50, so this is the whole set. | to-many · +3 |
Other
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 DriveItemList rows.
The rows, each a DriveItemList.
per_page, next_cursor, prev_cursor, total.
self, next, prev.
Each row is a DriveItemList: 27 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
What this item is. Everything created through the API is a document; the other kinds come from uploads in plnnrly.
documentpdfimageaudiovideoofficeother
New values may be added.
Where the item came from: builtin for an editor document, upload for a file uploaded in plnnrly.
builtinupload
New values may be added.
The folder this item sits in; absent for items 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 item lives in. An organisation-owned item renders as a bare {"id": N} reference.
Which form you get depends on owner_type.
projectProjectSummarycustomerCustomerSummaryorganizationRefuserUserSummary
The kind of record content_record points at; it says which branch of content_record applies.
drive_document
New values may be added.
The body this item points at: a drive document for an editor document, null for an item with no body yet. Renders as a bare {"id": N} reference; read the body from GET /api/v2/drive-documents/{drive_document}.
Which form you get depends on content_record_type.
drive_documentRef
Sort position, assigned by the server. Positions count per drive and folder, so the sequence is only meaningful once the collection is narrowed to one drive and one folder. 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.
The user who archived this item; set on delete and cleared on restore.
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 item, after the permission for the owner type, the access inherited from folders and any per-item grant.
viewedit
New values may be added.
When this item was archived, or null while it is live.
Files attached to this item, counting the attachments list in plnnrly, the single uploaded file and the images embedded in the document body.
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