Xeonr Developer Docs
API SpecificationEnvironments

Register Static Environment

POST
/containers.api.v1.EnvironmentService/RegisterStaticEnvironment

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
AuthorizationBearer <token>

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

Connect-Protocol-Version?number

Define the version of the Connect protocol

Connect-Timeout-Ms?number

Define the timeout, in ms

Request Body

application/json

namespace?string
Lengthlength <= 64
image?string

repo@sha256:... is stored as given; a tag is resolved to its digest at registration (refused when tag resolution is not configured).

Length1 <= length <= 4096
defaultArgv?default_argv
Itemsitems <= 1000
runtime?string

UNSPECIFIED is stored as GVISOR. enum.defined_only = true

Value in"SANDBOX_RUNTIME_UNSPECIFIED" | "SANDBOX_RUNTIME_GVISOR" | "SANDBOX_RUNTIME_RUNC" | "SANDBOX_RUNTIME_KATA"
parameters?
Itemsitems <= 1000
outputs?
Itemsitems <= 1000
security?

opt-in root / writable rootfs; default = hardened

label?string

user-defined display name (console-required)

Lengthlength <= 4096
[key: string]?never

Response 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": {}
    }
  ]
}