成员¶
MOI SDK 的 /user 能力管理 Catalog Service 用户:创建用户、查询列表与详情、更新
资料或角色、启停用户和删除用户。它不是统一账户中心的邀请接口;不要把 SDK 的
create_user / CreateUser 描述为“邀请已有 AI Studio 账号加入 Workspace”。
方法一览¶
操作 |
Python |
Go |
|---|---|---|
创建用户 |
|
|
查询用户列表 |
|
|
查询用户详情 |
|
|
更新电话、邮箱和描述 |
|
|
替换角色列表 |
|
|
启用或禁用 |
|
|
重置密码 |
|
|
删除用户 |
|
|
Python 使用字典请求和响应。Go 对应的主要类型是 UserCreateRequest、
UserListRequest、UserDetailInfoRequest、UserUpdateInfoRequest、
UserUpdateRoleListRequest、UserUpdateStatusRequest 和 UserDeleteUserRequest。
创建用户¶
创建前先用权限审计中的角色接口取得服务端角色 ID。
role_id_list 是初始角色的完整列表。
import os
from moi import RawClient
client = RawClient(
base_url=os.environ["MOI_BASE_URL"],
api_key=os.environ["MOI_API_KEY"],
)
created = client.create_user(
{
"name": "data_reader",
"password": os.environ["MOI_NEW_USER_PASSWORD"],
"role_id_list": [401],
"description": "Read-only integration user",
"email": "data-reader@example.com",
"get_api_key": False,
}
)
print("user id:", created["id"])
resp, err := client.CreateUser(ctx, &sdk.UserCreateRequest{
UserName: "data_reader",
Password: os.Getenv("MOI_NEW_USER_PASSWORD"),
RoleIDList: []sdk.RoleID{401},
Description: "Read-only integration user",
Email: "data-reader@example.com",
GetApiKey: false,
})
if err != nil {
return err
}
fmt.Println("user id:", resp.UserID)
只有明确需要在创建响应中交付 Key 时才将 get_api_key / GetApiKey 设为 true。
返回的 Key 应立即进入密钥管理系统,不能写入日志或工单。
分页查询¶
列表请求支持 page、page_size、排序、过滤和 keyword。Python 将通用分页字段放在
common_condition 中;Go 的 UserListRequest 嵌入 CommonCondition:
page = client.list_users(
{
"keyword": "reader",
"common_condition": {
"page": 1,
"page_size": 50,
"order": "desc",
"order_by": "created_at",
"filters": [],
},
}
)
for user in page["user_list"]:
print(user["id"], user["name"], user["status"])
响应包含 total 和 user_list。分页同步应持续到已经读取的条目覆盖 total,不要假设
空关键字会关闭其他过滤条件。
更新角色和状态¶
update_user_roles / UpdateUserRoles 替换用户现有的角色列表,不是追加单个角色。
修改前应读取详情,合并期望状态,再提交完整 role_id_list:
detail = client.get_user_detail({"id": 501})
current_ids = {role["id"] for role in detail["role_list"]}
client.update_user_roles(
{
"id": 501,
"role_id_list": sorted(current_ids | {402}),
}
)
启停请求使用 id 和 action。官方集成测试覆盖 enable 与 disable;不要用布尔值替代
这些动作字符串。提交后重新读取详情确认最终状态。
删除与同步¶
删除使用稳定用户 ID,并且是高风险写操作。删除前先确认依赖和审计要求;请求超时后先 查询用户详情或列表,再决定是否重试。
批量同步时,应把创建、资料更新、角色替换、启停和删除拆成独立变更。以用户 ID 作为 后续更新主键,名称和邮箱只用于匹配候选与展示。API Key、明文密码和完整错误响应不得 进入普通日志。
统一账号和 Workspace 的产品侧成员流程见 用户权限。两套用户模型的部署映射由目标 环境决定,SDK 本身没有 Workspace 邀请方法。