Enumerate only grant candidates; verify live filesystem identities before exposing their titles. Group membership comes from files_shares (#1028). Tag filtering runs before pagination so shared Notes use the same repeated AND filter and stable cursor behavior as owned Notes (#1109, DESIGN §33).
GET
/api/v1/files/shared-notes
const url = 'https://example.com/api/v1/files/shared-notes';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/api/v1/files/shared-notes \ --header 'Authorization: Bearer <token>'Route: /api/v1/files/shared-notes. Inputs: after, tag. Safe reads can use bounded retries.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”after
string
tag
Array<string>
Repeated Tags require every selected value and include nested Tags (#1109).
Responses
Section titled “Responses”Media typeapplication/json
A cursor advances over examined rows, including stale grants, so a page with no visible Notes does not hide later authorized Notes (#1034, §54).
object
items
required
Array<object>
Notes → Shared projection (#1034, DESIGN §54). Content uses the existing Notes reader; authority always uses the immutable Files grant identity.
object
access
required
string
body
string | null
edited
string | null
etag
string | null
id
required
string
owner_id
required
string
path
required
string
properties
required
title
required
string
next_cursor
string | null
Examplegenerated
{ "items": [ { "access": "example", "body": "example", "edited": "example", "etag": "example", "id": "example", "owner_id": "example", "path": "example", "properties": "example", "title": "example" } ], "next_cursor": "example"}