Rehydrate
Validates previous_response_id by fetching the stored response, confirming its status is completed, and promoting the ID to filter metadata
Category: Setup-dependent integration
Task: Validates previous_response_id by fetching the stored response, confirming its status is completed, and promoting the ID to filter metadata
Prerequisites: The external service, credentials, or certificates referenced by this configuration.
This configuration comes from the selected release. The example has not been run here; external services are not bundled.
Download the source file.
# Rehydrate
# Requires `--features store-sqlite` because these filters are opt-in.
#
# Validates `previous_response_id` by fetching the stored
# response, confirming its status is completed, and
# promoting the ID to filter metadata. Body construction
# from the resolved conversation is handled downstream by
# the `openai_responses_proxy` filter.
#
# Pipeline ordering:
# 1. openai_responses_request — parses the create body once, promotes
# classification metadata, enriches it, and generates IDs
# 2. openai_response_store — initializes store, registers in ctx
# 3. openai_responses_rehydrate — validates previous response, sets metadata
#
# The response_store filter must appear before openai_responses_rehydrate so its
# store backend is registered in `ctx.response_stores` during
# `on_request`.
#
# Example requests:
#
# # First turn (stored)
# curl -X POST http://localhost:8080/v1/responses \
# -H "Content-Type: application/json" \
# -d '{"model":"gpt-4.1","input":"Hello"}'
#
# # Second turn (rehydrated — uses previous_response_id)
# curl -X POST http://localhost:8080/v1/responses \
# -H "Content-Type: application/json" \
# -d '{"model":"gpt-4.1","input":"What next?","previous_response_id":"resp_abc"}'
#
# Build:
# cargo build -p praxis-ai-proxy --features store-sqlite
listeners:
- name: ai-gateway
address: "127.0.0.1:8080"
filter_chains: [responses-pipeline]
filter_chains:
- name: responses-pipeline
filters:
- filter: openai_responses_request
- filter: state_owner
mode: single_tenant
tenant_id: default
- filter: openai_response_store
backend: sqlite
database_url: "sqlite://responses.db?mode=rwc"
responses_table: openai_responses
conversations_table: openai_conversations
- filter: openai_responses_rehydrate
- filter: router
routes:
- path: "/v1/responses"
cluster: "inference-backend"
- filter: load_balancer
clusters:
- name: "inference-backend"
endpoints:
- "127.0.0.1:8000"
insecure_options:
allow_private_endpoints: true # example proxies to local backends