Skip to content
Home » HTTP API-成员管理:专业版使用文档

HTTP API-成员管理:专业版使用文档

  • by

1. 接入约定

正式环境 Base URL:https://app.dicloak.com/gin

  • 鉴权:请求头 X-HTTP-KEY,使用当前团队的 HTTP API Key。
  • 数据格式:JSON,请求体使用 Content-Type: application/json,字段使用 snake_case,ID 使用字符串。
  • 成功判断:code=0 为成功;非 0 为失败。HTTP 200 不代表业务成功,参数解析错误可返回 HTTP 400。
  • 示例:cURL 使用 Bash 语法,Key、ID、密码、邮箱和到期日期需替换为实际值。

2. 接口目录

章节方法路径功能
3GET/v1/api/request/member/group查询成员分组
4GET/v1/api/request/member查询成员列表
5GET/v1/api/request/member/{id}查询成员详情
6POST/v1/api/request/member创建成员
7PATCH/v1/api/request/member/{id}部分修改成员资料
8PUT/v1/api/request/member/{id}完整替换成员基础资料
9GET/v1/api/request/member/{id}/expiration查询到期停用配置
10PATCH/v1/api/request/member/{id}/expiration修改到期停用配置
11DELETE/v1/api/request/member/{id}删除成员
12PATCH/v1/api/request/member/{id}/password重置内部成员密码
13GET/v1/api/request/member/{id}/permissions查询成员功能权限
14GET/v1/api/request/member/{id}/login-verification查询内部成员登录验证
15PATCH/v1/api/request/member/{id}/login-verification修改内部成员登录验证
16POST/v1/api/request/member/{id}/totp生成并启用新的 2FA 密钥

3. 查询成员分组

查询当前团队成员分组,将返回的分组 ID 用于创建或修改成员的 member_group_id。

请求地址

GET https://app.dicloak.com/gin/v1/api/request/member/group

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。

请求参数

路径参数:无。请求体:无。

参数类型必填说明
page_nointeger否页码,默认 1,最小 1。
page_sizeinteger否每页数量,默认 10,范围 1~200。
namestring否按成员分组名称精确匹配。

请求示例

curl --get 'https://app.dicloak.com/gin/v1/api/request/member/group' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --data-urlencode 'page_no=1' \  --data-urlencode 'page_size=20'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为列表对象,失败时可为 null。
data.listarray本次返回的数据。
data.totalinteger符合条件的总数量。
data.summarynull本接口不使用汇总字段。
data.page_tokennull本接口不使用游标分页。
data.list[].idstring成员分组 ID,填写到 member_group_id。
data.list[].namestring成员分组名称。
data.list[].remarkstring/null分组备注。

成功响应示例

{  "code": 0,  "msg": "success",  "data": {    "list": [      {        "id": "member_group_001",        "name": "Customer Operations",        "remark": "Customer support permissions"      }    ],    "total": 1,    "summary": null,    "page_token": null  }}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
400009page_no 或 page_size 的类型、取值范围不正确。
500000请求处理失败。

错误响应示例:

{  "code": 400009,  "msg": "[page_size] must be an integer",  "data": null,  "next": null}

4. 查询成员列表

分页查询当前团队的内部成员和外部成员。多个筛选条件按 AND 组合,名称和账号使用精确匹配。

请求地址

GET https://app.dicloak.com/gin/v1/api/request/member

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。

请求参数

路径参数:无。请求体:无。

参数类型必填说明
page_nointeger否默认 1,最小 1。
page_sizeinteger否默认 10,范围 1~200。
idstring否成员 ID,精确匹配。
accountstring否内部账号或外部邮箱,精确匹配。
namestring否成员显示名称,精确匹配。
typestring否INTERNAL / EXTERNAL;省略查询两类。
statusstring否ENABLED / DISABLED;按包含到期因素的有效状态筛选。
authoritystring否SUPER_ADMIN / ADMIN / MANAGER / MEMBER。
member_group_idstring否当前团队成员分组 ID。
profile_group_idstring否当前团队 Profile 分组 ID;包含明确授权和全部分组授权的成员。

请求示例

curl --get 'https://app.dicloak.com/gin/v1/api/request/member' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --data-urlencode 'page_no=1' \  --data-urlencode 'page_size=20' \  --data-urlencode 'type=INTERNAL' \  --data-urlencode 'status=ENABLED'

按外部邮箱精确查询:

curl --get 'https://app.dicloak.com/gin/v1/api/request/member' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --data-urlencode 'account=partner@example.com' \  --data-urlencode 'page_no=1' \  --data-urlencode 'page_size=20'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为列表对象,失败时可为 null。
data.listarray本次返回的数据。
data.totalinteger符合条件的总数量。
data.summarynull本接口不使用汇总字段。
data.page_tokennull本接口不使用游标分页。
data.list[].idstring成员 ID。
data.list[].namestring成员显示名称。
data.list[].accountstringINTERNAL 为登录账号;EXTERNAL 为个人邮箱。
data.list[].typestringINTERNAL / EXTERNAL。
data.list[].statusstringENABLED / DISABLED;包含到期状态,固定到期时间已过视为 DISABLED。
data.list[].authoritystringSUPER_ADMIN(超级管理员)/ ADMIN(管理员)/ MANAGER(经理)/ MEMBER(普通成员,英文 UI 为 Staff)。
data.list[].member_group_idstring/null功能权限成员分组 ID,不是成员身份。
data.list[].member_group_namestring/null成员分组名称。
data.list[].managerobject/null上级经理;未分配时为 null。
data.list[].manager.idstring经理成员 ID。
data.list[].manager.namestring经理显示名称。
data.list[].all_profile_groupsboolean是否拥有全部 Profile 分组访问权。
data.list[].profile_group_listarray指定授权的 Profile 分组;all_profile_groups=true 时返回 []。
data.list[].profile_group_list[].idstringProfile 分组 ID,不是单个 Profile ID。
data.list[].profile_group_list[].namestringProfile 分组名称。
data.list[].disuse_remaining_timeinteger/null距停用的剩余毫秒数,可为负数或 null;成员状态以 status 为准。
data.list[].remarkstring/null备注,空备注返回 null。
data.list[].create_timestring/null创建时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.list[].update_timestring/null修改时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。

