Transform Flow
The Transform Flow modifies API requests based on predefined transformation rules. It allows setting, deleting, and obfuscating specific request parameters.
Scenarios
- Data Obfuscation: Mask sensitive information with configurable obfuscation rules.
- Set Values: Change values in header or body before sending the request to the provider.
note
- Obfuscated values are replaced with consistent hashes, ensuring data privacy while maintaining traceability.
Flow Configuration Template
/etc/lunar-proxy/flows/flow.yaml
name: TransformAPICall
filter:
url: <URLPattern> # Define the URL pattern for the filter, e.g., api.example.com/*
TransformAPICall:
processor: TransformAPICall
parameters:
- key: set
value:
<JSONPath>: <value to set to> # Set the JSONPath of the value to change and what it should change to
- key: delete
value:
- <JSONPath to delete> # Set the JSONPath of the value to delete
- key: obfuscate
value:
- <JSONPath> # Set the JSONPath of the value to obfuscate
flow:
request:
- from:
stream:
name: globalStream
at: start
to:
processor:
name: TransformAPI
- from:
processor:
name: TransformAPI
to:
stream:
name: globalStream
at: end
response:
- from:
stream:
name: globalStream
at: start
to:
processor:
name: TransformAPI
- from:
processor:
name: TransformAPI
to:
stream:
name: globalStream
at: end
Flow Example
This is an example of a fully configured Transform API Call Flow that transforms a request to OpenAI.
/etc/lunar-proxy/flows/flow.yaml
name: TransformAPI
filter:
url: "api.openai.com/*"
processors:
TransformAPICall:
processor: TransformAPICall
parameters:
- key: set
value:
$.request.path: '/v1/messages'
$.request.headers['x-api-key']: $OPENAI_API_KEY
- key: delete
value:
- $.request.headers.Authorization
- $.request.headers['openai-organization']
- $.request.headers['x-stainless-1']
- $.request.parsed_query.resource_id
- key: obfuscate
value:
- $.request.headers['user-agent']
flow:
request:
- from:
stream:
name: globalStream
at: start
to:
processor:
name: TransformAPI
- from:
processor:
name: TransformAPI
to:
stream:
name: globalStream
at: end
response:
- from:
stream:
name: globalStream
at: start
to:
processor:
name: TransformAPI
- from:
processor:
name: TransformAPI
to:
stream:
name: globalStream
at: end