Files
Auto_Bangumi/docs/ja/api/index.md
Estrella Pan 73fbca985b refactor(mcp): 升级 mcp 2.3,改用 MCPServer 与 Streamable HTTP(端点 /mcp)
- 内置工具与资源改为 AutoBangumiMCP(MCPServer 子类)上的 @mcp.tool() /
  @mcp.resource(),参数 schema 由类型注解生成,工具名、描述与参数名不变;
  结果仍是一段 JSON 文本,异常返回 is_error 结果
- 插件工具与资源在子类的 list / call / read 中追加与分发,熔断与超时逻辑
  不变;mcp 2 不再校验参数,插件工具按 input_schema 用 jsonschema 校验,
  不合法的参数不计入熔断
- 传输只保留 Streamable HTTP,以路由挂载在 /mcp(mount 会把 /mcp 重定向到
  /mcp/),删除 /mcp/sse 与 /mcp/messages/;会话管理器在应用 lifespan 中运行;
  关闭 DNS rebinding 防护,访问控制仍由 IP 白名单与令牌负责
- 更新 MCP 文档、e2e 用例与 4.0 更新日志的破坏性变更
2026-10-20 11:40:32 +02:00

16 KiB
Raw Permalink Blame History

REST API リファレンス

AutoBangumi は /api/v1 以下で REST API を提供します。WebUI も同じ API を使います。

ベース URL: http://your-host:7892/api/v1

対話式ドキュメント: このページにはエンドポイントと用途だけを載せています。リクエストとレスポンスのフィールドは、動作中のインスタンスの http://your-host:7892/docs(FastAPI がコードから生成する Swagger UI)を参照してください。プラグインのルートは /docs に表示されません。

認証

AB は 2 種類の認証情報を受け付けます。

  • ブラウザセッション:POST /auth/login にフォームフィールド username、password を送ってログインします。成功すると AB は HttpOnly Cookie token を設定します。WebUI はこの方法を使います。
  • API トークン:設定 → ユーザーとアクセス制御 → API トークン で scope=api のトークンを作成します(または POST /tokens を呼びます)。平文は一度だけ表示されます。リクエストには Authorization: Bearer <トークン> を付けます。