成功响应示例

{  "code": 0,  "msg": "success",  "data": {    "list": [      {        "id": "member_001",        "name": "Alice",        "account": "alice001",        "type": "INTERNAL",        "status": "ENABLED",        "authority": "MEMBER",        "member_group_id": "member_group_001",        "member_group_name": "Customer Operations",        "manager": {          "id": "manager_001",          "name": "Team Manager"        },        "all_profile_groups": false,        "profile_group_list": [          {            "id": "profile_group_001",            "name": "Customer Profiles"          }        ],        "remark": "Customer Operations",        "create_time": "2026-09-24 10:00:00",        "update_time": "2026-09-24 10:00:00",        "disuse_remaining_time": null      }    ],    "total": 1,    "summary": null,    "page_token": null  }}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
400009page_no、page_size 的类型或范围错误,或 authority 取值不正确。
400017type 或 status 枚举不合法。
300001用于筛选的成员分组或 Profile 分组不存在于当前团队。
500000请求处理失败。

错误响应示例:

{  "code": 400009,  "msg": "[page_no] must be an integer",  "data": null,  "next": null}

5. 查询成员详情

查询当前团队指定成员的基础资料、分组授权和完整到期配置。

请求地址

GET https://app.dicloak.com/gin/v1/api/request/member/{id}

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。

路径参数

参数类型必填说明
idstring是当前团队成员 ID;

Query 参数:无。

请求体

无。

请求示例

curl --request GET 'https://app.dicloak.com/gin/v1/api/request/member/member_001' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.idstring成员 ID。
data.namestring成员显示名称。
data.accountstringINTERNAL 为登录账号;EXTERNAL 为个人邮箱。
data.typestringINTERNAL / EXTERNAL。
data.statusstringENABLED / DISABLED;包含到期状态,固定到期时间已过视为 DISABLED。
data.authoritystringSUPER_ADMIN(超级管理员)/ ADMIN(管理员)/ MANAGER(经理)/ MEMBER(普通成员)。
data.member_group_idstring/null功能权限成员分组 ID,不是成员身份。
data.member_group_namestring/null成员分组名称。
data.managerobject/null上级经理;未分配时为 null。
data.manager.idstring经理成员 ID。
data.manager.namestring经理显示名称。
data.all_profile_groupsboolean是否拥有全部 Profile 分组访问权。
data.profile_group_listarray指定授权的 Profile 分组;all_profile_groups=true 时返回 []。
data.profile_group_list[].idstringProfile 分组 ID,不是单个 Profile ID。
data.profile_group_list[].namestringProfile 分组名称。
data.remarkstring/null备注,空备注返回 null。
data.create_timestring/null创建时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.update_timestring/null修改时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.expirationobject到期停用配置;关闭时仅包含 enabled=false。
data.expiration.enabledboolean是否启用到期停用。
data.expiration.time_zonestring开启时返回,IANA 时区,如 America/New_York。
data.expiration.modestring开启时返回:INSTANT 固定到期;LOGIN_START 首次登录后计时。
data.expiration.expires_atstring仅 INSTANT 返回;time_zone 当地时间,格式 yyyy-MM-dd HH:mm。
data.expiration.daysinteger仅 LOGIN_START 返回;首次登录后有效天数。

成功响应示例

