Who the caller is to this app (what `useViewer()` sees)
GET
/api/workspaces/{workspaceId}/apps/{id}/viewer
const url = 'http://localhost:8080/api/workspaces/example/apps/example/viewer';const options = {method: 'GET', headers: {cookie: 'auth_session=<auth_session>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:8080/api/workspaces/example/apps/example/viewer \ --cookie auth_session=<auth_session>What __data/viewer.json says for the caller: their id and email, the workspace (id, name, their access role) and their role on this app (owner / editor / viewer). Nothing else — an app looks up what it needs about the person in the warehouse by email (apps.md §28). Editors of the app may pass ?as=<email> to see another member’s resolution; a laptop vite dev uses this for MAKO_VIEWER_AS.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”workspaceId
required
string
id
required
string
Query Parameters
Section titled “Query Parameters”as
string
Responses
Section titled “Responses”Successful response
Media typeapplication/json
object
success
Whether the request succeeded.
boolean
data
Endpoint-specific response payload.
message
string
error
string
Example
{ "message": "Operation completed", "error": "Error message"}Invalid request
Media typeapplication/json
object
success
boolean
error
string
Example
{ "error": "Error message"}Internal server error
Media typeapplication/json
object
success
boolean
error
string
Example
{ "error": "Error message"}