---
title: "PATCH /v1/admin/users/{id}"
method: PATCH
path: "/v1/admin/users/{id}"
tags: ["AdminUserService"]
---

# PATCH /v1/admin/users/{id}

`PATCH /v1/admin/users/{id}`

UpdateUser 更新用户资料

## Path parameters

- `id` string, required

## Request body

- AdminV1UpdateUserRequest
  - `allowTokenBindSource` boolean
  - `displayName` string
  - `email` string
  - `id` string
  - `password` string
  - `phone` string
  - `remark` string
  - `username` string

## Response `200`

OK

- AdminV1UpdateUserReply
  - `user` AdminV1UserAdminInfo — UserAdminInfo 是管理员视角的用户信息 DTO。 字段命名约定（与前端 AdminUser 接口约定）: - status: 字符串状态枚举 'active'|'banned'（不是数字码）；删除用户由 deleted_at 软删除表示，默认不出现在列表中 - role: 'user'|'agent'|'enterprise'|'admin' - 金额字段统一带 _micros 后缀，避免对端误把 micros 当元处理（金额单位混淆是 已经发生过的事故来源；命名上暴露单位是项目硬约束，见 AGENTS.md/skills） - protojson 把 int64 序列化为 JSON string，前端 AdminUser 用 `string` 接收 字段 ID 9 之前是历史管理后台接口的 int 字段（status=5/account_type=6/is_admin=7）， 现在统一改用字符串 status 与 role，旧路径调用方必须更新。proto 字段编号没改， 仅 wire format 不影响（同 ID 复用兼容老 binary）。
    - `accountType` integer — account_type 保留作为内部 / 老路径数字码（1=C端 2=B端员工 3=代理商 4=企业管理员 5=企业成员）。 新前端使用 role 字符串；这里保留是为了 wire format 兼容性。
    - `allowTokenBindSource` boolean — allow_token_bind_source 是否允许该用户的 API Key 绑定渠道资源。 启用后，该用户创建的 API Key 可设置 channel_source_id 实现令牌级路由； 禁用时，后端忽略 API Key 的 channel_source_id 绑定（即使已设置也不生效）。
    - `apiCallCount` string — api_call_count 是从 usage_logs 表聚合的累计调用次数。
    - `balanceMicros` string — 钱包聚合字段（list/get 时由 data 层 EnrichWalletAggregates 填充）。 单位 micros 强制写在字段名里，避免对端误用元单位计算。
    - `bannedAt` string, date-time — 封禁元数据（仅 status='banned' 时有值）。 banned_until=nil 表示永久封禁；非空时为预定的自动解封时间。
    - `bannedReason` string
    - `bannedUntil` string, date-time
    - `createdAt` string, date-time
    - `displayName` string
    - `email` string
    - `frozenBalanceMicros` string
    - `id` string
    - `inviteCount` string
    - `inviteRewardMicros` string
    - `inviterId` string
    - `inviterName` string
    - `lastLoginAt` string, date-time
    - `phone` string
    - `realnameStatus` string — realname_status 是个人实名认证状态：unverified / processing / verified。
    - `realnameVerifiedAt` string, date-time — realname_verified_at 是个人实名认证通过时间；未认证为空。
    - `remark` string
    - `roles` AdminV1Role[] — roles 是用户当前生效的 RBAC 角色（已过滤过期绑定/停用/已删除角色）。 前端用 role_id 调 iam GetRole (/v1/iam/roles/{id}) 查权限以驱动菜单/按钮。
      - `name` string — 角色显示名
      - `roleId` string — 角色 ID，与 iam GetRole (/v1/iam/roles/{id}) 入参一致
    - `status` string — status 是字符串状态枚举：'active' / 'banned'。 历史接口之前返回 int32 status，本次改为统一字符串；调用方应迁移。
    - `tierId` string — 用户绑定的等级（原始绑定值，非生效等级）。tier_id=0 表示未绑定， 运行时回落系统默认等级；企业成员（account_type=5）恒为 0， 等级在请求时动态跟随 team owner（见 tier.proto / PR#382 语义）。
    - `tierName` string — 等级名称；未绑定为空串。list/get 由 data 层批量填充，填充失败降级为空（WARN 不阻断）。
    - `totalSpentMicros` string
    - `username` string

---

[API](https://skmtc.dev/apiqik/apis/apiqik-api.md) · [All operations](https://skmtc.dev/apiqik/apis/apiqik-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/apiqik/apiqik-api/revisions/e06b96127408/schema)
