Files
MoviePilot/app/api/routers.py
jxxghp 721c03734a feat(widget): 提供受限凭据和只读快照接口 (#7175)
* feat(widget): add restricted read-only snapshot foundation

* test(widget): 补齐运行时与文档迁移契约
2026-10-25 06:02:47 +08:00

114 lines
3.6 KiB
Python

"""
集中登记领域路由的前缀和标签,供 API 入口按需挂载。
"""
from typing import NamedTuple
from fastapi import APIRouter
from app.api.endpoints import (
agent,
anilist,
anthropic,
auth,
bangumi,
classification,
dashboard,
discover,
douban,
download,
github,
history,
llm,
login,
mcp,
media,
mediaserver,
message,
mfa,
music,
notification,
openai,
plugin,
pluginclone,
plugininstance,
pluginloglevel,
plugintarget,
recommend,
rule,
search,
site,
storage,
subexecution,
subscribe,
system,
tmdb,
torrent,
transfer,
user,
webhook,
widget,
workflow,
)
class RouterSpec(NamedTuple):
"""
声明一个 v1 端点路由器及其公开路径元数据。
:param router: 领域端点原始路由器
:param prefix: 相对 v1 根路径的挂载前缀
:param tags: 追加到 OpenAPI 操作中的分类标签
"""
router: APIRouter
prefix: str
tags: tuple[str, ...]
API_V1_ROUTER_SPECS: tuple[RouterSpec, ...] = (
RouterSpec(auth.router, "/auth", ("auth",)),
RouterSpec(login.router, "/login", ("login",)),
RouterSpec(user.router, "/user", ("user",)),
RouterSpec(mfa.router, "/mfa", ("mfa",)),
RouterSpec(site.router, "/site", ("site",)),
RouterSpec(message.router, "/message", ("message",)),
RouterSpec(agent.router, "/message/agent", ("agent",)),
RouterSpec(webhook.router, "/webhook", ("webhook",)),
RouterSpec(subscribe.router, "/subscribe", ("subscribe",)),
RouterSpec(subexecution.router, "/subscribe", ("subscribe",)),
RouterSpec(music.router, "/music", ("music",)),
RouterSpec(media.router, "/media", ("media",)),
RouterSpec(classification.router, "/media/classification", ("media",)),
RouterSpec(search.router, "/search", ("search",)),
RouterSpec(douban.router, "/douban", ("douban",)),
RouterSpec(tmdb.router, "/tmdb", ("tmdb",)),
RouterSpec(history.router, "/history", ("history",)),
RouterSpec(rule.router, "/rule", ("rule",)),
RouterSpec(system.router, "/system", ("system",)),
RouterSpec(github.router, "/github", ("github",)),
RouterSpec(github.initialization_router, "/login/github-auth", ("login",)),
RouterSpec(notification.router, "/notification", ("notification",)),
RouterSpec(widget.router, "/widget", ("widget",)),
RouterSpec(llm.router, "/llm", ("llm",)),
RouterSpec(plugin.router, "/plugin", ("plugin",)),
RouterSpec(pluginclone.router, "/plugin", ("plugin",)),
RouterSpec(plugininstance.router, "/plugin", ("plugin",)),
RouterSpec(pluginloglevel.router, "/plugin", ("plugin",)),
RouterSpec(plugintarget.router, "/plugin", ("plugin",)),
RouterSpec(download.router, "/download", ("download",)),
RouterSpec(dashboard.router, "/dashboard", ("dashboard",)),
RouterSpec(storage.router, "/storage", ("storage",)),
RouterSpec(transfer.router, "/transfer", ("transfer",)),
RouterSpec(mediaserver.router, "/mediaserver", ("mediaserver",)),
RouterSpec(bangumi.router, "/bangumi", ("bangumi",)),
RouterSpec(anilist.router, "/anilist", ("anilist",)),
RouterSpec(discover.router, "/discover", ("discover",)),
RouterSpec(recommend.router, "/recommend", ("recommend",)),
RouterSpec(workflow.router, "/workflow", ("workflow",)),
RouterSpec(torrent.router, "/torrent", ("torrent",)),
RouterSpec(mcp.router, "/mcp", ("mcp",)),
RouterSpec(openai.router, "/openai/v1", ("openai",)),
RouterSpec(anthropic.router, "/anthropic/v1", ("anthropic",)),
)