Channel configuration
A channel’s config object (stored as config_json) declares every per-channel guard, from authentication to tracing. All keys are optional and an empty {} is valid; unknown keys are refused at every level. A stored config that no longer parses is quarantined at load rather than served with a guard silently missing.
| Key | Purpose | Page |
|---|---|---|
channel_type, protocol, methods, route_pattern, topic, priority | How requests reach the channel | Routing and protocol |
transport_config | The schedule of a cron channel | Cron transport |
auth | Authenticate HTTP callers of this channel | auth |
rate_limit | Token-bucket admission rate per caller | rate_limit |
principal_rate_limit | A second limit, keyed on the verified principal | principal_rate_limit |
backpressure | Per-node concurrency cap; excess is shed with 503 | backpressure |
deduplication | Idempotency-key replay protection | deduplication |
cache | Serve repeated identical requests from a response cache | cache |
request | How the HTTP request body becomes data and metadata | request |
response | Shaped status, headers, body and cookies; per-status error bodies | response |
validation_logic | JSONLogic predicate; a falsy result rejects with 400 | validation_logic |
timeout_ms | Deadline on workflow execution | timeout_ms |
origin_allow_list | Server-side Origin header check | origin_allow_list |
tracing | Per-channel override of the trace-storage policy | tracing |
oauth2_login | Complete a browser OAuth2 authorization-code grant | oauth2_login |
Related
- Guards by ingress: which guard runs on which ingress, and in what order.
- Channels: what a channel is.
- Configure a channel: the same keys, as a walkthrough.
- Data API: how requests resolve to channels, and what traces carry.
- Reference conventions: how to read the field tables, and the
Requiredlegend.
Last verified 14 September 2026