Skip to content

Ingress Execution Authority ​

Ingresses make two independent authorization decisions:

  1. Call authorization decides whether a caller may reach an ingress through its transport.
  2. Execution authority decides which permissions the target Reactor component receives after the call is admitted.

For example, ingresses/orders/create:http controls who may call an HTTP ingress. Its execution configuration controls whether the component runs with the ingress ACL, the caller ACL, or an intersection of both.

Canonical configuration ​

Every ingress has an execution model. Use the execution object in app manifests, CLI resource manifests, and ingress API writes:

yaml
execution:
  authority: acl | caller | restricted-caller
  acl: []
AuthorityEffective component authorityACL rule
aclExactly the ingress ACLOptional. An omitted ACL is empty. This is the default.
callerExactly the caller's effective authorityMust be absent.
restricted-callerCaller authority intersected with ingress ACLRequired and non-empty.

acl ​

acl replaces the caller's authority with the ingress ACL. It is the default for every ingress type and is the most restrictive model: a caller can invoke the ingress without automatically giving its own permissions to the component.

yaml
execution:
  authority: acl
  acl:
    - graph/order:query
    - graph/order:field:orderTotal

Choose this mode for fixed-purpose integrations and components that should receive only the permissions explicitly declared by the ingress.

caller ​

caller preserves the caller's effective authority. It is appropriate only when the component should act entirely within the invoking user's scope.

yaml
execution:
  authority: caller

An ACL is not allowed with caller, because it would not affect the component's authority.

restricted-caller ​

restricted-caller runs with the intersection of the caller ACL and ingress ACL. Every permission must be granted by both sides.

yaml
execution:
  authority: restricted-caller
  acl:
    - graph/order:query
    - graph/order:field:createdAt
    - graph/order:field:orderTotal

Choose this mode when a component must remain user-scoped while enforcing an additional data-access ceiling, such as a restricted set of Graph fields. The caller identity, tenant context, and access attributes remain available.

API behavior ​

Every ingress API read returns the canonical object:

json
{
  "execution": {
    "authority": "acl",
    "acl": ["graph/order:query"]
  }
}

Ingress writes accept either the canonical execution object or the legacy root-level acl shorthand, but not both. An ingress with neither form defaults to authority: acl and an empty ACL.

Transport support ​

Transportaclcallerrestricted-caller
Authenticated HTTPYesYesYes
Public HTTPYesNoNo
QueueYesNoNo
StreamYesNoNo
MCPYesYesYes

Public HTTP, queue, and stream ingress invocations do not have an authenticated caller authority that can safely be preserved or intersected. They must use acl.

© 2026 Hantera AB. Org. no.: 559242-9582