Skip to content

transform: add edge transform resource API#119

Merged
acoshift merged 1 commit into
mainfrom
transform
Jun 30, 2026
Merged

transform: add edge transform resource API#119
acoshift merged 1 commit into
mainfrom
transform

Conversation

@acoshift

@acoshift acoshift commented Jun 27, 2026

Copy link
Copy Markdown
Member

Edge Transform — api (PR 1, merge first)

Adds the transform.* resource: declarative, CEL-scoped request/response transforms at the parapet proxy. Design: SPEC-cel-transform.md (the chosen middle path between forward-auth hacks and a WASM runtime — no user code).

  • TransformPhase enum (request|response); TransformRule (required *TransformPhase, CEL filter, ordered ops, mode, priority); TransformOp (set-header, remove-header, rewrite-path, rewrite-query, redirect, set-status, cors).
  • Transform interface (get/list/set/delete) + client.
  • Structural validation: phase×op legality matrix, RFC 7230 header-name tokens, protected-header denylist (hop-by-hop, framing, Host, X-Forwarded-*, X-Real-IP, X-Auth-*, wafclaim), redirect $uri/open-redirect guard. mode is "" (enforce) or shadow only — matches the parapet wire contract.
  • role.go: transform.{get,list,set,delete}; reads are non-public-bindable (can carry credentials) but delegatable. LocationFeatures.Transform. DeployerCommandTransform{Set,Delete}.

Merge first — the Go consumers (apiserver, deployer, mcp, deploys) re-pin github.com/deploys-app/api to this commit. go build/vet, gofmt, go generate clean.

Part of the Edge Transform feature — consumer PRs (re-pin to the merged commit of this PR)

Merge order: this (api) → deployer → apiserver; parapet-ingress-controller before apiserver is deployed; console/mcp/deploys/docs any time after api.

@acoshift acoshift merged commit 8b0b4b4 into main Jun 30, 2026
@acoshift acoshift deleted the transform branch June 30, 2026 08:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant