Tail App Logs
Streams an App's retained output, merged across replicas and tagged with the replica that produced each chunk, starting after from_offset. Replays at most limit history chunks (0 means 1000); with follow it then polls for new output every second, ending after 30 idle minutes when the App has no live replica. replica narrows to one replica.
Access: namespace VIEWER or above (read)
Authorization
BearerAuth A namespace-scoped API key (cpk_…) for machines, or a Xeonr Auth OIDC
token for humans. The key's namespace and role are pinned server-side.
In: header
Header Parameters
Define the version of the Connect protocol
Define the timeout, in ms
Request Body
application/connect+json
1 <= length <= 64Restrict to a single replica. Empty = every replica, merged.
length <= 256Resume after this cursor. 0 starts at the oldest retained chunk; a negative cursor reads the same as 0.
int640 <= valueStay open and stream new output as it arrives. False returns the retained history and ends, which is what a one-shot fetch wants. validate:skip a bool has no bounds
Cap on history chunks replayed before live output begins. 0 = server default (1000). validate:skip no server-side ceiling; 0 means 1000
Response Body
application/connect+json
application/connect+json
curl -X POST "https://containers.xeonr.io/containers.api.v1.AppService/TailAppLogs" \ -H "Connect-Protocol-Version: 1" \ -H "Connect-Timeout-Ms: 1000" \ -H "Content-Type: application/connect+json" \ -d ''{
"chunk": {
"replica": "string",
"data": "string",
"stderr": true,
"atUnix": "string",
"offset": "string"
}
}{
"code": "not_found",
"message": "string",
"details": [
{
"type": "string",
"value": "string",
"debug": {}
}
]
}Rotate App Key POST
Issues a new App key and invalidates the previous one. The new key is returned and stays readable through GetApp. **Access:** namespace OPERATOR or above (write)
Update App POST
Changes an App's operational envelope in place: scaling, resources, env, egress and label. Only fields named in update_mask are applied; an empty mask applies all of them (scaling only when set). An egress change takes effect by replacing replicas once the App is idle. Also repairs a stored hostname or a missing key. access and auto_start are not applied by this call today. **Access:** namespace OPERATOR or above (write)