# PATCH /admin/api/admins/{admin_id} — 改角色/启停/重置密码 > 所属:Admin·Accounts 组(前缀 `/admin/api/admins`) | 鉴权:Bearer admin_token(角色:super_admin) | [← 返回 API 索引](./README.md) ## 入参 **路径参数**: | 字段 | 类型 | 必填 | 说明 | |---|---|---|---| | `admin_id` | int | ✓ | 目标管理员 id | **application/json**(三字段都可选,只改传了的;至少传一个): | 字段 | 类型 | 必填 | 说明 | |---|---|---|---| | `role` | string | ✗ | 改角色,枚举:`super_admin` / `finance` / `operator` | | `status` | string | ✗ | 启停,枚举:`active`(启用)/ `disabled`(禁用) | | `password` | string | ✗ | 重置密码,8–72 字(传则覆盖原密码) | ## 出参 响应 `200`:`AdminOut`(更新后的管理员) | 字段 | 类型 | 说明 | |---|---|---| | `id` | int | 管理员 id | | `username` | string | 账号 | | `role` | string | 角色 | | `status` | string | 状态 | | `created_at` | datetime | 创建时间(UTC) | | `last_login_at` | datetime \| null | 上次登录时间 | ## 错误码 - `400` 不能禁用自己(`admin_id == 当前 admin.id` 且 `status=disabled`) / 无任何变更字段(三字段全空) - `401` 未带 admin token / token 无效或过期 / 管理员被禁用 - `403` 角色不足(仅 super_admin) - `404` 管理员不存在 - `422` `role`/`status` 非法枚举 / `password` 长度不在 8–72 ## 说明 - 更新成功后写一条审计:`action=admin.update`、`target_type=admin`、`target_id=admin_id`、`detail` 为本次实际变更字段(如 `{"role": "...", "status": "...", "password": "reset"}`,密码只记 `reset` 不记明文)。见 [admin_audit_log](../database/admin_audit_log.md)。 - 数据表见 [admin_user](../database/admin_user.md)。