sunsine
0691c4dda3
fix(security): allow disabling API docs in production via GATEWAY_ENABLE_DOCS ( #2651 )
...
* fix(security): allow disabling API docs in production via GATEWAY_ENABLE_DOCS
Expose /docs, /redoc, and /openapi.json only when GATEWAY_ENABLE_DOCS=true
(default). Setting GATEWAY_ENABLE_DOCS=false disables all three endpoints,
preventing unauthorized API surface discovery in production deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test(security): add unit tests and docs for GATEWAY_ENABLE_DOCS
Add 7 tests covering default behavior, env var parsing (case-insensitive,
fail-closed), endpoint visibility, and health endpoint independence.
Update CONFIGURATION.md and CLAUDE.md with the new toggle.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* style(security): apply ruff formatting to gateway app.py
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
2026-04-30 10:58:32 +08:00
..
2026-04-26 15:09:25 +08:00
2026-04-26 11:09:55 +08:00
2026-03-27 20:03:30 +08:00
2026-04-28 11:47:56 +08:00
2026-04-26 11:13:01 +08:00
2026-04-02 15:39:41 +08:00
2026-04-26 20:46:45 +08:00
2026-04-26 11:08:11 +08:00
2026-04-26 11:08:11 +08:00
2026-04-26 11:08:11 +08:00
2026-04-26 22:20:57 +08:00
2026-04-26 11:08:11 +08:00
2026-04-28 11:34:07 +08:00
2026-04-26 11:13:01 +08:00
2026-04-28 00:13:04 +08:00
2026-04-14 10:29:44 +08:00
2026-04-26 11:09:55 +08:00
2026-04-26 22:10:54 +08:00
2026-04-19 22:00:58 +08:00
2026-03-30 07:41:18 +08:00
2026-04-25 19:40:06 +08:00
2026-04-07 18:21:22 +08:00
2026-04-28 15:44:02 +08:00
2026-03-29 21:03:58 +08:00
2026-04-28 15:44:02 +08:00
2026-04-09 16:07:16 +08:00
2026-03-14 22:55:52 +08:00
2026-04-26 11:05:47 +08:00
2026-03-29 15:31:18 +08:00
2026-04-28 11:13:17 +08:00
2026-03-22 22:39:50 +08:00
2026-04-14 00:03:38 +08:00
2026-04-12 19:11:22 +08:00
2026-04-11 17:48:04 +08:00
2026-03-31 22:19:27 +08:00
2026-04-10 17:43:39 +08:00
2026-04-26 11:09:56 +08:00
2026-04-08 17:13:39 +08:00
2026-04-26 11:09:55 +08:00
2026-04-06 22:14:12 +08:00
2026-04-18 22:47:42 +08:00
2026-04-10 17:43:39 +08:00
2026-04-28 00:13:04 +08:00
2026-04-30 10:58:32 +08:00
2026-04-23 19:41:26 +08:00
2026-04-26 20:38:34 +08:00
2026-04-24 22:46:51 +08:00
2026-03-23 18:07:33 +08:00
2026-03-14 22:55:52 +08:00
2026-03-26 14:20:18 +08:00
2026-04-28 11:34:07 +08:00
2026-04-26 11:13:01 +08:00
2026-04-24 16:00:14 +08:00
2026-04-28 11:34:07 +08:00
2026-04-28 14:53:18 +08:00
2026-04-28 14:53:18 +08:00
2026-04-28 14:53:18 +08:00
2026-04-19 22:30:22 +08:00
2026-04-11 16:52:10 +08:00
2026-03-29 21:31:29 +08:00
2026-04-28 11:59:46 +08:00
2026-04-12 19:11:22 +08:00
2026-03-14 22:55:52 +08:00
2026-04-25 09:18:13 +08:00
2026-03-14 22:55:52 +08:00
2026-03-26 14:20:18 +08:00
2026-04-03 11:21:58 +08:00
2026-04-26 15:09:25 +08:00
2026-04-26 11:13:01 +08:00
2026-04-26 11:13:01 +08:00
2026-04-26 15:09:25 +08:00
2026-04-17 12:00:31 +08:00
2026-04-26 11:09:55 +08:00
2026-04-26 15:09:25 +08:00
2026-04-26 11:13:01 +08:00
2026-04-14 15:01:06 +08:00
2026-04-26 15:09:25 +08:00
2026-04-28 15:09:31 +08:00
2026-03-22 20:39:26 +08:00
2026-04-26 11:05:47 +08:00
2026-04-26 11:09:55 +08:00
2026-04-09 16:07:16 +08:00
2026-03-20 17:18:59 +08:00
2026-03-26 15:07:05 +08:00
2026-04-26 15:09:25 +08:00
2026-04-26 11:09:55 +08:00
2026-04-26 11:13:01 +08:00
2026-04-10 20:40:30 +08:00
2026-04-10 20:40:30 +08:00
2026-03-14 22:55:52 +08:00
2026-03-14 22:55:52 +08:00
2026-04-26 15:09:25 +08:00
2026-04-26 11:05:47 +08:00
2026-04-28 11:44:40 +08:00
2026-04-26 11:20:17 +08:00
2026-04-26 11:09:55 +08:00
2026-04-28 14:53:18 +08:00
2026-04-26 15:09:25 +08:00
2026-04-07 17:15:24 +08:00
2026-04-09 17:21:23 +08:00
2026-04-09 17:21:23 +08:00
2026-04-18 08:46:59 +08:00
2026-04-28 12:18:41 +08:00
2026-04-24 17:06:55 +08:00
2026-03-30 16:02:23 +08:00
2026-03-26 14:20:18 +08:00
2026-04-20 20:17:30 +08:00
2026-04-10 17:43:39 +08:00
2026-04-07 10:50:34 +08:00
2026-03-25 16:28:33 +08:00
2026-04-23 14:06:14 +08:00
2026-04-28 19:01:36 +08:00
2026-04-28 11:56:11 +08:00
2026-04-06 22:07:11 +08:00
2026-04-20 20:25:03 +08:00
2026-03-27 20:20:31 +08:00
2026-03-30 16:02:23 +08:00
2026-04-06 14:51:10 +08:00
2026-04-08 11:46:06 +08:00
2026-03-25 10:20:16 +08:00
2026-04-23 23:59:47 +08:00
2026-04-23 23:59:47 +08:00
2026-04-12 16:40:21 +08:00
2026-04-28 14:53:18 +08:00
2026-04-24 21:19:46 +08:00
2026-04-24 21:24:42 +08:00
2026-03-26 17:39:16 +08:00
2026-04-26 11:09:55 +08:00
2026-04-26 15:09:25 +08:00
2026-04-26 11:13:01 +08:00
2026-03-14 22:55:52 +08:00
2026-04-26 22:20:57 +08:00
2026-04-14 11:11:26 +08:00
2026-03-26 14:20:18 +08:00
2026-04-20 20:25:03 +08:00
2026-03-14 22:55:52 +08:00
2026-04-06 15:09:57 +08:00
2026-04-24 22:45:41 +08:00
2026-04-02 13:06:10 +08:00
2026-04-02 13:06:10 +08:00
2026-03-26 17:39:16 +08:00
2026-04-26 11:13:01 +08:00
2026-04-28 14:53:18 +08:00
2026-04-26 15:09:25 +08:00
2026-04-15 23:54:30 +08:00
2026-04-28 11:13:17 +08:00
2026-04-06 15:18:34 +08:00
2026-04-10 20:49:28 +08:00