open-webui/backend/open_webui/routers
Classic298 203ec29baf
chore: remove unauthenticated dead-code GET /api/v1/retrieval/ status endpoint (#24497)
The `get_status()` handler at retrieval.py:263 (`@router.get('/')`) returned
the live RAG pipeline configuration (CHUNK_SIZE, CHUNK_OVERLAP, RAG_TEMPLATE,
RAG_EMBEDDING_ENGINE, RAG_EMBEDDING_MODEL, RAG_RERANKING_MODEL, etc.) without
any authentication dependency, while every adjacent endpoint on the same
router (/embedding, /embedding/update, /config, /config/update) requires
get_admin_user.

Exhaustive search of the repository confirms the endpoint has no callers:

- Frontend (src/): no `RETRIEVAL_API_BASE_URL}/'`-style fetch; the existing
  `getRAGConfig()` in src/lib/apis/retrieval/index.ts targets `/config`,
  not the root, and is the only consumer of admin-level retrieval state.
- Backend self-references: none.
- Cypress e2e (chat, documents, registration, settings): none.
- Backend tests (backend/open_webui/test/): none.
- Build/CI scripts (scripts/): none.
- Direct symbol import of `get_status` from this router: none.

The endpoint is dead code, almost certainly a relic from before the
/config GET split. Removing it has zero UX impact and eliminates the
unauthenticated-config-disclosure surface raised in advisory triage on
GHSA-65pg-qhhw-mxwg. External monitoring scripts that may have hit the
bare root will receive a 404 and can switch to the existing /config
endpoint, which returns the same fields plus the rest of the RAG config
under admin auth.

Surface raised by 0xRyuzak1 in GHSA-65pg-qhhw-mxwg. The advisory was closed
as not-a-vulnerability per SECURITY.md Rule 1 (no security boundary
crossed in default config — RAG_TEMPLATE default is a citation-format
instruction, not a system prompt; no integrity/availability impact); this
removal is independent code-hygiene that aligns the router cohort.

Reported-by: 0xRyuzak1 <https://github.com/0xRyuzak1>
2026-05-09 23:19:14 +09:00
..
analytics.py chore: format 2026-04-12 18:12:59 -05:00
audio.py chore: format 2026-05-09 15:25:27 +09:00
auths.py fix:image url validation and signout post (#24420) 2026-05-09 07:33:31 +09:00
automations.py refac 2026-04-21 13:46:39 +09:00
calendar.py fix: gate public sharing of calendars behind sharing.public_calendars permission (#24493) 2026-05-09 23:18:51 +09:00
channels.py refac 2026-04-21 15:41:07 +09:00
chats.py refac 2026-05-09 08:28:29 +09:00
configs.py chore: format 2026-05-09 15:25:27 +09:00
evaluations.py chore: format 2026-04-12 18:12:59 -05:00
files.py Refactor file processing to use asyncio for transcribing, improving concurrency. (#24379) 2026-05-09 03:17:47 +09:00
folders.py chore: format 2026-04-12 18:12:59 -05:00
functions.py chore: format 2026-04-21 15:52:00 +09:00
groups.py refac: async db 2026-04-12 14:22:11 -05:00
images.py chore: format 2026-05-09 21:07:08 +09:00
knowledge.py chore: format 2026-04-19 22:45:54 +09:00
memories.py chore: format 2026-04-17 14:28:18 +09:00
models.py fix:image url validation and signout post (#24420) 2026-05-09 07:33:31 +09:00
notes.py Merge pull request #24486 from Classic298/fix/notes-is-pinned-typeerror 2026-05-09 20:56:06 +09:00
ollama.py refac 2026-05-09 04:17:58 +09:00
openai.py chore: format 2026-05-09 15:25:27 +09:00
pipelines.py refac 2026-04-20 08:53:06 +09:00
prompts.py perf(prompts): make /tags fetch only the tags column with SQL access filter (#24287) 2026-05-09 05:20:13 +09:00
retrieval.py chore: remove unauthenticated dead-code GET /api/v1/retrieval/ status endpoint (#24497) 2026-05-09 23:19:14 +09:00
scim.py refac: async db 2026-04-12 14:22:11 -05:00
skills.py fix: gate public sharing of skills behind sharing.public_skills on create/update (#24494) 2026-05-09 23:19:03 +09:00
tasks.py refac 2026-05-09 05:14:55 +09:00
terminals.py refac 2026-04-20 08:36:24 +09:00
tools.py chore: format 2026-04-24 18:48:21 +09:00
users.py fix: gate public sharing of calendars behind sharing.public_calendars permission (#24493) 2026-05-09 23:18:51 +09:00
utils.py refac 2026-04-13 14:08:58 -05:00