Xeonr Developer Docs
API SpecificationSandboxes

Expose Sandbox Port

POST
/containers.api.v1.SandboxService/ExposePort

Publishes a sandbox port on an isolated preview URL and records it on the sandbox; idempotent per port. port must be 1-65535, and 53, 80 and 443 are refused because the egress capture owns them (InvalidArgument). Only AUTH_SIGNED_URL returns an access token (embedded in the URL); FORWARD_AUTH and PUBLIC are resolved at access time. Unimplemented when no preview domain is configured.

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

sandboxId?string
Length1 <= length <= 64
port?integer

1-65535; 53, 80 and 443 are reserved by the egress capture and refused.

Range1 <= value <= 65535
auth?string

enum.defined_only = true

Value in"AUTH_UNSPECIFIED" | "AUTH_SIGNED_URL" | "AUTH_FORWARD_AUTH" | "AUTH_PUBLIC"
[key: string]?never

Response Body

application/json

application/json

curl -X POST "https://containers.xeonr.io/containers.api.v1.SandboxService/ExposePort" \  -H "Connect-Protocol-Version: 1" \  -H "Connect-Timeout-Ms: 1000" \  -H "Content-Type: application/json" \  -d '{}'
{
  "port": {
    "port": 0,
    "url": "string",
    "accessToken": "string",
    "auth": "AUTH_UNSPECIFIED"
  }
}
{
  "code": "not_found",
  "message": "string",
  "details": [
    {
      "type": "string",
      "value": "string",
      "debug": {}
    }
  ]
}