{  "code": 0,  "msg": "success",  "data": {    "id": "member_001",    "name": "Alice",    "account": "alice001",    "type": "INTERNAL",    "status": "ENABLED",    "authority": "MEMBER",    "member_group_id": "member_group_001",    "member_group_name": "Customer Operations",    "manager": {      "id": "manager_001",      "name": "Team Manager"    },    "all_profile_groups": false,    "profile_group_list": [      {        "id": "profile_group_001",        "name": "Customer Profiles"      }    ],    "expiration": {      "enabled": true,      "time_zone": "America/New_York",      "mode": "INSTANT",      "expires_at": "2099-12-31 23:59"    },    "remark": "Customer Operations",    "create_time": "2026-09-24 10:00:00",    "update_time": "2026-09-24 10:00:00"  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
300001成员不存在、已删除,或不属于当前团队。
500000请求处理失败。

错误响应示例:

{  "code": 300001,  "msg": "id does not identify an existing member in the current team",  "data": null,  "next": null}

6. 创建成员

创建内部账号及团队成员,或将外部个人账号加入当前团队。成功后保存 data.id,后续成员操作使用该 ID。

请求地址

POST https://app.dicloak.com/gin/v1/api/request/member

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。
Content-Typestring是固定为 application/json。

请求参数

路径参数:无。Query 参数:无。

JSON Body:基础字段

参数类型必填说明
namestring是非空,最多 20 字符;当前团队内不能重名。
accountstring是INTERNAL:6~20 位英文字母或数字,不允许空格;EXTERNAL:有效邮箱。
passwordstringINTERNAL 必填8~25 字符,至少一个英文字母和一个数字,不允许首尾空白;通过 HTTPS 提交原始密码字符串,请勿预先进行哈希、编码或加密转换。EXTERNAL 应省略。
typestring是INTERNAL / EXTERNAL;创建后不可通过资料接口修改。
authoritystring是ADMIN / MANAGER / MEMBER;
member_group_idstring是当前团队存在、启用且可分配的成员分组 ID。
statusstring否ENABLED / DISABLED;默认 ENABLED。
manager_idstring否仅 authority=MEMBER 可设置,须为当前团队已启用的 MANAGER 成员 ID。省略表示无上级经理。
all_profile_groupsboolean否ADMIN 默认 true,其他身份默认 false;ADMIN 必须为 true。
profile_group_idsarray of string否当前团队的 Profile 分组 ID 数组,默认 [];all_profile_groups=true 时须为空;ID 不得为空或重复。
expirationobject否省略关闭到期停用;提交时必须提供 enabled,开启时提供完整模式配置。
login_verificationobject否仅 INTERNAL 可设置;省略关闭邮箱验证和 2FA。提交时至少包含 email/check_email/check_2fa/trigger 中一项,不能为 null。
remarkstring/null否最多 200 字符;省略表示无备注。

JSON Body:expiration 全部字段

参数类型必填说明
expiration.enabledboolean对象存在时必填false 时对象中只能有 enabled;true 时必须提供时区、模式及日期或天数;配置字段不接受 null。
expiration.time_zonestring开启时必填IANA 时区,如 America/New_York、Europe/London、Asia/Shanghai。
expiration.modestring开启时必填INSTANT:指定时间停用;LOGIN_START:首次登录后计时。
expiration.expires_atstringINSTANT 开启或切换时必填当地时间,精确到分钟;格式 yyyy-MM-dd HH:mm,也接受 yyyy-MM-dd HH:mm:ss(忽略秒)。必须为未来时间,不可同时传 days。
expiration.daysintegerLOGIN_START 开启或切换时必填1~36500,仅可在首次激活前设置,不可同时传 expires_at;续期使用 expires_at。

JSON Body:login_verification 全部字段

参数类型必填说明
login_verification.check_emailboolean否默认 false,不接受 null;开启时 email 必须有效。
login_verification.emailstring/null否验证码接收邮箱,不是登录账号;允许更新且无需验证码。邮箱验证开启时不能清空。
login_verification.check_2faboolean否默认 false;true 开启 2FA,不接受 null。密钥通过响应 secret_2fa 获取,不允许在请求中提交。
login_verification.triggerobject否默认 EVERY_LOGIN;提交时必须为完整触发配置,不能为 null。
login_verification.trigger.modestring提交 trigger 时必填EVERY_LOGIN:每次登录团队验证;DEVICE_OR_INTERVAL:换设备或达到时间间隔后验证。
login_verification.trigger.intervalinteger间隔模式必填1~168。EVERY_LOGIN 不允许提交。
login_verification.trigger.unitstring间隔模式必填HOUR / DAY。EVERY_LOGIN 不允许提交。
login_verification.trigger.logout_on_timeoutboolean否间隔模式省略时为 false;true 表示到时自动退出。EVERY_LOGIN 不允许提交,不能为 null。

请求示例:内部成员

curl --request POST 'https://app.dicloak.com/gin/v1/api/request/member' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "name": "Alice",  "account": "alice001",  "password": "ExamplePass2026!",  "type": "INTERNAL",  "authority": "MEMBER",  "member_group_id": "member_group_001",  "status": "ENABLED",  "manager_id": "manager_001",  "all_profile_groups": false,  "profile_group_ids": [    "profile_group_001"  ],  "expiration": {    "enabled": true,    "time_zone": "America/New_York",    "mode": "INSTANT",    "expires_at": "2099-12-31 23:59"  },  "login_verification": {    "check_email": true,    "email": "alice.verify@example.com",    "check_2fa": true,    "trigger": {      "mode": "DEVICE_OR_INTERVAL",      "interval": 7,      "unit": "DAY",      "logout_on_timeout": false    }  },  "remark": "Customer Operations"}'

请求示例:外部成员

curl --request POST 'https://app.dicloak.com/gin/v1/api/request/member' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "name": "Partner",  "account": "partner@example.com",  "type": "EXTERNAL",  "authority": "MEMBER",  "member_group_id": "member_group_001",  "status": "ENABLED",  "all_profile_groups": false,  "profile_group_ids": [    "profile_group_001"  ],  "expiration": {    "enabled": false  },  "remark": "External partner"}'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.idstring成员 ID。
data.namestring成员显示名称。
data.accountstringINTERNAL 为登录账号;EXTERNAL 为个人邮箱。
data.typestringINTERNAL / EXTERNAL。
data.statusstringENABLED / DISABLED;包含到期状态,固定到期时间已过视为 DISABLED。
data.authoritystringSUPER_ADMIN(超级管理员)/ ADMIN(管理员)/ MANAGER(经理)/ MEMBER(普通成员,英文 UI 为 Staff)。
data.member_group_idstring/null功能权限成员分组 ID,不是成员身份。
data.member_group_namestring/null成员分组名称。
data.managerobject/null上级经理;未分配时为 null。
data.manager.idstring经理成员 ID。
data.manager.namestring经理显示名称。
data.all_profile_groupsboolean是否拥有全部 Profile 分组访问权。
data.profile_group_listarray指定授权的 Profile 分组;all_profile_groups=true 时返回 []。
data.profile_group_list[].idstringProfile 分组 ID,不是单个 Profile ID。
data.profile_group_list[].namestringProfile 分组名称。
data.remarkstring/null备注,空备注返回 null。
data.create_timestring/null创建时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.update_timestring/null修改时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.expirationobject到期停用配置;关闭时仅包含 enabled=false。
data.expiration.enabledboolean是否启用到期停用。
data.expiration.time_zonestring开启时返回,IANA 时区,如 America/New_York。
data.expiration.modestring开启时返回:INSTANT 固定到期;LOGIN_START 首次登录后计时。
data.expiration.expires_atstring仅 INSTANT 返回;time_zone 当地时间,格式 yyyy-MM-dd HH:mm。
data.expiration.daysinteger仅 LOGIN_START 返回;首次登录后有效天数。
data.login_verificationobject创建 INTERNAL 时返回;EXTERNAL 不返回。
data.login_verification.check_emailboolean是否开启邮箱验证。
data.login_verification.emailstring仅 check_email=true 时返回验证码接收邮箱。
data.login_verification.check_2faboolean是否开启 2FA。
data.login_verification.secret_2fastring仅 check_2fa=true 时返回;这是验证器密钥,不是动态验证码。
data.login_verification.triggerobject当前验证触发配置。
data.login_verification.trigger.modestringEVERY_LOGIN / DEVICE_OR_INTERVAL。
data.login_verification.trigger.intervalinteger仅 DEVICE_OR_INTERVAL 返回;间隔 1~168。
data.login_verification.trigger.unitstring仅 DEVICE_OR_INTERVAL 返回;HOUR / DAY。
data.login_verification.trigger.logout_on_timeoutboolean仅 DEVICE_OR_INTERVAL 返回;达到间隔后是否自动退出。

响应头:Cache-Control: no-store。不会返回 password。

成功响应示例:内部成员

