diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8b6806a..6c73cfe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+### Added
+
+- *(cli)* add `--skip-options` flag to filter OPTIONS requests (discover + generate)
+- *(cli)* add `--param-regex` flag for custom path parameter detection (discover)
+- *(cli)* add `--max-examples` flag to cap examples per endpoint (generate, default 5)
+- *(cli)* add `--redact-patterns` flag for regex-based value redaction (generate)
+- *(cli)* add `--redact-fields` flag for field-name-based redaction (generate)
+- *(discover)* enhanced path parameterization: UPPER_CASE slugs, hex strings, base58, cross-request variability
+- *(generate)* response/request examples stored as named OpenAPI examples
+- *(generate)* request body schema merging via oneOf for multiple captures
+
## [0.5.2](https://github.com/Arkptz/mitm2openapi/compare/v0.5.1...v0.5.2) - 2026-04-24
### Fixed
diff --git a/Cargo.lock b/Cargo.lock
index 3298635..025d7f9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2,6 +2,12 @@
# It is not intended for manual editing.
version = 4
+[[package]]
+name = "adler2"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+
[[package]]
name = "aho-corasick"
version = "1.1.4"
@@ -11,6 +17,21 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
[[package]]
name = "android_system_properties"
version = "0.1.5"
@@ -124,6 +145,27 @@ version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
+[[package]]
+name = "brotli"
+version = "7.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
[[package]]
name = "bstr"
version = "1.12.1"
@@ -221,6 +263,15 @@ version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+[[package]]
+name = "crc32fast"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
+dependencies = [
+ "cfg-if",
+]
+
[[package]]
name = "darling"
version = "0.23.0"
@@ -311,6 +362,16 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
+[[package]]
+name = "flate2"
+version = "1.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
[[package]]
name = "float-cmp"
version = "0.10.0"
@@ -532,6 +593,16 @@ version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
+[[package]]
+name = "miniz_oxide"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
+dependencies = [
+ "adler2",
+ "simd-adler32",
+]
+
[[package]]
name = "mitm2openapi"
version = "0.5.2"
@@ -539,7 +610,9 @@ dependencies = [
"anyhow",
"assert_cmd",
"base64",
+ "brotli",
"clap",
+ "flate2",
"globset",
"har",
"indexmap 2.14.0",
@@ -1013,6 +1086,12 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+[[package]]
+name = "simd-adler32"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
+
[[package]]
name = "smallvec"
version = "1.15.1"
diff --git a/Cargo.toml b/Cargo.toml
index 13efe52..3bad8e3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -42,6 +42,8 @@ uuid = { version = "1", features = ["v4"] }
rmp-serde = "1"
globset = "0.4"
tempfile = "3"
+brotli = "7"
+flate2 = "1"
[dev-dependencies]
proptest = "1"
diff --git a/README.md b/README.md
index 1ac5ef1..56ad164 100644
--- a/README.md
+++ b/README.md
@@ -33,6 +33,9 @@ Credit to [@alufers](https://github.com/alufers) for the original tool that pion
- **Two-format support** — mitmproxy flow dumps (v19/v20/v21) and HAR 1.2
- **Two-step workflow** — `discover` finds endpoints, you curate, `generate` emits clean OpenAPI 3.0
- **Glob filters** — `--exclude-patterns` and `--include-patterns` for automated pipelines
+- **Response examples** — captured bodies stored as named OpenAPI examples with `--max-examples` cap
+- **Smart parameterization** — detects UUIDs, hex, base58, UPPER_CASE slugs, and cross-request variability
+- **Redaction** — `--redact-patterns` and `--redact-fields` scrub sensitive data from examples
- **Error recovery** — skips corrupt flows, continues processing
- **Auto-detection** — heuristic format detection from file content
- **Battle-tested** — integration tests against Swagger Petstore and OWASP crAPI with `oasdiff` verification
diff --git a/book/src/introduction.md b/book/src/introduction.md
index eb62e18..aaacfc4 100644
--- a/book/src/introduction.md
+++ b/book/src/introduction.md
@@ -30,6 +30,9 @@ unattended pipelines.
- **Resource limits** — configurable caps prevent denial-of-service on untrusted input
- **Strict mode** — treat warnings as errors for CI gates
- **Structured reports** — `--report` outputs machine-readable JSON processing summaries
+- **Response examples** — captured request/response bodies stored as named OpenAPI examples
+- **Smart parameterization** — detects UUIDs, hex strings, base58, UPPER_CASE slugs, and cross-request variability
+- **Redaction** — `--redact-patterns` and `--redact-fields` scrub sensitive data from examples
- **Battle-tested** — integration tests against Swagger Petstore and OWASP crAPI
- **Cross-platform** — Linux, macOS, Windows pre-built binaries
diff --git a/book/src/usage/cli-reference.md b/book/src/usage/cli-reference.md
index 5b1ca06..4e8aa58 100644
--- a/book/src/usage/cli-reference.md
+++ b/book/src/usage/cli-reference.md
@@ -3,7 +3,7 @@
```admonish warning
-This reference was last synced with `mitm2openapi --help` at version 0.5.1.
+This reference was last synced with `mitm2openapi --help` at version 0.6.0.
If you notice a flag missing from your local `--help` output, the tool may be ahead of these
docs. [Open an issue](https://github.com/Arkptz/mitm2openapi/issues/new) to prompt an update.
```
@@ -35,6 +35,8 @@ mitm2openapi discover [OPTIONS] -i -o