Xeonr Developer Docs
API SpecificationEgress

Stream Egress Events

POST
/containers.api.v1.EgressPolicyService/StreamEgressEvents

Streams egress proxy decisions live, optionally narrowed to one job/sandbox. When since_unix is set, history from that time is replayed first; clients dedupe the overlap by event_id. Unimplemented when the event feed is not enabled.

Access: namespace VIEWER or above (read). namespace is required unless the caller is a platform admin, for whom empty covers every namespace.

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/connect+json

namespace?string

Required for everyone but a platform administrator, for whom empty streams every namespace.

Lengthlength <= 64
principalId?string

optional filter

Lengthlength <= 256
sinceUnix?string

optional replay window before going live; 0 = none

Formatint64
Range0 <= value
[key: string]?never

Response Body

application/connect+json

application/connect+json

curl -X POST "https://containers.xeonr.io/containers.api.v1.EgressPolicyService/StreamEgressEvents" \  -H "Connect-Protocol-Version: 1" \  -H "Connect-Timeout-Ms: 1000" \  -H "Content-Type: application/connect+json" \  -d ''
{
  "event": {
    "principalId": "string",
    "namespace": "string",
    "atUnix": "string",
    "host": "string",
    "port": 0,
    "method": "string",
    "path": "string",
    "status": 0,
    "bytes": "string",
    "decision": "DECISION_UNSPECIFIED",
    "eventId": "string",
    "detail": "string"
  }
}
{
  "code": "not_found",
  "message": "string",
  "details": [
    {
      "type": "string",
      "value": "string",
      "debug": {}
    }
  ]
}