CreateApp
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
1Define the timeout, in ms
Request Body
application/json
user-defined display name
Resources is the compute envelope for a sandbox or job. Maps onto k8s requests==limits and the Docker resource knobs.
EgressRef selects a policy: either inline, or by id of a named policy (EgressPolicyService). Empty => MODE_NONE.
AppAccess is who may call an App's hostname.
A pod IP was implicitly private; a hostname is not. UNSPECIFIED is treated as KEY so that a field nobody set fails closed — on a platform running untrusted code the two mistakes do not cost the same.
"APP_ACCESS_UNSPECIFIED" | "APP_ACCESS_KEY" | "APP_ACCESS_PUBLIC"Response Body
application/json
application/json
curl -X POST "https://containers.xeonr.io/containers.api.v1.AppService/CreateApp" \ -H "Connect-Protocol-Version: 1" \ -H "Content-Type: application/json" \ -d '{}'{
"app": {
"appId": "string",
"namespace": "string",
"label": "string",
"scaling": {
"minInstances": 0,
"maxInstances": 0,
"concurrency": 0,
"idleTimeoutSec": 0,
"activationTimeoutSec": 0
},
"resources": {
"cpuMillis": 0,
"memoryMb": 0,
"ephemeralMb": 0,
"pids": 0
},
"env": {
"property1": "string",
"property2": "string"
},
"egress": {
"egressPolicyId": "string"
},
"state": "APP_STATE_UNSPECIFIED",
"createdAtUnix": 0,
"updatedAtUnix": 0,
"hostname": "string",
"activeVersionId": "string",
"autoStart": true,
"access": "APP_ACCESS_UNSPECIFIED",
"key": "string"
}
}{
"code": "not_found",
"message": "string",
"details": [
{
"type": "string",
"value": "string",
"debug": {}
}
]
}Activation (A2): the public "starts on first request" API. AcquireInstance returns a ready instance, cold-starting one if none exists and blocking up to wait_ms; ReportLoad feeds idle-reap without an RPC per HTTP request. POST
With an App now routable by hostname, AcquireInstance is no longer on the request path for a caller that just wants to reach the app — the proxy does it. It stays public for warmup: starting an instance at promote time, before any user request arrives.
CreateAppVersion POST
Versions. An App is long-lived; a version is one immutable (image, port, workspace) triple beneath it. Promotion is a pointer flip, which is what makes rollback free.