curl -H "Authorization: Bearer $AB_TOKEN" http://your-host:7892/api/v1/status
  • リクエストに Authorization ヘッダーがある場合、AB はそのトークンだけを検証し、Cookie は見ません。
  • 認証情報がない、または無効な場合は 401 を返します。
  • アカウント管理のエンドポイント(/auth/update、/users、/tokens、Passkey の登録と管理)はブラウザセッションだけを受け付けます。API トークンでは 403 を返します。
  • 次のエンドポイントは認証不要です:/auth/login、/passkey/auth/*、セットアップウィザード /setup/*(GET /setup/status は常に使えます。その他はセットアップ完了後 403)、ルートパスの /health。
  • /auth/refresh_token と /auth/logout は Authorization ヘッダーを見ず、セッション Cookie だけを使います。refresh_token は有効な Cookie がないと 401 を返します。ログインと Passkey ログインは security.login_whitelist で制限されます。
  • ローカル開発では、環境変数 AB_DEV_NO_AUTH=1 を設定するとすべての認証を省略します。本番環境では設定しないでください。

認証とアカウント

メソッド パス 説明
POST /auth/login ユーザー名とパスワードでログインし、セッション Cookie を設定
POST /auth/refresh_token 現在のセッションを延長
POST /auth/logout 現在のセッションを終了し、Cookie を削除
GET /auth/me 現在のユーザー
POST /auth/update 現在のアカウントを変更し、そのすべてのセッションを更新
GET / POST /users ユーザーの一覧 / 作成
PATCH / DELETE /users/{user_id} ユーザーの変更 / 削除
GET / POST /tokens API トークンの一覧 / 作成(scope は api または mcp、expires_at は任意)
DELETE /tokens/{token_id} トークンを無効化
POST /passkey/register/options、/passkey/register/verify Passkey を登録
POST /passkey/auth/options、/passkey/auth/verify Passkey でログイン
GET /passkey/list 現在のユーザーの Passkey 一覧
POST /passkey/delete Passkey を削除

プログラム

メソッド パス 説明
GET /status バージョン、実行状態、初回起動かどうか
POST /start、/stop、/restart バックグラウンドタスクの開始 / 停止 / 再起動
POST /shutdown プログラムを終了
GET /check/downloader 既定のダウンローダーが使えるか確認
GET /log ログを読む
POST /log/clear ログを消去
GET /update/check 最新バージョンとオンライン更新の状態
POST /update/apply 最新の更新をダウンロードして適用し、再起動
POST /update/rollback 前の更新に戻す。バックアップがなければイメージ付属のバージョンに戻す
GET /health(ルートパス。/api/v1 の下ではありません) 死活監視。常に 200 を返します:{"status", "version", "db_ok"}

設定

メソッド パス 説明
GET /config/get 現在の設定。秘密フィールドはマスク済み
PATCH /config/update 設定を保存して再読み込み。マスクのまま送られた秘密フィールドは元の値を保持
POST /config/llm/models 選択した LLM プロバイダーのモデル一覧
GET /config/llm/providers LLM プロバイダー一覧
POST /config/llm/providers/{provider_id}/install LLM プロバイダープラグインをインストール
DELETE /config/llm/providers/{provider_id} LLM プロバイダープラグインを削除
POST /config/llm/providers/{provider_id}/auth/begin、/auth/complete サブスクリプション型プロバイダーの認可フロー
GET /config/llm/providers/{provider_id}/auth/status 認可の状態
DELETE /config/llm/providers/{provider_id}/auth 認可を解除

番組

メソッド パス 説明
GET /bangumi/get/all すべての番組ルール
GET /bangumi/get/{bangumi_id} 1 件のルール
PATCH /bangumi/update/{bangumi_id} ルールを変更
DELETE /bangumi/delete/{bangumi_id} ルールを削除
POST /bangumi/delete/many 一括削除
POST /bangumi/disable/{bangumi_id}、/bangumi/enable/{bangumi_id} ルールの無効化 / 有効化
POST /bangumi/disable/many 一括無効化
PATCH /bangumi/archive/{bangumi_id}、/bangumi/unarchive/{bangumi_id} アーカイブ / アーカイブ解除
PATCH /bangumi/{bangumi_id}/weekday 放送曜日を手動で設定
GET /bangumi/refresh/poster/all、/bangumi/refresh/poster/{bangumi_id} ポスターを更新
GET /bangumi/refresh/calendar 放送カレンダーを更新
GET /bangumi/refresh/metadata TMDB メタデータを更新し、放送終了した番組を自動でアーカイブ
POST /bangumi/reset/all すべてのルールを削除
GET /bangumi/needs-review 話数オフセットの確認が必要な番組
GET /bangumi/suggest-offset/{bangumi_id} TMDB の話数からオフセットを提案
POST /bangumi/detect-offset シーズン / 話数と TMDB の不一致を検出
POST /bangumi/apply-offset/{bangumi_id}、/bangumi/apply-offset/many 提案されたオフセットを適用し、リネームを 1 回実行
POST /bangumi/dismiss-review/{bangumi_id} 「要確認」の印を消す
GET / DELETE /bangumi/{bangumi_id}/torrents その番組のトレント記録の一覧 / 削除
DELETE /bangumi/{bangumi_id}/torrents/{torrent_id} トレント記録を 1 件削除
GET / DELETE /bangumi/torrents/orphans どの番組にも属さないトレント記録の一覧 / 削除
GET /bangumi/torrents/orphans/count 孤立したトレント記録の件数
DELETE /bangumi/torrents/orphans/{torrent_id} 孤立したトレント記録を 1 件削除

映画

メソッド パス 説明
GET /movie/get/all、/movie/get/{movie_id} すべて / 1 件の映画ルール
PATCH /movie/update/{movie_id} 変更
DELETE /movie/delete/{movie_id} 削除
DELETE /movie/disable/{movie_id} 無効化
GET /movie/enable/{movie_id} 有効化

RSS フィード

メソッド パス 説明
GET /rss すべてのフィード
POST /rss/add フィードを追加
PATCH /rss/update/{rss_id} フィードを変更
DELETE /rss/delete/{rss_id} フィードを削除
POST /rss/delete/many 一括削除
PATCH /rss/disable/{rss_id} 無効化
POST /rss/disable/many、/rss/enable/many 一括無効化 / 有効化
POST /rss/refresh/all、/rss/refresh/{rss_id} すぐに更新
GET /rss/torrent/{rss_id} そのフィードのトレント
POST /rss/analysis RSS リンクを解析し、見つかった番組を返す
POST /rss/collect シーズン全体をダウンロード(収集)
POST /rss/subscribe 購読

検索

メソッド パス 説明
GET /search/bangumi?site=<サイト>&keywords=<キーワード> Server-Sent Events で結果を 1 件ずつ送信。複数のキーワードは空白で区切る
GET /search/provider 使える検索サイト(プラグインが提供するサイトを含む)
GET / PUT /search/provider/config ユーザーが設定した検索サイトの読み込み / 保存

ダウンローダー

AB 4.0 ではダウンローダーのインスタンスを複数設定できます(plugins.instances)。トレント一覧はすべてのインスタンスをまとめたもので、各項目に downloader_id が付きます。

メソッド パス 説明
GET /downloader/instances ダウンローダーのインスタンス:{"default": <既定のインスタンス id>, "instances": [{"id", "provider"}]}
GET /downloader/torrents すべてのインスタンスのトレント。使えないインスタンスは省略
POST /downloader/torrents/pause、/resume、/delete トレントの一時停止 / 再開 / 削除
POST /downloader/torrents/tag トレントに番組 id のタグを付ける
POST /downloader/torrents/tag/auto タグのないトレントに、名前とパスから自動でタグを付ける
GET /downloader/rename-conflicts ユーザーの対応を待つリネームの競合
POST /downloader/rename-conflicts/{operation_id}/retry 競合を 1 件消し、次のリネームで再確認させる

通知センター

メソッド パス 説明
GET / DELETE /notification/messages アプリ内通知の一覧 / 全削除
GET /notification/messages/unread-count 未読の件数
POST /notification/messages/read-all すべて既読にする
POST /notification/messages/{message_id}/read 既読にする
DELETE /notification/messages/{message_id} 1 件削除
POST /notification/test 保存済みの通知チャンネルを番号で指定してテスト
POST /notification/test-config 保存前の通知チャンネル設定をテスト

イベントストリーム

GET /events/stream は 1 本の Server-Sent Events 接続です。WebUI はポーリングの代わりにこれを使います。

event 送信のタイミング data
status 3 秒ごと GET /status と同じ構造
downloader 5 秒ごと すべてのインスタンスのトレント。ダウンローダーが使えないときは null
log 10 秒ごと ログの末尾
update オンライン更新の実行中で、進捗が変わったとき 更新の進捗
notification 接続したとき、および通知センターが変わったとき 通知センターの状態(未読数 unread_count を含む)
bus イベントバスにイベントが流れたとき {"kind": <イベント名>, "payload": {...}}。ホストのイベントとプラグインのイベントを含む
curl -N -H "Authorization: Bearer $AB_TOKEN" http://your-host:7892/api/v1/events/stream

bus フレームのイベント名とフィールドは プラグイン開発 → イベント を参照してください。フロントエンドのプラグインコンポーネントは host.events.on(kind, callback) で同じフレームを受け取ります。

プラグイン

メソッド パス 説明
GET /plugins 見つかったプラグイン、状態、設定フォームの schema、現在の設定(マスク済み)
PUT /plugins/settings allow_unsigned(未署名プラグインを許可)を変更
PUT /plugins/{plugin_id} プラグインの有効化 / 無効化、または設定の変更。保存するとすぐに反映。不正な設定は 422
GET /plugins/providers プラグインが提供する Provider id(拡張ポイントごと)
GET /plugins/ui 有効なプラグインが宣言するフロントエンドスロット
GET /plugins/catalog 署名付きカタログのプラグイン。カタログを取得できないときは 502
POST /plugins/{plugin_id}/install 署名付きカタログからプラグインをインストールまたは更新し、有効化
DELETE /plugins/{plugin_id} 署名付きカタログからインストールしたプラグインを削除
GET /plugins/{plugin_id}/web/{path} プラグインの web/ ディレクトリにあるフロントエンドの静的ファイル
任意 /plugins/{plugin_id}/{path} プラグイン独自のルート。REST ルート を参照

セットアップウィザード

これらのエンドポイントは認証不要です。GET /setup/status は常に使え、need_setup(セットアップ完了後は false)を返します。その他のエンドポイントは初回セットアップが完了するまでだけ使え、完了後は 403 を返します。/setup/complete はさらに、ブラウザーセッションか、admin アカウントが出荷時のパスワード adminadmin のままであることが必要です。それ以外は 403 を返します。

メソッド パス 説明
GET /setup/status セットアップウィザードが必要か
POST /setup/test-downloader ダウンローダーへの接続をテスト
POST /setup/test-rss RSS リンクをテスト
POST /setup/test-notification テスト通知を送信
POST /setup/complete ウィザードの設定をすべて保存し、セットアップ完了とする

MCP

AB はルートパスの /mcp で MCP サーバー(Streamable HTTP トランスポート)を提供します。MCP クライアントにはサーバーの URL として http://<AB のアドレス>:7892/mcp を設定します。3.x と 4.0.0-beta.2 以前の SSE エンドポイント /mcp/sse は削除されました。

  • アクセス制御は REST API とは別です。クライアントの IP が security.mcp_whitelist に含まれるか、リクエストに scope=mcp のトークン(Authorization: Bearer <トークン>)が必要です。mcp_whitelist が空の場合、IP によるアクセスはすべて拒否されます。トークンは引き続き使えます。
  • 組み込みツール:list_anime、get_anime、search_anime、subscribe_anime、unsubscribe_anime、list_downloads、list_rss_feeds、get_program_status、refresh_feeds、update_anime。
  • 組み込みリソース:autobangumi://anime/list、autobangumi://anime/{id}、autobangumi://status、autobangumi://rss/feeds。
  • 有効なプラグインが提供するツールの名前は <プラグイン id>__<id>、リソースの URI は autobangumi://plugins/<プラグイン id>/<id> です。MCP ツールとリソース を参照してください。

レスポンスとエラー

  • 多くの操作系エンドポイントは {"status": true, "msg_en": "...", "msg_zh": "..."} を返します。取得系エンドポイントはデータをそのまま返します。正確な構造は /docs を参照してください。
  • エラーには標準の HTTP ステータスコードを使います:401 未認証、403 権限なし、404 存在しない、422 検証エラー、500 サーバーエラー。