工作区与成员¶
Product API 使用工作区划分产品资源和权限范围。完成本页操作后,你可以确认当前身份在目标工作区中的角色和能力,列出工作区成员,并找到成员管理所需的接口与标识符。
前提条件¶
已按开始使用 Product API准备 Product API Base URL 和个人访问令牌。
已从
GET /workspaces响应中取得目标工作区 ID。当前身份具有查看目标工作区的权限;邀请、修改、停用或移除成员还需要相应的成员管理权限。
在终端中设置以下变量:
export PRODUCT_API_BASE_URL='<Product API Base URL ending in /newmoi>'
export PRODUCT_API_KEY='<your-personal-access-token>'
export WORKSPACE_ID='<workspace-id-from-GET-workspaces>'
除工作区发现和创建等少数接口外,工作区资源请求同时使用 X-API-Key 和 X-Workspace-ID。工作区 ID 必须来自当前账号可见的工作区结果,不能使用名称代替。
相关接口¶
以下路径相对于 Product API Base URL:
方法与路径 |
用途 |
是否需要 |
|---|---|---|
|
列出当前账号可见的工作区 |
否 |
|
查询当前身份在目标工作区中的角色和能力 |
是 |
|
分页列出目标工作区的成员 |
是 |
|
邀请账号加入目标工作区 |
是 |
|
查询指定成员详情 |
是 |
|
更新成员资料和标签 |
是 |
|
更新成员角色和默认角色 |
是 |
|
启用或停用成员 |
是 |
|
从工作区移除成员 |
是 |
检查当前工作区身份¶
在执行成员管理或其他受权限控制的操作前,先查询当前身份。此请求不需要请求体:
curl -X POST "$PRODUCT_API_BASE_URL/user/info" \
-H "X-API-Key: $PRODUCT_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H "Accept: application/json"
成功响应会返回当前成员、有效角色和能力快照。下面只展示后续调用最常用的字段:
{
"code": "OK",
"msg": "OK",
"data": {
"user": "<MEMBER_NAME>",
"role": "<ROLE_NAME>",
"is_admin": false,
"user_info": {
"id": "<MEMBER_ID>",
"name": "<MEMBER_NAME>",
"status": "enabled",
"reserved": false
},
"iam_context": {
"effective_role_id": "<ROLE_ID>",
"role_context_status": "<ROLE_CONTEXT_STATUS>",
"schema_version": "<SCHEMA_VERSION>",
"capability_version": "<CAPABILITY_VERSION>"
},
"iam_snapshot_version": "<SNAPSHOT_VERSION>"
}
}
字段 |
类型 |
返回条件 |
说明 |
|---|---|---|---|
|
string |
请求成功时返回 |
当前成员 ID。不要把它与工作区 ID 或角色 ID 混用。 |
|
string |
请求成功时返回 |
当前成员状态。成员被停用时,后续操作会受到限制。 |
|
string |
请求成功时返回 |
当前有效角色的显示名称。权限判断仍以服务端返回的能力结果为准。 |
|
boolean |
请求成功时返回 |
当前有效身份是否处于工作区系统管理员角色。不要只根据该字段推断某个具体操作一定允许。 |
|
string |
角色上下文可用时返回 |
本次请求实际生效的角色 ID。 |
|
string |
请求成功时返回 |
角色上下文状态。只有当前返回状态可用于判断本次请求的角色上下文。 |
|
string |
请求成功时返回 |
当前权限 Schema 版本。需要版本控制的权限变更应使用最新响应。 |
|
string |
请求成功时返回 |
当前权限快照版本,可用于记录和排查权限变化。 |
如果页面或应用允许工作区成员选择当前角色,应在切换后重新查询 /user/info,确认 effective_role_id 和能力结果已经更新。
列出工作区成员¶
POST /user/list 使用 JSON 请求体传递分页和筛选条件。下面的请求读取第一页成员:
curl -X POST "$PRODUCT_API_BASE_URL/user/list" \
-H "X-API-Key: $PRODUCT_API_KEY" \
-H "X-Workspace-ID: $WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"page": 1,
"page_size": 20
}'
字段 |
类型 |
必需 |
说明 |
|---|---|---|---|
|
integer |
否 |
要读取的页码。示例值为 |
|
integer |
否 |
本页请求的成员数量。取值限制以当前接口返回的校验信息为准。 |
|
array |
否 |
筛选条件列表。每项包含 |
|
string |
使用筛选时 |
筛选字段,例如 |
|
string[] |
使用筛选时 |
当前筛选字段的值。 |
成功响应包含成员总数和当前页成员:
{
"code": "OK",
"msg": "OK",
"data": {
"total": 1,
"user_list": [
{
"id": "<MEMBER_ID>",
"iam_user_id": "<IAM_USER_ID>",
"name": "<MEMBER_NAME>",
"description": "",
"status": "enabled",
"created_at": "<CREATED_AT>",
"updated_at": "<UPDATED_AT>",
"reserved": false,
"role_list": [
{
"id": 1,
"name": "<ROLE_NAME>",
"status": "<ROLE_STATUS>"
}
],
"tag_list": []
}
]
}
}
字段 |
类型 |
返回条件 |
说明 |
|---|---|---|---|
|
integer |
请求成功时返回 |
符合当前筛选条件的成员总数。不能只根据当前页数组长度判断是否还有下一页。 |
|
array |
请求成功时返回 |
当前页的成员列表。 |
|
string |
每个成员返回 |
Product API 成员 ID。查询、修改、停用或删除成员时使用该值。 |
|
string |
每个成员返回 |
成员当前状态,包括已启用、已停用或待接受邀请等当前接口返回的状态。 |
|
array |
每个成员返回 |
成员当前绑定的角色。角色变更时使用服务端返回的角色 ID。 |
|
array |
每个成员返回 |
成员标签。没有标签时返回空数组。 |
遍历全部成员时,根据 total、page 和 page_size 继续请求后续页面。不要假定第一项是最新成员,也不要根据名称推断成员唯一性。
管理成员¶
成员写操作都需要目标成员 ID。先通过 /user/list 或 /user/detail_info 读取最新状态,再提交变更。
任务 |
接口 |
关键输入 |
完成后检查 |
|---|---|---|---|
邀请成员 |
|
|
保存返回的成员 ID,并通过成员列表确认邀请或成员状态。 |
查看成员详情 |
|
|
检查状态、角色和标签是否为最新值。 |
更新成员资料 |
|
|
重新读取详情,不根据 HTTP 成功自行推断字段已经按预期保存。 |
更新角色 |
|
|
确认默认角色属于已分配角色列表,再重新读取成员和权限。 |
启用或停用成员 |
|
|
重新读取成员状态; |
移除成员 |
|
|
重新查询成员列表,确认成员已不在当前工作区。 |
停用或移除成员前,先交接其工作流、自动化任务、凭据和运维责任。成员关系发生变化后,已有任务和外部系统中的数据不会因此自动撤销或回滚。
常见问题¶
现象 |
先检查 |
下一步 |
|---|---|---|
返回 |
个人访问令牌和 |
按开始使用 Product API重新配置凭据,不混入 Bearer Token 或 Cookie。 |
返回 |
|
重新调用 |
找不到成员 |
成员 ID、筛选条件和分页位置 |
清除筛选并继续翻页;不要用显示名称代替成员 ID。 |
角色更新冲突或失败 |
最新角色列表、默认角色和权限 Schema 版本 |
重新读取当前身份和成员详情,使用最新角色 ID 与版本信息提交。 |
邀请后没有立即成为可用成员 |
成员列表中的当前状态 |
等待被邀请账号完成接受流程,再重新读取成员状态。 |