{  "code": 0,  "msg": "success",  "data": {    "id": "member_001",    "name": "Alice",    "account": "alice001",    "type": "INTERNAL",    "status": "ENABLED",    "authority": "MEMBER",    "member_group_id": "member_group_001",    "member_group_name": "Customer Operations",    "manager": {      "id": "manager_001",      "name": "Team Manager"    },    "all_profile_groups": false,    "profile_group_list": [      {        "id": "profile_group_001",        "name": "Customer Profiles"      }    ],    "expiration": {      "enabled": true,      "time_zone": "America/New_York",      "mode": "INSTANT",      "expires_at": "2099-12-31 23:59"    },    "remark": "Customer Operations",    "create_time": "2026-09-24 10:00:00",    "update_time": "2026-09-24 10:00:00",    "login_verification": {      "check_email": true,      "email": "alice.verify@example.com",      "check_2fa": true,      "secret_2fa": "<SERVER_GENERATED_2FA_SECRET>",      "trigger": {        "mode": "DEVICE_OR_INTERVAL",        "interval": 7,        "unit": "DAY",        "logout_on_timeout": false      }    }  },  "next": null}

成功响应示例:外部成员

{  "code": 0,  "msg": "success",  "data": {    "id": "member_external_001",    "name": "Partner",    "account": "partner@example.com",    "type": "EXTERNAL",    "status": "ENABLED",    "authority": "MEMBER",    "member_group_id": "member_group_001",    "member_group_name": "Customer Operations",    "manager": null,    "all_profile_groups": false,    "profile_group_list": [      {        "id": "profile_group_001",        "name": "Customer Profiles"      }    ],    "expiration": {      "enabled": false    },    "remark": "External partner",    "create_time": "2026-09-24 10:00:00",    "update_time": "2026-09-24 10:00:00"  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
400009必填字段缺失、权限配置冲突、外部成员提交登录验证配置。
400017内部账号或外部邮箱格式错误、字段超长、外部成员提交密码。
300001成员分组、Profile 分组或经理不属于当前团队,或引用不存在。
400011成员分组已停用或不能分配。
300108团队内成员名称重复。
300131当前团队内外部成员邮箱重复。
300164账号不可作为外部个人账号关联或账号已占用。
300165内部账号已存在。
300133团队成员额度已满。
300203密码格式不合法。
300204时区不合法。
300205到期时间或天数不合法。
300206请求分配 SUPER_ADMIN 身份。
500000请求处理失败。

错误响应示例:

{  "code": 300203,  "msg": "password must be 8-25 characters, contain an English letter and a digit, and have no leading or trailing spaces",  "data": null,  "next": null}

7. 部分修改成员资料

仅修改明确提交的基础资料字段;未提交的字段保留原值。支持内部和外部成员,不支持修改超级管理员。

请求地址

PATCH https://app.dicloak.com/gin/v1/api/request/member/{id}

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。
Content-Typestring是固定为 application/json。

路径参数

参数类型必填说明
idstring是当前团队成员 ID;支持 INTERNAL、EXTERNAL,不允许修改 SUPER_ADMIN。

Query 参数:无。

JSON Body 参数

至少提交以下八个字段中的一个;空对象 {} 会报错。

参数类型必填说明
namestring否非空,最多 20 字符,当前团队内不能重名;省略保持,null 拒绝。
authoritystring否ADMIN / MANAGER / MEMBER;省略保持,null 拒绝。从 ADMIN 降级须同时传 all_profile_groups 和 profile_group_ids。
statusstring否ENABLED / DISABLED;省略保持,null 拒绝。
member_group_idstring否当前团队启用、可分配的成员分组;省略保持,null 或空白拒绝。
manager_idstring/null否仅 authority=MEMBER 可提交,须为当前团队已启用的经理 ID;null 清空,省略保持。
all_profile_groupsboolean否是否访问全部 Profile 分组;ADMIN 必须为 true,不接受 null。
profile_group_idsarray of string否当前团队的 Profile 分组 ID 数组,完整替换授权集合;[] 清空,null 拒绝,省略保持;all_profile_groups=true 时须为空。
remarkstring/null否最多 200 字符;null 清空,省略保持。

请求示例:修改分组授权与备注

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "all_profile_groups": false,  "profile_group_ids": [    "profile_group_001"  ],  "remark": "Updated by API"}'

请求示例:停用成员

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "status": "DISABLED"}'

请求示例:管理员降为普通成员

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "authority": "MEMBER",  "all_profile_groups": false,  "profile_group_ids": [    "profile_group_001"  ]}'

请求示例:清空普通成员的经理和备注

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "manager_id": null,  "remark": null}'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.idstring成员 ID。
data.namestring成员显示名称。
data.accountstringINTERNAL 为登录账号;EXTERNAL 为个人邮箱。
data.typestringINTERNAL / EXTERNAL。
data.statusstringENABLED / DISABLED;包含到期状态,固定到期时间已过视为 DISABLED。
data.authoritystringSUPER_ADMIN(超级管理员)/ ADMIN(管理员)/ MANAGER(经理)/ MEMBER(普通成员,英文 UI 为 Staff)。
data.member_group_idstring/null功能权限成员分组 ID,不是成员身份。
data.member_group_namestring/null成员分组名称。
data.managerobject/null上级经理;未分配时为 null。
data.manager.idstring经理成员 ID。
data.manager.namestring经理显示名称。
data.all_profile_groupsboolean是否拥有全部 Profile 分组访问权。
data.profile_group_listarray指定授权的 Profile 分组;all_profile_groups=true 时返回 []。
data.profile_group_list[].idstringProfile 分组 ID,不是单个 Profile ID。
data.profile_group_list[].namestringProfile 分组名称。
data.remarkstring/null备注,空备注返回 null。
data.create_timestring/null创建时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.update_timestring/null修改时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.expirationobject到期停用配置;关闭时仅包含 enabled=false。
data.expiration.enabledboolean是否启用到期停用。
data.expiration.time_zonestring开启时返回,IANA 时区,如 America/New_York。
data.expiration.modestring开启时返回:INSTANT 固定到期;LOGIN_START 首次登录后计时。
data.expiration.expires_atstring仅 INSTANT 返回;time_zone 当地时间,格式 yyyy-MM-dd HH:mm。
data.expiration.daysinteger仅 LOGIN_START 返回;首次登录后有效天数。

