Skip to main content

Operations Schema

Definition​

spec:
operations:
- name: string # Required: Human-readable name
selector: [] # Required: Regex patterns to match
policy: string # Required: Policy MRN

Fields​

FieldTypeRequiredDescription
namestringYesHuman-readable name
selectorarrayYesList of regex patterns
policystringYesMRN of policy to apply

Usage​

Operations route requests to operation phase (Phase 1) policies based on the operation string. Selectors are evaluated in order; first match wins.

The operation phase uses tri-level output (negative, zero, positive) instead of boolean. A positive value acts as a "GRANT Override" that bypasses all other phases—essential for public endpoints that have no JWT.

Selector Patterns​

Selectors are regular expressions using RE2 syntax:

PatternMatches
.*Everything
api:.*Operations starting with api:
api:users:.*All user operations
^api:users:read$Exactly api:users:read
api:.*:readRead operations on any API resource

Examples​

Basic Operations​

operations:
- name: api
selector:
- "api:.*"
policy: "mrn:iam:policy:api-main"

- name: admin
selector:
- "admin:.*"
- "platform:.*"
policy: "mrn:iam:policy:admin-only"

- name: default
selector:
- ".*"
policy: "mrn:iam:policy:default"

Order Matters​

operations:
# Specific matches first (public-grant returns positive to bypass other phases)
- name: public-health
selector:
- "^health:check$"
policy: "mrn:iam:policy:public-grant"

# Then broader patterns
- name: api-read
selector:
- "api:.*:read"
- "api:.*:list"
policy: "mrn:iam:policy:api-readonly"

# Most specific before general
- name: api-all
selector:
- "api:.*"
policy: "mrn:iam:policy:api-full"

# Catch-all last (returns 0 to defer to identity/resource phases)
- name: default
selector:
- ".*"
policy: "mrn:iam:policy:operation-default"

Using YAML Anchors​

policies:
- mrn: &main "mrn:iam:policy:main"
name: main
rego: |
package authz
# ... main policy

operations:
- name: all
selector:
- ".*"
policy: *main