Skip to main content
Version: Next

Transform Flow

The Transform Flow modifies API requests based on predefined transformation rules. It allows setting, deleting, and obfuscating specific request parameters.

Flow Diagram


Scenarios

  1. Data Obfuscation: Mask sensitive information with configurable obfuscation rules.
  2. 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

Flow Components