Xeonr Developer Docs
API Specification

Apps

Replicated HTTP workloads with immutable versions, hostname routing and scale-to-zero activation.

postAcquire Instance

Returns the address of a ready instance, cold-starting one through the single-flight activator if none exists. Blocks up to wait_ms, clamped to the App's activation_timeout_sec (0 means that timeout); DeadlineExceeded when the budget runs out. Mainly for warmup, since hostname routing activates on request. Unimplemented without cluster access. **Access:** namespace VIEWER or above (read)

postCreate App

Creates an empty App in a namespace: an assigned hostname, a freshly minted key and an operational envelope, serving nothing until a version is created and promoted. access UNSPECIFIED is stored as KEY. Scaling defaults: max_instances 1 (raised to min_instances if lower), concurrency 100, idle_timeout_sec 300, activation_timeout_sec 30. NotFound for an unknown namespace; FailedPrecondition when the egress policy needs the proxy and App egress is not configured; Unimplemented without cluster access. **Access:** namespace OPERATOR or above (write)

postCreate App Version

Adds an immutable (environment, port, workspace) version under an App and, when promote is set, makes it the active version in the same call. port must be 1-65535; the environment must belong to the App's namespace (PermissionDenied otherwise); working_dir must be absolute and clean (InvalidArgument). Returns the version and the App. **Access:** namespace OPERATOR or above (write)

postDelete App

Deletes an App: tears down every replica pod, revokes the replicas' workspace-mount keys, deletes their ephemeral workspaces, then removes the App and its record. **Access:** namespace OPERATOR or above (write)

postDelete App Version

Deletes a version, typically a superseded rollback target. FailedPrecondition for the active version (promote another first); InvalidArgument if it belongs to another App. **Access:** namespace OPERATOR or above (write)

postGet App

Returns an App, including its key, plus its live instances derived from pods (an instance has no address until a version is promoted). The hostname is derived for the current app domain. NotFound for an unknown id. **Access:** namespace VIEWER or above (read)

postList App Versions

Lists every version of an App, newest first. page_size and page_token are not applied yet: the whole history is returned in one page. **Access:** namespace VIEWER or above (read)

postList Apps

Lists Apps in a namespace, newest first. page_size defaults to 100 and is clamped to 1000. **Access:** namespace VIEWER or above (read). `namespace` is required unless the caller is a platform admin, for whom empty covers every namespace.

postPromote App Version

Moves the App's traffic pointer to a version and marks the previously active one superseded. Returns immediately without waiting for the version to warm; running instances of the old version are reaped once idle. InvalidArgument if the version belongs to another App. **Access:** namespace OPERATOR or above (write)

postReport Load

Records an App's aggregate in-flight request count and last-request time, which drives idle reaping without an RPC per request. last_request_unix 0 with in_flight > 0 is stored as now. rps is accepted but not used yet. **Access:** namespace OPERATOR or above (write)

postRotate App Key

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)

postTail 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)

postUpdate App

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)

postWatch App

Streams the App and its live instances, re-sent every 3 seconds until the client disconnects. **Access:** namespace VIEWER or above (read)