Outcome
Read the newest published desktop installer metadata from the shared desktop/releases prefix; a missing release answers 404.
Before you start
- This handler is public. Discover the exact catalog action and its input before use; no workspace membership is granted by a public release or share URL.
- A public sharing route remains confined to the supplied share and file; release downloads remain confined to desktop/releases.
Discover the target
topolo whoami --json
topolo actions get app_topolo_bytes.desktop.releases.latest --detail --json
Request
GET /api/desktop/releases/latest
Save action input as payload.json. The reviewed plan separates path identifiers, query fields and the HTTP body.
Inspect and test this action in the signed action console. A test response still requires the verification below.
Input fields
Use an empty input object; verified context is separate.
Exact input schema:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}
Effects
- Reads public release assets and selects release metadata.
Interpret the response
This response does not return a guaranteed canonical target identifier. Keep the discovered request context and interpret its documented values without inventing a resource id.
Inspect version and platform-specific assets; a null platform asset means no installer was found for that platform.
The schema describes supported success fields; optional metadata and integration-dependent values may vary. Errors have the exact shapes shown in refused examples.
Success schema:
{
"type": "object",
"required": [
"version",
"assets"
],
"properties": {
"version": {
"type": "string"
},
"assets": {
"type": "object",
"required": [
"mac",
"windows"
],
"properties": {
"mac": {
"type": "object",
"required": [
"name",
"key",
"size",
"uploaded",
"downloadUrl"
],
"properties": {
"name": {
"type": "string"
},
"key": {
"type": "string"
},
"size": {
"type": "number"
},
"uploaded": {
"type": "string"
},
"downloadUrl": {
"type": "string"
}
}
},
"windows": {
"type": "object",
"required": [
"name",
"key",
"size",
"uploaded",
"downloadUrl"
],
"properties": {
"name": {
"type": "string"
},
"key": {
"type": "string"
},
"size": {
"type": "number"
},
"uploaded": {
"type": "string"
},
"downloadUrl": {
"type": "string"
}
}
}
}
}
}
}
Worked examples
Actual exported Worker handlers with local Miniflare R2/KV. Auth, workspace grants, R2 multipart, notification, usage and semantic integrations are simulated at their configured test boundaries. Synthetic ids, timestamps and signed URLs confer no live access. No deployed provider outcome, external delivery or live grant is established. Upload-session credential values are explicitly redacted; binary responses use the tested SDK transport envelope. Replace synthetic identifiers through credential-scoped discovery. Refused scenarios document failure boundaries; they are not successful workflows.
Successful request
Actual worker response with local Miniflare R2/KV and simulated Auth, workspace grants and outbound integration boundaries. No authorization header is captured.
Input · payload.json:
{}
CLI:
topolo actions validate app_topolo_bytes.desktop.releases.latest --data @payload.json --json
topolo actions plan app_topolo_bytes.desktop.releases.latest --data @payload.json --json
topolo actions call app_topolo_bytes.desktop.releases.latest --data @payload.json --json
MCP tool and arguments:
{
"tool": "topolo_read_action",
"arguments": {
"actionId": "app_topolo_bytes.desktop.releases.latest",
"input": {}
}
}
Captured local response · HTTP 200:
{
"version": "Bytes-1.0.0.dmg",
"assets": {
"mac": {
"name": "Bytes-1.0.0.dmg",
"key": "desktop/releases/Bytes-1.0.0.dmg",
"size": 6,
"uploaded": "2026-10-04T01:57:57.697Z",
"downloadUrl": "https://bytes-api.test.local/api/desktop/download?key=desktop%2Freleases%2FBytes-1.0.0.dmg"
},
"windows": {
"name": "Bytes-Setup-1.0.0.exe",
"key": "desktop/releases/Bytes-Setup-1.0.0.exe",
"size": 6,
"uploaded": "2026-10-04T01:57:57.697Z",
"downloadUrl": "https://bytes-api.test.local/api/desktop/download?key=desktop%2Freleases%2FBytes-Setup-1.0.0.exe"
}
}
}
HTTP 200. Inspect version and platform-specific assets; a null platform asset means no installer was found for that platform.
Refused request · HTTP 404
Actual worker response with local Miniflare R2/KV and simulated Auth, workspace grants and outbound integration boundaries. No authorization header is captured.
Input · payload.json:
{}
CLI:
topolo actions validate app_topolo_bytes.desktop.releases.latest --data @payload.json --json
topolo actions plan app_topolo_bytes.desktop.releases.latest --data @payload.json --json
Captured local response · HTTP 404:
{
"error": "No desktop release assets available"
}
HTTP 404. This request was refused; preserve the exact response and correct its cause before retrying.
Verify the result
- Inspect version and platform-specific assets; a null platform asset means no installer was found for that platform.
Errors and recovery
No desktop release assets available(HTTP 404): Discover the existing file, share or release in the intended scope. A missing or inaccessible target is not authorization to create a replacement.
Authentication, the action-input validator or resource middleware can refuse a request before this handler. Preserve the exact request id, error and selected credential context. The fixtures establish no live credentials or configured provider.
Recovery boundary
No service state changes.
Related actions
- Download desktop installer: Download one public object under desktop/releases. Raw HTTP returns attachment bytes; SDK, CLI and MCP transport return a base64 binary envelope.
Evidence
Actual exported Worker handlers with local Miniflare R2/KV. Auth, workspace grants, R2 multipart, notification, usage and semantic integrations are simulated at their configured test boundaries. Synthetic ids, timestamps and signed URLs confer no live access. No deployed provider outcome, external delivery or live grant is established. Upload-session credential values are explicitly redacted; binary responses use the tested SDK transport envelope. Capture digests and test scenarios are retained in the source fixture records.