Xeonr Developer Docs
API SpecificationApps

Create App

POST
/containers.api.v1.AppService/CreateApp

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)

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
Length1 <= length <= 64
label?string

user-defined display name

Lengthlength <= 4096
scaling?
resources?
env?
Propertiesproperties <= 1000
egress?|
access?string

UNSPECIFIED is stored as KEY. enum.defined_only = true

Value in"APP_ACCESS_UNSPECIFIED" | "APP_ACCESS_KEY" | "APP_ACCESS_PUBLIC"
autoStart?boolean

validate:skip a bool has no bounds

[key: string]?never

Response Body

application/json

application/json

curl -X POST "https://containers.xeonr.io/containers.api.v1.AppService/CreateApp" \  -H "Connect-Protocol-Version: 1" \  -H "Connect-Timeout-Ms: 1000" \  -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": "string",
    "updatedAtUnix": "string",
    "hostname": "string",
    "activeVersionId": "string",
    "autoStart": true,
    "access": "APP_ACCESS_UNSPECIFIED",
    "key": "string"
  }
}
{
  "code": "not_found",
  "message": "string",
  "details": [
    {
      "type": "string",
      "value": "string",
      "debug": {}
    }
  ]
}