The app's own thumbnail image
const url = 'http://localhost:8080/api/workspaces/example/apps/example/thumbnail';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/thumbnail \ --cookie auth_session=<auth_session>The image the app ships at its root (thumbnail.png, or .webp/.jpg/.jpeg/.svg) as of main; /apps/discovery says which apps have one (and its oid, the cache version). With w, a raster thumbnail comes back as a WebP at most that wide (snapped to 320/480/640/960/1200, never upscaled); SVG is always the original. Private caching: immutable for a year when v names the current blob, revalidate (ETag by oid and width) otherwise. 404 when the app ships none. SVG is served with a script-free, sandboxed CSP.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Query Parameters
Section titled “Query Parameters”The thumbnail’s blob oid (cache version).
The thumbnail’s blob oid (cache version).
Desired width in px; snapped to the nearest of 320, 480, 640, 960, 1200. Omit for the original.
Desired width in px; snapped to the nearest of 320, 480, 640, 960, 1200. Omit for the original.
Responses
Section titled “Responses”Successful response
object
Whether the request succeeded.
Endpoint-specific response payload.
Example
{ "message": "Operation completed", "error": "Error message"}Invalid request
object
Example
{ "error": "Error message"}Internal server error
object
Example
{ "error": "Error message"}