Transformations
Agentgateway uses transformation templates that are written in Common Expression Language (CEL). CEL is a fast, portable, and safely executable language that goes beyond declarative configurations. CEL lets you develop more complex expressions in a readable, developer-friendly syntax.
To learn more about how to use CEL, refer to the following resources:
Tip
Transformation templates can be applied at the route or the gateway level. If applied to both, the route-level transformation takes precedence.
Header transformation
You can add, set, or remove request and response headers with agentgateway’s transformation policies.
ℹ️
To provide a specific string value, add your string in single quotes
' followed by double quotes ". This way, the string is interpreted as a string value. If you provide the value without quotes or with double quotes only, it is interpreted as a CEL expression.binds:
- port: 3000
listeners:
- routes:
- backends:
- ai:
name: openai
provider:
openAI:
# Optional; overrides the model in requests
model: gpt-3.5-turbo
policies:
backendAuth:
key: "$OPEN_AI_APIKEY"
cors:
allowOrigins:
- "*"
allowHeaders:
- "*"
transformations:
request:
add:
x-gateway: '"agentgateway"'
response:
add:
x-served-by: '"agentgateway"'
remove:
- server
- x-content-type-optionsbinds:
- port: 3000
listeners:
- gatewayName: my-gateway
routes:
- backends:
- ai:
name: openai
provider:
openAI:
# Optional; overrides the model in requests
model: gpt-3.5-turbo
policies:
backendAuth:
key: "$OPEN_AI_APIKEY"
cors:
allowOrigins:
- "*"
allowHeaders:
- "*"
gatewayPolicies:
- name: global-transformations
target:
gateway: my-gateway
policy:
transformations:
request:
add:
x-gateway: '"agentgateway"'
response:
add:
x-served-by: '"agentgateway"'Body transformation
You can provide a custom body for a request or response.
ℹ️
To provide a specific string value, add your string in single quotes
' followed by double quotes ". This way, the string is interpreted as a string value. If you provide the value without quotes or with double quotes only, it is interpreted as a CEL expression.transformations:
request:
body:
'"This is a custom request body."'
response:
body:
'"This is a custom response body."'