成功响应示例

以下为“修改分组授权与备注”请求的完整成功响应。

{  "code": 0,  "msg": "success",  "data": {    "id": "member_001",    "name": "Alice",    "account": "alice001",    "type": "INTERNAL",    "status": "ENABLED",    "authority": "MEMBER",    "member_group_id": "member_group_001",    "member_group_name": "Customer Operations",    "manager": {      "id": "manager_001",      "name": "Team Manager"    },    "all_profile_groups": false,    "profile_group_list": [      {        "id": "profile_group_001",        "name": "Customer Profiles"      }    ],    "expiration": {      "enabled": true,      "time_zone": "America/New_York",      "mode": "INSTANT",      "expires_at": "2099-12-31 23:59"    },    "remark": "Updated by API",    "create_time": "2026-09-24 10:00:00",    "update_time": "2026-09-24 11:00:00"  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
400009空请求、不允许的 null、经理或分组授权配置冲突。
400017名称或备注超长等格式错误。
300001成员或关联分组/经理不存在于当前团队。
400011成员分组已停用或不能分配。
300108成员名称重复。
300205成员到期规则已过期,需要先续期或关闭到期再恢复。
300206修改超级管理员或分配 SUPER_ADMIN。
300099请求暂时无法处理,请稍后重试。
500000请求处理失败。

错误响应示例:

{  "code": 400009,  "msg": "request_body must contain at least one editable member field",  "data": null,  "next": null}

8. 完整替换成员基础资料

提交完整可编辑基础资料。缺少必填字段会报错;可选的经理和备注省略时会清空。支持内部和外部成员,不支持修改超级管理员。

请求地址

PUT https://app.dicloak.com/gin/v1/api/request/member/{id}

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。
Content-Typestring是固定为 application/json。

路径参数

参数类型必填说明
idstring是当前团队成员 ID;支持 INTERNAL、EXTERNAL,不允许修改 SUPER_ADMIN。

Query 参数:无。

JSON Body 参数

参数类型必填说明
namestring是非空,最多 20 字符,团队内不可重名。
authoritystring是ADMIN / MANAGER / MEMBER;不允许 SUPER_ADMIN。
statusstring是ENABLED / DISABLED。
member_group_idstring是当前团队启用且可分配的成员分组 ID。。
all_profile_groupsboolean是ADMIN 必须 true;是否访问全部 Profile 分组。
profile_group_idsarray of string是当前团队的 Profile 分组 ID 数组;完整替换授权集合,不可为 null;all_profile_groups=true 时必须传 []。
manager_idstring/null否仅 MEMBER 可设置非空值;须为当前团队已启用的 MANAGER;省略或 null 会清空。
remarkstring/null否最多 200 字符;省略或 null 会清空。

请求示例

curl --request PUT 'https://app.dicloak.com/gin/v1/api/request/member/member_001' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "name": "Alice Updated",  "authority": "MEMBER",  "status": "ENABLED",  "member_group_id": "member_group_001",  "all_profile_groups": false,  "profile_group_ids": [    "profile_group_001"  ],  "manager_id": null,  "remark": "Replaced by API"}'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.idstring成员 ID。
data.namestring成员显示名称。
data.accountstringINTERNAL 为登录账号;EXTERNAL 为个人邮箱。
data.typestringINTERNAL / EXTERNAL。
data.statusstringENABLED / DISABLED;包含到期状态,固定到期时间已过视为 DISABLED。
data.authoritystringSUPER_ADMIN(超级管理员)/ ADMIN(管理员)/ MANAGER(经理)/ MEMBER(普通成员,英文 UI 为 Staff)。
data.member_group_idstring/null功能权限成员分组 ID,不是成员身份。
data.member_group_namestring/null成员分组名称。
data.managerobject/null上级经理;未分配时为 null。
data.manager.idstring经理成员 ID。
data.manager.namestring经理显示名称。
data.all_profile_groupsboolean是否拥有全部 Profile 分组访问权。
data.profile_group_listarray指定授权的 Profile 分组;all_profile_groups=true 时返回 []。
data.profile_group_list[].idstringProfile 分组 ID,不是单个 Profile ID。
data.profile_group_list[].namestringProfile 分组名称。
data.remarkstring/null备注,空备注返回 null。
data.create_timestring/null创建时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.update_timestring/null修改时间,yyyy-MM-dd HH:mm:ss;不带时区偏移,不应自行按 UTC 解释。
data.expirationobject到期停用配置;关闭时仅包含 enabled=false。
data.expiration.enabledboolean是否启用到期停用。
data.expiration.time_zonestring开启时返回,IANA 时区,如 America/New_York。
data.expiration.modestring开启时返回:INSTANT 固定到期;LOGIN_START 首次登录后计时。
data.expiration.expires_atstring仅 INSTANT 返回;time_zone 当地时间,格式 yyyy-MM-dd HH:mm。
data.expiration.daysinteger仅 LOGIN_START 返回;首次登录后有效天数。

成功响应示例

{  "code": 0,  "msg": "success",  "data": {    "id": "member_001",    "name": "Alice Updated",    "account": "alice001",    "type": "INTERNAL",    "status": "ENABLED",    "authority": "MEMBER",    "member_group_id": "member_group_001",    "member_group_name": "Customer Operations",    "manager": null,    "all_profile_groups": false,    "profile_group_list": [      {        "id": "profile_group_001",        "name": "Customer Profiles"      }    ],    "expiration": {      "enabled": true,      "time_zone": "America/New_York",      "mode": "INSTANT",      "expires_at": "2099-12-31 23:59"    },    "remark": "Replaced by API",    "create_time": "2026-09-24 10:00:00",    "update_time": "2026-09-24 11:00:00"  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
400009缺少必填字段、不合法的 null 或权限配置冲突。
400017字段长度等格式错误。
300001成员、分组或经理不在当前团队。
400011成员分组停用或不可分配。
300108名称重复。
300205未续期的过期成员不能直接恢复。
300206不允许修改或分配超级管理员。
300099请求暂时无法处理,请稍后重试。
500000请求处理失败。

错误响应示例:

{  "code": 400009,  "msg": "[profile_group_ids] is required",  "data": null,  "next": null}

9. 查询到期停用配置

查询指定成员是否启用到期停用,以及当前固定到期时间或首次登录有效天数。支持内部和外部成员。

请求地址

GET https://app.dicloak.com/gin/v1/api/request/member/{id}/expiration

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。

路径参数

参数类型必填说明
idstring是当前团队成员 ID;支持 INTERNAL、EXTERNAL。

Query 参数:无。

请求体

无。

请求示例

curl --request GET 'https://app.dicloak.com/gin/v1/api/request/member/member_001/expiration' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.enabledboolean是否启用到期停用。
data.time_zonestring开启时返回,IANA 时区,如 America/New_York。
data.modestring开启时返回:INSTANT 固定到期;LOGIN_START 首次登录后计时。
data.expires_atstring仅 INSTANT 返回;time_zone 当地时间,格式 yyyy-MM-dd HH:mm。
data.daysinteger仅 LOGIN_START 返回;首次登录后有效天数。

成功响应示例:关闭到期停用

{  "code": 0,  "msg": "success",  "data": {    "enabled": false  },  "next": null}

成功响应示例:固定时间到期

{  "code": 0,  "msg": "success",  "data": {    "enabled": true,    "time_zone": "America/New_York",    "mode": "INSTANT",    "expires_at": "2099-12-31 23:59"  },  "next": null}

成功响应示例:首次登录后计时

{  "code": 0,  "msg": "success",  "data": {    "enabled": true,    "time_zone": "America/New_York",    "mode": "LOGIN_START",    "days": 30  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
300001成员不存在、已删除或不属于当前团队。
500000请求处理失败。

错误响应示例:

{  "code": 300001,  "msg": "id does not identify an existing member in the current team",  "data": null,  "next": null}

10. 修改到期停用配置

开启、续期、切换或关闭成员到期停用规则。支持内部和外部成员,不允许修改超级管理员。

请求地址

PATCH https://app.dicloak.com/gin/v1/api/request/member/{id}/expiration

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。
Content-Typestring是固定为 application/json。

路径参数

参数类型必填说明
idstring是当前团队成员 ID;支持 INTERNAL、EXTERNAL,不允许修改 SUPER_ADMIN。

Query 参数:无。

JSON Body 参数

至少提交一个字段,不接受 null。已开启时省略字段保持原值;切换模式须提供对应必填参数。

参数类型必填说明
enabledboolean条件必填从关闭变为开启必须传 true;传 false 时只能提交此字段。
time_zonestring开启时必填IANA 时区,如 America/New_York、Europe/London、Asia/Shanghai。
modestring开启时必填INSTANT:指定时间停用;LOGIN_START:首次登录后计时。
expires_atstringINSTANT 开启或切换时必填当地时间,精确到分钟;格式 yyyy-MM-dd HH:mm,也接受 yyyy-MM-dd HH:mm:ss(忽略秒)。必须为未来时间,不可同时传 days。
daysintegerLOGIN_START 开启或切换时必填1~36500,仅可在首次激活前设置,不可同时传 expires_at;续期使用 expires_at。

请求示例:开启固定日期到期

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/expiration' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "enabled": true,  "time_zone": "America/New_York",  "mode": "INSTANT",  "expires_at": "2099-12-31 23:59"}'

请求示例:开启首次登录后 30 天到期

此示例仅适用于尚未激活的成员。

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/expiration' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "enabled": true,  "time_zone": "America/New_York",  "mode": "LOGIN_START",  "days": 30}'

请求示例:固定日期续期

此示例要求当前已开启 INSTANT 到期规则。

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/expiration' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "expires_at": "2099-12-31 23:59"}'

请求示例:关闭到期停用

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/expiration' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "enabled": false}'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.enabledboolean是否启用到期停用。
data.time_zonestring开启时返回,IANA 时区,如 America/New_York。
data.modestring开启时返回:INSTANT 固定到期;LOGIN_START 首次登录后计时。
data.expires_atstring仅 INSTANT 返回;time_zone 当地时间,格式 yyyy-MM-dd HH:mm。
data.daysinteger仅 LOGIN_START 返回;首次登录后有效天数。

成功响应示例:固定日期到期

{  "code": 0,  "msg": "success",  "data": {    "enabled": true,    "time_zone": "America/New_York",    "mode": "INSTANT",    "expires_at": "2099-12-31 23:59"  },  "next": null}

成功响应示例:首次登录后计时

{  "code": 0,  "msg": "success",  "data": {    "enabled": true,    "time_zone": "America/New_York",    "mode": "LOGIN_START",    "days": 30  },  "next": null}

成功响应示例:关闭到期停用

{  "code": 0,  "msg": "success",  "data": {    "enabled": false  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
400009空请求、null、未开启时只提供部分配置、关闭时附加其他字段。
400017mode 不是 INSTANT 或 LOGIN_START。
300001成员不存在或不属于当前团队。
300204time_zone 不是有效时区。
300205到期时间、天数或续期参数不符合要求。
300206不允许修改超级管理员。
300099请求暂时无法处理,请稍后重试。
500000请求处理失败。

错误响应示例:

{  "code": 300205,  "msg": "expires_at must be later than the current time",  "data": null,  "next": null}

11. 删除成员

删除内部成员时,同时删除其内部账号并退出已登录设备;删除外部成员时,仅移除其与当前团队的关联,保留个人账号及其他团队关系。

请求地址

DELETE https://app.dicloak.com/gin/v1/api/request/member/{id}

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。

路径参数

参数类型必填说明
idstring是当前团队成员 ID;支持 INTERNAL、EXTERNAL,不允许修改 SUPER_ADMIN。

Query 参数:无。

请求体

无,不需要提交 JSON。

请求示例

curl --request DELETE 'https://app.dicloak.com/gin/v1/api/request/member/member_001' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
datanull成功后无业务数据,值为 null。
nextnull本接口不使用此字段。

成功响应示例

{  "code": 0,  "msg": "success",  "data": null,  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
300001成员不存在、已删除或不属于当前团队。
300206不允许删除超级管理员。
300099请求暂时无法处理,请稍后重试。
500000请求处理失败。

错误响应示例:

{  "code": 300206,  "msg": "id identifies the Super Admin (team owner); this member cannot be modified by this API",  "data": null,  "next": null}

12. 重置内部成员密码

重置内部成员密码,无需旧密码。成功后成员需重新登录。

请求地址

PATCH https://app.dicloak.com/gin/v1/api/request/member/{id}/password

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。
Content-Typestring是固定为 application/json。

路径参数

参数类型必填说明
idstring是当前团队的 INTERNAL 成员 ID;不支持 EXTERNAL、SUPER_ADMIN。

Query 参数:无。

JSON Body 参数

参数类型必填说明
passwordstring是8~25 字符;至少包含一个英文字母和一个数字;不能包含首尾空白。通过 HTTPS 提交原始密码字符串,请勿预先进行哈希、编码或加密转换。

请求示例

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/password' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "password": "NewExamplePass2026!"}'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
datanull成功后无业务数据,值为 null。
nextnull本接口不使用此字段。

成功响应示例

{  "code": 0,  "msg": "success",  "data": null,  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
400009password 缺失、空白、字段类型错误。
300203密码长度、字母数字组合或首尾空白不符合规则。
300001成员不存在或不属于当前团队。
300207目标为 EXTERNAL,不允许重置个人密码。
300206不允许修改超级管理员。
500000请求处理失败。

错误响应示例:

{  "code": 300203,  "msg": "password must be 8-25 characters, contain an English letter and a digit, and have no leading or trailing spaces",  "data": null,  "next": null}

13. 查询成员功能权限

查询路径 id 对应成员的功能权限,支持内部和外部成员。

请求地址

GET https://app.dicloak.com/gin/v1/api/request/member/{id}/permissions

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。

路径参数

参数类型必填说明
idstring是当前团队成员 ID;支持 INTERNAL、EXTERNAL。

Query 参数:无。

请求体

无。

请求示例

curl --request GET 'https://app.dicloak.com/gin/v1/api/request/member/member_001/permissions' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为列表对象,失败时可为 null。
data.listarray本次返回的数据。
data.totalinteger符合条件的总数量。
data.summarynull本接口不使用汇总字段。
data.page_tokennull本接口不使用游标分页。
data.list[].codestring功能权限编码,以实际返回为准。
data.list[].namestring功能权限名称。

成功响应示例

以下权限编码和名称使用占位值,接入时读取真实返回值。

{  "code": 0,  "msg": "success",  "data": {    "list": [      {        "code": "<PERMISSION_CODE>",        "name": "<PERMISSION_NAME>"      }    ],    "total": 1,    "summary": null,    "page_token": null  }}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
300001目标成员不存在、已删除或不属于当前团队。
500000请求处理失败。

错误响应示例:

{  "code": 300001,  "msg": "id does not identify an existing member in the current team",  "data": null}

14. 查询内部成员登录验证

读取内部成员当前邮箱验证、2FA 开关及触发条件。2FA 开启时会返回当前密钥,请按敏感信息处理。

请求地址

GET https://app.dicloak.com/gin/v1/api/request/member/{id}/login-verification

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。

路径参数

参数类型必填说明
idstring是当前团队的 INTERNAL 成员 ID;不支持 EXTERNAL、SUPER_ADMIN。

Query 参数:无。

请求体

无。

请求示例

curl --request GET 'https://app.dicloak.com/gin/v1/api/request/member/member_001/login-verification' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.check_emailboolean是否开启邮箱验证。
data.emailstring仅 check_email=true 时返回验证码接收邮箱。
data.check_2faboolean是否开启 2FA。
data.secret_2fastring仅 check_2fa=true 时返回;这是验证器密钥,不是动态验证码。
data.triggerobject当前验证触发配置。
data.trigger.modestringEVERY_LOGIN / DEVICE_OR_INTERVAL。
data.trigger.intervalinteger仅 DEVICE_OR_INTERVAL 返回;间隔 1~168。
data.trigger.unitstring仅 DEVICE_OR_INTERVAL 返回;HOUR / DAY。
data.trigger.logout_on_timeoutboolean仅 DEVICE_OR_INTERVAL 返回;达到间隔后是否自动退出。

响应头:Cache-Control: no-store。

成功响应示例:未开启验证

{  "code": 0,  "msg": "success",  "data": {    "check_email": false,    "check_2fa": false,    "trigger": {      "mode": "EVERY_LOGIN"    }  },  "next": null}

成功响应示例:邮箱验证与 2FA 均开启

{  "code": 0,  "msg": "success",  "data": {    "check_email": true,    "email": "alice.verify@example.com",    "check_2fa": true,    "secret_2fa": "<CURRENT_2FA_SECRET>",    "trigger": {      "mode": "DEVICE_OR_INTERVAL",      "interval": 7,      "unit": "DAY",      "logout_on_timeout": false    }  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
300001成员不存在、已删除或不属于当前团队。
300162EXTERNAL 不支持此登录验证接口。
300206不允许通过此接口访问超级管理员安全配置。
500000请求处理失败。

错误响应示例:

{  "code": 300162,  "msg": "id must identify an INTERNAL member; login verification is not editable for EXTERNAL members",  "data": null,  "next": null}

15. 修改内部成员登录验证

修改验证邮箱、邮箱验证开关、2FA 开关及触发条件。顶层未提交字段保持当前值;trigger 提交后作为完整对象替换。

请求地址

PATCH https://app.dicloak.com/gin/v1/api/request/member/{id}/login-verification

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。
Content-Typestring是固定为 application/json。

路径参数

参数类型必填说明
idstring是当前团队的 INTERNAL 成员 ID;不支持 EXTERNAL、SUPER_ADMIN。

Query 参数:无。

JSON Body 参数

至少提交 email、check_email、check_2fa、trigger 中的一项。空对象会被拒绝。

参数类型必填说明
check_emailboolean否省略保持;开启时须配置有效 email,不接受 null。
emailstring/null否验证码接收邮箱,不是登录账号;允许更新且无需验证码。邮箱验证开启时不能清空。
check_2faboolean否true 开启 2FA,false 关闭;省略保持,不接受 null。密钥通过响应 secret_2fa 获取,不允许在请求中提交。
triggerobject否省略保持当前值;提交时整体替换触发配置,不能为 null。
trigger.modestring提交 trigger 时必填EVERY_LOGIN:每次登录团队验证;DEVICE_OR_INTERVAL:换设备或达到时间间隔后验证。
trigger.intervalinteger间隔模式必填1~168。EVERY_LOGIN 不允许提交。
trigger.unitstring间隔模式必填HOUR / DAY。EVERY_LOGIN 不允许提交。
trigger.logout_on_timeoutboolean否间隔模式省略时为 false;true 表示到时自动退出。EVERY_LOGIN 不允许提交,不能为 null。

请求示例:开启邮箱验证

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/login-verification' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "check_email": true,  "email": "alice.verify@example.com",  "trigger": {    "mode": "EVERY_LOGIN"  }}'

请求示例:开启 2FA 并设置间隔验证

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/login-verification' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "check_2fa": true,  "trigger": {    "mode": "DEVICE_OR_INTERVAL",    "interval": 7,    "unit": "DAY",    "logout_on_timeout": false  }}'

请求示例:仅更新验证邮箱

仅修改验证码接收邮箱,check_email 和登录账号 account 不变。

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/login-verification' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "email": "new.verify@example.com"}'

请求示例:关闭邮箱验证并清空验证邮箱

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/login-verification' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "check_email": false,  "email": null}'

请求示例:关闭全部登录验证

curl --request PATCH 'https://app.dicloak.com/gin/v1/api/request/member/member_001/login-verification' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>' \  --header 'Content-Type: application/json' \  --data-raw '{  "check_email": false,  "check_2fa": false}'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.check_emailboolean是否开启邮箱验证。
data.emailstring仅 check_email=true 时返回验证码接收邮箱。
data.check_2faboolean是否开启 2FA。
data.secret_2fastring仅 check_2fa=true 时返回;这是验证器密钥,不是动态验证码。
data.triggerobject当前验证触发配置。
data.trigger.modestringEVERY_LOGIN / DEVICE_OR_INTERVAL。
data.trigger.intervalinteger仅 DEVICE_OR_INTERVAL 返回;间隔 1~168。
data.trigger.unitstring仅 DEVICE_OR_INTERVAL 返回;HOUR / DAY。
data.trigger.logout_on_timeoutboolean仅 DEVICE_OR_INTERVAL 返回;达到间隔后是否自动退出。

响应头:Cache-Control: no-store。返回更新后的完整登录验证配置。

成功响应示例:开启邮箱验证

假设请求前未启用 2FA,响应如下。

{  "code": 0,  "msg": "success",  "data": {    "check_email": true,    "email": "alice.verify@example.com",    "check_2fa": false,    "trigger": {      "mode": "EVERY_LOGIN"    }  },  "next": null}

成功响应示例:开启 2FA 并设置间隔验证

假设请求前已开启邮箱验证,响应如下。

{  "code": 0,  "msg": "success",  "data": {    "check_email": true,    "email": "alice.verify@example.com",    "check_2fa": true,    "secret_2fa": "<CURRENT_2FA_SECRET>",    "trigger": {      "mode": "DEVICE_OR_INTERVAL",      "interval": 7,      "unit": "DAY",      "logout_on_timeout": false    }  },  "next": null}

成功响应示例:关闭全部验证

假设原触发配置为每次登录验证,关闭开关后保留该配置。

{  "code": 0,  "msg": "success",  "data": {    "check_email": false,    "check_2fa": false,    "trigger": {      "mode": "EVERY_LOGIN"    }  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
400009空请求、不合法的 null、trigger 模式或间隔字段错误。
400017开启邮箱验证但邮箱无效。
300001成员不存在或不属于当前团队。
300162外部成员不支持登录验证管理。
300206不允许修改超级管理员。
300099请求暂时无法处理,请稍后重试。
500000请求处理失败。

错误响应示例:

{  "code": 400009,  "msg": "trigger.mode is required",  "data": null,  "next": null}

16. 生成并启用新的 2FA 密钥

每次成功调用均返回新的 2FA 密钥并立即启用,旧密钥失效,无需确认。

请求地址

POST https://app.dicloak.com/gin/v1/api/request/member/{id}/totp

请求头

参数类型必填说明
X-HTTP-KEYstring是当前团队的 HTTP API Key。

路径参数

参数类型必填说明
idstring是当前团队的 INTERNAL 成员 ID;不支持 EXTERNAL、SUPER_ADMIN。

Query 参数:无。

请求体

无。不提交旧密钥、新密钥或验证码。

请求示例

curl --request POST 'https://app.dicloak.com/gin/v1/api/request/member/member_001/totp' \  --header 'X-HTTP-KEY: <YOUR_TEAM_HTTP_API_KEY>'

响应参数

字段类型说明
codeinteger0 表示成功;非 0 表示业务失败。
msgstring结果说明。
dataobject/null成功时为业务对象,失败时可为 null。
nextnull本接口不使用此字段。
data.check_2faboolean成功时为 true,表示新密钥已经启用。
data.secret_2fastring新的 2FA 验证器密钥,立即生效。

响应头:Cache-Control: no-store。

成功响应示例

{  "code": 0,  "msg": "success",  "data": {    "check_2fa": true,    "secret_2fa": "<NEW_SERVER_GENERATED_2FA_SECRET>"  },  "next": null}

常见错误

code原因
400003X-HTTP-KEY 缺失或无效。
300001成员不存在或不属于当前团队。
300162外部成员不支持 2FA 管理。
300206不允许修改超级管理员。
400017已有启用的邮箱验证配置中邮箱无效。
400009无法生成新的 2FA 密钥。
300099请求暂时无法处理,请稍后重试。
500000请求处理失败。

错误响应示例:

{  "code": 300162,  "msg": "id must identify an INTERNAL member; login verification is not editable for EXTERNAL members",  "data": null,  "next": null}