Register Static Environment
Registers an already-built image as a new Environment (every call mints a new id, even for the same image). A tagged image is resolved to its digest once, here; InvalidArgument when it cannot be resolved or tag resolution is not configured. runtime UNSPECIFIED is stored as GVISOR; run_as_root on RUNC is rejected. The image's own entrypoint is recorded best-effort.
Access: namespace OPERATOR or above (write)
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/json
length <= 64repo@sha256:... is stored as given; a tag is resolved to its digest at registration (refused when tag resolution is not configured).
1 <= length <= 4096items <= 1000UNSPECIFIED is stored as GVISOR. enum.defined_only = true
"SANDBOX_RUNTIME_UNSPECIFIED" | "SANDBOX_RUNTIME_GVISOR" | "SANDBOX_RUNTIME_RUNC" | "SANDBOX_RUNTIME_KATA"items <= 1000items <= 1000opt-in root / writable rootfs; default = hardened
user-defined display name (console-required)
length <= 4096Response Body
application/json
application/json
curl -X POST "https://containers.xeonr.io/containers.api.v1.EnvironmentService/RegisterStaticEnvironment" \ -H "Connect-Protocol-Version: 1" \ -H "Connect-Timeout-Ms: 1000" \ -H "Content-Type: application/json" \ -d '{}'{
"environment": {
"environmentId": "string",
"namespace": "string",
"imageRef": "string",
"imageDigest": "string",
"runtime": "SANDBOX_RUNTIME_UNSPECIFIED",
"parameters": [
{
"name": "string",
"kind": "KIND_UNSPECIFIED",
"jsonSchema": "string",
"required": true,
"mountPath": "string"
}
],
"outputs": [
{
"name": "string",
"kind": "KIND_UNSPECIFIED",
"path": "string",
"maxBytes": "string",
"required": true,
"mimeHint": "string"
}
],
"createdAtUnix": "string",
"pinned": true,
"security": {
"runAsRoot": true,
"writableRootfs": true
},
"label": "string",
"buildSpec": {
"baseImage": "string",
"steps": [
{
"argv": [
"string"
]
}
],
"cacheInputs": [
{
"name": "string",
"content": null
}
],
"sharedCache": true,
"contextSnapshotId": "string",
"stages": [
{
"name": "string",
"baseImage": "string",
"packages": [
"string"
],
"workdir": "string",
"ops": [
{
"copy": {
"from": "string",
"src": [
"string"
],
"dst": "string"
}
}
],
"env": {
"property1": "string",
"property2": "string"
},
"entrypoint": [
"string"
]
}
]
},
"defaultArgv": [
"string"
],
"imageEntrypoint": [
"string"
]
}
}{
"code": "not_found",
"message": "string",
"details": [
{
"type": "string",
"value": "string",
"debug": {}
}
]
}Pin Environment POST
Sets or clears an Environment's pinned flag, which protects it from garbage collection. **Access:** namespace OPERATOR or above (write)
Container Files
A running workload's own container filesystem — the whole rootfs, not the workspace mounted into it. Read-mostly by default, since the hardened rootfs is read-only.