Sign in

    q2316367743/open-list/admin does not have a README file

    AdminApi

    pub struct AdminApi {
    // private fields
    }

    管理域:/api/admin/* 下的全部端点。

    这些端点都要求管理员身份(服务端 AuthAdmin 中间件),非管理员调用会拿到 403。所有方法都会把服务端的业务错误抛成 OpenListError::Api,调用方可以从 ApiError::code 读到业务码。

    AdminApi::cancel_2fa

    async fn AdminApi::cancel_2fa(self : AdminApi, id : UInt) -> Unit raise
    OpenListError

    取消某个用户的两步验证(POST /api/admin/user/cancel_2fa?id=)。

    AdminApi::create_meta

    新建元数据(POST /api/admin/meta/create)。

    请求体就是 Meta 本身;meta.id 会被服务端忽略。

    AdminApi::create_storage

    新建存储(POST /api/admin/storage/create),返回新存储的 ID。

    mount_path、driver 必填;addition 是驱动配置的 JSON 字符串, 具体字段可以先用 driver_info(driver) 查出来再拼。

    AdminApi::create_user

    新建用户(POST /api/admin/user/create)。

    服务端直接绑定 model.User,所以这里传的是 User: username 与 password(明文)必填,role 只能是 1(普通用户), 管理员与游客账号会被服务端拒绝(400 admin or guest user can not be created)。

    AdminApi::default_settings

    取某些分组的默认设置(POST /api/admin/setting/default?group=N)。

    AdminApi::del_cache

    async fn AdminApi::del_cache(self : AdminApi, username : String) -> Unit raise
    OpenListError

    清空某个用户的路径缓存(POST /api/admin/user/del_cache?username=)。

    AdminApi::delete_meta

    async fn AdminApi::delete_meta(self : AdminApi, id : UInt) -> Unit raise
    OpenListError

    删除元数据(POST /api/admin/meta/delete?id=)。

    AdminApi::delete_setting

    async fn AdminApi::delete_setting(self : AdminApi, key : String) -> Unit raise
    OpenListError

    删除设置(POST /api/admin/setting/delete?key=)。

    AdminApi::delete_storage

    async fn AdminApi::delete_storage(self : AdminApi, id : UInt) -> Unit raise
    OpenListError

    删除存储(POST /api/admin/storage/delete?id=)。

    AdminApi::delete_user

    async fn AdminApi::delete_user(self : AdminApi, id : UInt) -> Unit raise
    OpenListError

    删除用户(POST /api/admin/user/delete?id=)。

    AdminApi::delete_user_ssh_key

    async fn AdminApi::delete_user_ssh_key(self : AdminApi, id : UInt) -> Unit raise
    OpenListError

    删除任意用户的 SSH 公钥(POST /api/admin/user/sshkey/delete?id=)。

    AdminApi::disable_storage

    async fn AdminApi::disable_storage(self : AdminApi, id : UInt) -> Unit raise
    OpenListError

    禁用存储(POST /api/admin/storage/disable?id=)。

    AdminApi::driver_info

    某个驱动的完整描述(GET /api/admin/driver/info?driver=X)。

    返回 {common, additional, config}:服务端给的是单个驱动的描述对象 (与 /driver/list 映射里的每一项同形),不是配置项数组。 驱动名不存在时服务端返回 404(driver [X] not found), 在客户端表现为 OpenListError::Api。

    AdminApi::driver_names

    async fn AdminApi::driver_names(self : AdminApi) -> Array[String] raise
    OpenListError

    全部驱动名(GET /api/admin/driver/names)。

    AdminApi::enable_storage

    async fn AdminApi::enable_storage(self : AdminApi, id : UInt) -> Unit raise
    OpenListError

    启用存储(POST /api/admin/storage/enable?id=)。

    AdminApi::get_meta

    按 ID 取一条元数据(GET /api/admin/meta/get?id=)。

    AdminApi::get_setting

    读单项设置(GET /api/admin/setting/get?key=X)。

    服务端在 keys 非空时返回数组、否则返回单个对象,所以这里和 get_settings 是两个方法。

    AdminApi::get_settings

    批量读设置(GET /api/admin/setting/get?keys=a,b)。

    AdminApi::get_storage

    按 ID 取存储(GET /api/admin/storage/get?id=)。

    AdminApi::get_user

    按 ID 取用户(GET /api/admin/user/get?id=)。

    AdminApi::index_build

    全量构建索引(POST /api/admin/index/build)。

    索引已经在跑时服务端返回 400(index is running)。

    AdminApi::index_clear

    清空索引(POST /api/admin/index/clear)。

    AdminApi::index_progress

    查询索引进度(GET /api/admin/index/progress)。

    AdminApi::index_stop

    停止索引构建(POST /api/admin/index/stop)。

    AdminApi::index_update

    async fn AdminApi::index_update(self : AdminApi, paths : Array[String], max_depth? : Int) -> Unit raise
    OpenListError

    增量更新索引(POST /api/admin/index/update)。

    AdminApi::list_drivers

    全部驱动:驱动名 → 描述(GET /api/admin/driver/list)。

    返回的是「驱动类型」的配置描述,不是某个已挂载的存储。

    AdminApi::list_meta

    分页列出元数据(GET /api/admin/meta/list?page=&per_page=)。

    AdminApi::list_settings

    列出设置(GET /api/admin/setting/list?group=N 或 ?groups=1,2)。

    不传分组时返回全部设置。

    AdminApi::list_storages

    分页列出存储(GET /api/admin/storage/list?page=&per_page=)。

    AdminApi::list_user_ssh_keys

    分页列出某个用户的 SSH 公钥 (GET /api/admin/user/sshkey/list?uid=&page=&per_page=)。

    AdminApi::list_users

    分页列出用户(GET /api/admin/user/list?page=&per_page=)。

    AdminApi::load_all_storages

    async fn AdminApi::load_all_storages(self : AdminApi) -> Unit raise
    OpenListError

    重新加载全部存储(POST /api/admin/storage/load_all)。

    适用于直接在数据库里改过存储配置的场景。

    AdminApi::new

    由根包创建。

    AdminApi::reset_token

    async fn AdminApi::reset_token(self : AdminApi) -> String raise
    OpenListError

    重置系统令牌(POST /api/admin/setting/reset_token),返回新令牌。

    这个令牌是 OpenList 给第三方驱动/回调用的系统级令牌,与登录 token 无关。

    AdminApi::save_settings

    保存设置(POST /api/admin/setting/save)。

    请求体是设置项数组;通常做法是 list_settings 拿到手、改掉 value、 再原样传回来。

    AdminApi::update_meta

    更新元数据(POST /api/admin/meta/update),meta.id 必填。

    AdminApi::update_storage

    更新存储(POST /api/admin/storage/update),storage.id 必填。

    AdminApi::update_user

    更新用户(POST /api/admin/user/update),user.id 必填。

    注意事项(都来自服务端实现):
    • role 不能与原值不同,否则 400 role can not be changed;
    • password 留空表示不改密码;
    • 管理员账号不允许被禁用(400 admin user can not be disabled)。

    因此典型的「改一下基础路径」写法是:先 get_user,改字段,再 update_user。

    UpdateIndexRequest

    pub(all) struct UpdateIndexRequest {
    paths : Array[String]
    max_depth : Int
    } derive(ToJson)

    更新索引的请求体(POST /api/admin/index/update)。

    UpdateIndexRequest::to_json

    显式声明 derive 出来的 ToJson 实现以普通方法暴露。