Skip to Content
SimulatorsGoogle DriveSearch and field selectors

Simulators

Search and field selectors

files.list finds files with a q search, and fields narrows a response to the members you name. Find the images in My Drive and return only their names and types:

AUTH='Authorization: Bearer ya29.placeholder'
curl -s -G -H "$AUTH" "$RYSTIC_URL/drive/v3/files" --data-urlencode "q=mimeType contains 'image' and trashed = false" --data-urlencode 'fields=files(name,mimeType)' | jq -c .files
# -> [{"mimeType":"image/x-canon-cr2","name":"IMG_0042.CR2"},{"mimeType":"image/jpeg","name":"beach-sunrise.jpg"}]

List a folder’s files

curl -s -G -H "$AUTH" "$RYSTIC_URL/drive/v3/files" --data-urlencode "q='1MVfolder2025Shoots02' in parents" --data-urlencode 'orderBy=name' --data-urlencode 'fields=files(name)' | jq -c '[.files[].name]'
# -> ["beach-sunrise.jpg","IMG_0042.CR2","reel-final.mp4"]

Find a file by its properties

curl -s -G -H "$AUTH" "$RYSTIC_URL/drive/v3/files" --data-urlencode "q=properties has { key='client' and value='northwind' }" --data-urlencode 'fields=files(name)' | jq -c '[.files[].name]'
# -> ["reel-final.mp4"]

Test a selector the simulator refuses

curl -s -H "$AUTH" "$RYSTIC_URL/drive/v3/files/1MVmp4ReelFinal04?fields=nope" | jq -c '.error.errors[0] | {reason, location}'
# -> {"reason":"invalidParameter","location":"fields"}

Search terms

files.list takes these q terms, joined by and, or, not and parentheses:

TermWhat it takes
name=, != and contains, which matches the start of each word in any order
mimeType=, != and contains
fullText containswhole words of the name, the description or a text file’s content
'<folderId>' in parentsa folder id or 'root' for My Drive’s top level
trashed, starred= and !=
sharedWithMe=, or the bare term
modifiedTime< and > only
createdTime<, <=, > and >=
'me' in owners, in writers, in readers'me', an email or a permission id; writers and readers match a user whose role is at least that one, inherited through folders
properties has, appProperties has{key='…' and value='…'}

orderBy takes every documented key, each with desc, and lists the newest modifiedTime first without one. Any other term, such as the reversed parents in 'root', returns 400 invalid, and so does a time term with an operator the table does not list.

Differs from Google Drive: Drive’s search guide documents more terms and operators than the simulator takes, such as viewedByMeTime, shortcutDetails.targetId and visibility.

Field selectors

fields narrows a successful response to the members it names, and an error response stays whole. A files.create refused for its selector still writes the file, while an upload refused this way writes nothing.

SelectorMethodsResponse
emptyfiles, changes, permissions, revisions{}
absent or emptyabout.get, comments and replies400 required
one that does not parse, or names a member the resource lacks at any depth (nope, owners(nope), ID)all of the above400 invalidParameter “Invalid field selection nope” at location fields

The shared drive, operations, export and download routes do not check fields, so they accept an empty or unknown selector. On an alt=media download, Drive ignores fields too, and may on an export (unconfirmed).

Differs from Google Drive: Drive may refuse a bad selector on the shared drive, operations and files.download routes too (unconfirmed).

On these routes, a valid selector does not always narrow the response:

RouteWhat the simulator returns
drives.getthe top-level members the selector names, each whole: capabilities(canEdit) returns every capability (unconfirmed)
drives.list, files.downloadwhole records, whatever fields names
creating or updating a drivekind, id and name, whatever fields names
hiding or unhiding a drivekind, id and name, whatever fields names (unconfirmed)
operations.getthe whole operation, whatever fields names (unconfirmed)

Differs from Google Drive: Drive narrows drives.list and files.download to the selector. Without fields, Drive’s drives.list returns only kind, id and name for each drive.

Differs from Google Drive: Drive narrows an updated drive to the selector and returns the whole created drive for *. It may narrow a created drive to another selector (unconfirmed).

Last updated on