MCP Python API 接口文档 - 平台体系
1. 账号
1.1 账号注册
python调用方法名: bmcp.account_register
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| mobile | string | 否 | 手机号码,手机和邮箱必填一个 |
| country_code | string | 否 | 手机区号,填写手机时需填手机区号,不填默认为86 |
| username | string | 是 | 用户名 |
| password | string | 否 | 密码,不填默认123456 |
| string | 否 | 电子邮箱,手机和邮箱必填一个 | |
| account | string | 否 | 账号,支持中文,不填系统将自动生成 |
| create_team | string | 否 | 是否创建团队,1:创建 0:不创建,不填时默认为 1 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| uid | int | 账号uid |
| account | string | 账号 |
| country_code | string | 手机区号 |
| mobile | string | 手机号码 |
| username | string | 用户名 |
| string | 邮箱 | |
| user_id | string | 用户id |
| corp_id | string | 当前用户的团队id |
入参和响应示例:
入参示例:
{
"username": "test001",
"email": "mlr_yl6_@tempmail.cn"
}
响应示例:
{
"corp_id": "9d064390a1116c5e41cb9de5",
"email": "mlr_yl6_@tempmail.cn",
"uid": 380752,
"user_id": "5a2a4494aad3ab1de2a11a8c",
"username": "test001"
}
Python插件开发代码示例:
import bmcp
def account_register(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["username"] = "test001"
params["email"] = "mlr_yl6_@tempmail.cn"
result = bmcp.account_register(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.2 加入某个团队
python调用方法名: bmcp.account_join_corp
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | string | 是 | 团队id |
| user_id | string | 是 | 用户id |
| departments | string | 是 | 要加入的部门id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | code非200时的错误详情 |
入参和响应示例:
入参示例:
{
"corp_id": "c505411111f8c5ef0c09d6c",
"user_id": "5a2a4494aad3ab1de2a11a8c",
"departments": [
"550606b07bcc60d41cd9b2de"
]
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def account_join_corp(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "c505411111f8c5ef0c09d6c"
params["user_id"] = "5a2a4494aad3ab1de2a11a8c"
params["departments"] = [
"550606b07bcc60d41cd9b2de"
]
result = bmcp.account_join_corp(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.3 加入某个团队的外部联系人
python调用方法名: bmcp.account_join_outsider
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | string | 是 | 团队id |
| user_id | string | 是 | 用户id |
| group_id | string | 是 | 外部联系人分组id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | code非200时的错误详情 |
入参和响应示例:
入参示例:
{
"corp_id": "test3333",
"user_id": "5a2a4494aad3ab1de2a11a8c",
"group_id": "f6edbdee1fe03a3ab5cab6a8"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def account_join_outsider(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "test3333"
params["user_id"] = "5a2a4494aad3ab1de2a11a8c"
params["group_id"] = "f6edbdee1fe03a3ab5cab6a8"
result = bmcp.account_join_outsider(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.4 账号绑定微信
python调用方法名: bmcp.account_bind_wx
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | string | 是 | 用户id |
| unionid | string | 是 | 微信unionid |
| openid | string | 是 | 微信openid |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| user_id | Number | 执行结果码,200代表成功,其他代表失败 |
| unionid | String | code非200时的错误详情 |
| openid | String | |
| uid | Number |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24",
"unionid": "oexmK1npXWxFV-Hp53j0EJeWGHYU",
"openid": "oSxT80k_H2bf4eX2n2rsGFiSRk5T"
}
响应示例:
{
"openid": "oSxT80k_H2bf4eX2n2rsGFiSRk5T",
"uid": 366256,
"unionid": "oexmK1npXWxFV-Hp53j0EJeWGHYU",
"user_id": "811247269405fd91a1da8e24"
}
Python插件开发代码示例:
import bmcp
def account_bind_wx(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd911da8e24"
params["unionid"] = "oexmK1npXWxF-Hp53j0EJeWGHYU"
params["openid"] = "oSxT80k_H2bf4eX2n2rsFiSRk5T"
result = bmcp.account_bind_wx(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.5 账号解绑微信
python调用方法名: bmcp.account_unbind_wx
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | string | 是 | 用户id |
| unionid | string | 是 | 微信unionid |
| openid | string | 是 | 微信openid |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"user_id": "81124726905fd91a1da8e24",
"unionid": "oexmK1npXW8FV-Hp53j0EJeWGHYU",
"openid": "oSxT80k_H2f4eX2n2rsGFi7SRk5T"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def account_unbind_wx(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "8112472869405d91a14da8e24"
params["unionid"] = "oexmK1npX9WxFV-H53j0EJeWGHYU"
params["openid"] = "oSxT890k_H2bf4eX2n2rGF6iSRk5T"
result = bmcp.account_unbind_wx(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.6 查询账号基本信息
python调用方法名: bmcp.account_info
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | string | 否 | 用户id,4个参数选其中一个参数即可 |
| account | string | 否 | 账户,4个参数选其中一个参数即可 |
| country_code | string | 否 | 手机区号,填写手机时需填手机区号,不填默认为86 |
| mobile | string | 否 | 手机号码,4个参数选其中一个参数即可 |
| string | 否 | 电子邮箱,4个参数选其中一个参数即可 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| user | Object | |
| user.uid | int | 用户uid |
| user.user_id | string | 用户id |
| user.account | string | 账号 |
| user.username | string | 用户名 |
| user.country_code | string | 手机区号 |
| user.mobile | string | 手机号 |
| user.email | string | 邮箱 |
| user.corp_id | string | 用户自己的团队id |
| user.corp_name | string | 用户自己的团队名称 |
| user.last_sel_corp_id | string | 用户最后登录所在团队id,没有登录过为空 |
| user.last_sel_corp_name | string | 用户最后登录所在团队名称,没有登录过为空 |
| user.corp | string array | 所属团队列表 |
| user.corp.corp_id | string | 团队id |
| user.corp.corp_name | string | 团队名称 |
| user.corp.owner | bool | 是否是用户自己的团队,true表示当前用户自己的团队,false表示当前用户加入的团队 |
| user.avatarurl | string | 头像链接 |
| user.status | string | 账号状态,0(禁用) 1(正常) 6(未激活) |
| user.mobilestatus | string | 手机验证状态 0(未验证) 1(已验证) |
| user.emailstatus | string | 邮箱验证状态 0(未验证) 1(已验证) |
| user.lastloginip | string | 最后登录ip |
| user.lastlogintime | string | 最后登录时间 |
| user.regip | string | 注册ip |
| user.regdate | string | 注册时间 |
| user.inviter | string | 邀请人的user_id |
入参和响应示例:
入参示例:
{
"user_id": "5a2a4494aad3ab1de2a11a8c"
}
响应示例:
{
"user": {
"uid": 380752,
"user_id": "5a2a4494aad3ab1de2a11a8c",
"account": "user_b98xi4432539",
"username": "test001",
"country_code": "86",
"mobile": "",
"email": "mlr_yl6_@tempmail.cn",
"corp_id": "9d064390ac926c5e41cb9de5",
"corp_name": "test001",
"last_sel_corp_id": "test3333",
"last_sel_corp_name": "通讯录重构一",
"corp": [
{
"corp_id": "9d064390ac926c5e41cb9de5",
"corp_name": "test001",
"owner": true
}
],
"avatarurl": "",
"status": "1",
"mobilestatus": "0",
"emailstatus": "1",
"lastloginip": "0",
"lastlogintime": "",
"regip": "",
"regdate": "2026-08-24 15:38:20",
"inviter": ""
}
}
Python插件开发代码示例:
import bmcp
def account_info(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "5a2a4494aad3ab1de2a11a8c"
result = bmcp.account_info(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.7 查询账号列表
python调用方法名: bmcp.account_list
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| uid | int | 否 | 上一次查询结果的最后一条数据的uid,默认为0 |
| limit | int | 否 | 查询的数据条数1-300,默认300 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| users | Object Array | |
| users.uid | int | 用户uid |
| users.user_id | string | 用户id |
| users.account | string | 账号 |
| users.username | string | 用户名 |
| users.country_code | string | 手机区号 |
| users.mobile | string | 手机号 |
| users.email | string | 邮箱 |
| users.corp_id | string | 用户自己的团队id |
| users.corp_name | string | 用户自己的团队名称 |
| users.last_sel_corp_id | string | 用户最后登录所在团队id,没有登录过为空 |
| users.last_sel_corp_name | string | 用户最后登录所在团队名称,没有登录过为空 |
| users.avatarurl | string | 头像链接 |
| users.status | string | 账号状态 |
| users.mobilestatus | string | 手机验证状态, 0(未验证) 1(已验证) |
| users.emailstatus | string | 邮箱验证状态, 0(未验证) 1(已验证) |
| users.lastloginip | string | 最后登录ip |
| users.lastlogintime | string | 最后登录时间 |
| users.regip | string | 注册ip |
| users.regdate | string | 注册时间 |
| users.inviter | string | 邀请人的user_id |
入参和响应示例:
入参示例:
{
"last_uid": 380000,
"limit": 5
}
响应示例:
{
"users": [
{
"uid": 380001,
"user_id": "1dc54df5bdc870033a2afecd",
"account": "user_fnivez582294",
"username": "库洛米224",
"country_code": "86",
"mobile": "15133334221",
"email": "",
"corp_id": "c5b34e91a46d7d175faf9225",
"corp_name": "库洛米224",
"last_sel_corp_id": "",
"last_sel_corp_name": "191创建团队测试",
"corp": null,
"avatarurl": "",
"status": "1",
"mobilestatus": "1",
"emailstatus": "0",
"lastloginip": "0",
"lastlogintime": "1970-01-01 08:00:00",
"regip": "175.0.225.180",
"regdate": "2026-07-01 16:15:27",
"inviter": ""
},
{
"uid": 380002,
"user_id": "9c4c42e7b004fb92d1d02229",
"account": "user_62afl5122053",
"username": "库洛米225",
"country_code": "86",
"mobile": "15133334222",
"email": "",
"corp_id": "73f54689bb214115ed857e34",
"corp_name": "库洛米225",
"last_sel_corp_id": "5ca7691a4e27f63319b3face",
"last_sel_corp_name": "191创建团队测试",
"corp": null,
"avatarurl": "",
"status": "1",
"mobilestatus": "1",
"emailstatus": "0",
"lastloginip": "0",
"lastlogintime": "1970-01-01 08:00:00",
"regip": "175.0.225.180",
"regdate": "2026-07-01 16:15:28",
"inviter": ""
},
{
"uid": 380003,
"user_id": "45d6416149f0aab4d614ee278",
"account": "user_vmt1ue053452",
"username": "库洛米226",
"country_code": "86",
"mobile": "15133334223",
"email": "",
"corp_id": "84654f3392a074c3133ed2e6",
"corp_name": "库洛米226",
"last_sel_corp_id": "5ca169ea4e27f6339b3face",
"last_sel_corp_name": "191创建团队测试",
"corp": null,
"avatarurl": "",
"status": "1",
"mobilestatus": "1",
"emailstatus": "0",
"lastloginip": "0",
"lastlogintime": "1970-01-01 08:00:00",
"regip": "175.0.225.180",
"regdate": "2026-07-01 16:15:28",
"inviter": ""
},
{
"uid": 380004,
"user_id": "5e734a328d4e300a2d938e90",
"account": "user_4o4gwt819808",
"username": "库洛米227",
"country_code": "86",
"mobile": "15133334224",
"email": "",
"corp_id": "28c847dd8aed8c323351df30",
"corp_name": "库洛米227",
"last_sel_corp_id": "5ca719ea4e3f6b719b3face",
"last_sel_corp_name": "191创建团队测试",
"corp": null,
"avatarurl": "",
"status": "1",
"mobilestatus": "1",
"emailstatus": "0",
"lastloginip": "0",
"lastlogintime": "1970-01-01 08:00:00",
"regip": "175.0.225.180",
"regdate": "2026-07-01 16:15:28",
"inviter": ""
},
{
"uid": 380005,
"user_id": "ee3f4c388f2ee1432f593d2",
"account": "user_ybea21053834",
"username": "库洛米228",
"country_code": "86",
"mobile": "15133334225",
"email": "",
"corp_id": "2cbf4a359efa3a93003fd4a1",
"corp_name": "库洛米228",
"last_sel_corp_id": "5ca769ea4e3336b719b3face",
"last_sel_corp_name": "191创建团队测试",
"corp": null,
"avatarurl": "",
"status": "1",
"mobilestatus": "1",
"emailstatus": "0",
"lastloginip": "0",
"lastlogintime": "1970-01-01 08:00:00",
"regip": "175.0.225.180",
"regdate": "2026-07-01 16:15:28",
"inviter": ""
}
]
}
Python插件开发代码示例:
import bmcp
def account_list(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["last_uid"] = 380000
params["limit"] = 5
result = bmcp.account_list(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.8 修改账号信息
python调用方法名: bmcp.account_edit
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | string | 是 | 用户id |
| password | string | 否 | 密码 |
| country_code | string | 否 | 手机区号 |
| mobile | string | 否 | 手机号码 |
| username | string | 否 | 用户名 |
| string | 否 | 电子邮箱 | |
| status | string | 否 | 账号状态,0(禁用) 1(正常) 6(未激活) |
| mobilestatus | string | 否 | 手机验证状态, 0(未验证) 1(已验证) |
| emailstatus | string | 否 | 邮箱验证状态, 0(未验证) 1(已验证) |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"user_id": "5a2a4494aad3ab1de2a11a8c",
"username": "test002",
"mobile": "19012345678",
"mobilestatus": "1",
"status": "1"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def account_edit(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "5a2a4494aad3ab1de2a11a8c"
params["username"] = "test002"
params["mobile"] = "19012345678"
params["mobilestatus"] = "1"
params["status"] = "1"
result = bmcp.account_edit(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.9 登录账号
python调用方法名: bmcp.account_login
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | string | 是 | 团队id |
| user_id | string | 是 | 用户id |
| url | string | 否 | 登录后跳转地址,不传则默认跳转到工作台 非必填 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| msg | string | 执行结果 |
| url | string | 登录url |
入参和响应示例:
入参示例:
{
"corp_id": "9d064390a1116c5e41cb9de5",
"user_id": "5a2a4494aad3ab1de2a11a8c"
}
响应示例:
{
"msg": "Login succeeded",
"url": "https://test.online-office.net/sso/loginjump?response=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJzc28uYXBhYXMiLCJjb3JwSWQiOiI5ZDA2NDM5MGFjOTI2YzVlNDFjYjlkZTUiLCJleHAiOjE3ODc2NDI1NjIsImlhdCI6MTc4NzY0MjUwMiwiaXNzIjoianVtcHVybCIsInR5cGUiOiJqdW1wX3JlcyIsInVpZCI6MzgwNzUyLCJ1cmwiOiIvIn0.FxmIyxaCyflDkqZUFF9F5cf5FJ5669Q0vplHF6_G9f8"
}
Python插件开发代码示例:
import bmcp
def account_login(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "9d064390a1116c5e41cb9de5"
params["user_id"] = "5a2a4494aad3ab1de2a11a8c"
result = bmcp.account_login(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.10 修改团队信息
python调用方法名: bmcp.account_corp_update
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | string | 是 | 团队id |
| corp_name | string | 是 | 团队名称 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| corp_id | string | 团队id |
| corp_name | string | 团队名称 |
入参和响应示例:
入参示例:
{
"corp_id": "9d064390a1116c5e41cb9de5",
"corp_name": "test003"
}
响应示例:
{
"corp_id": "9d064390a1116c5e41cb9de5",
"corp_name": "test003"
}
Python插件开发代码示例:
import bmcp
def account_corp_update(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "9d064390a1116c5e41cb9de5"
params["corp_name"] = "test003"
result = bmcp.account_corp_update(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
1.11 解散团队
python调用方法名: bmcp.account_dissolve_team
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| teamId | string | 是 | 需要解散的团队id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"teamId": "9d064390a1116c5e41cb9de5"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def account_dissolve_team(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["teamId"] = "9d064390a1116c5e41cb9de5"
result = bmcp.account_dissolve_team(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
2. 消息
1.1 发送邮件消息
python调用方法名: bmcp.message_email
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
| depts | string Array | 否 | 要发送的部门id,要发送的部门和成员不能全部为空 |
| users | string Array | 否 | 要发送的成员id,要发送的部门和成员不能全部为空 |
| message | Object | 是 | |
| message.title | String | 是 | 邮件标题 |
| message.content | String | 是 | 邮件内容 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"corp_id": "5593fa9494be5331b6215267",
"users": [
"310041bfb530d3c5eee20e4f"
],
"message": {
"title": "测试邮件",
"content": "内容001"
}
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def message_email(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "5593fa9494be5331b6215267"
params["users"] = [
"310041bfb530d3c5eee20e4f"
]
params["message"] = {
"title": "测试邮件",
"content": "内容001"
}
result = bmcp.message_email(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
2.2 发送微信消息
python调用方法名: bmcp.message_wechat
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
| depts | string Array | 否 | 要发送的部门id,要发送的部门和成员不能全部为空 |
| users | Array | 否 | 要发送的成员id,要发送的部门和成员不能全部为空 |
| message | Object | 是 | |
| message.template_id | String | 是 | 公众号推送提醒消息模板id |
| message.url | String | 否 | 跳转链接 |
| message.data | Object | 是 | 公众号推送提醒消息模板内容,具体参数请在公众号模板消息里根据对应消息模板id进行查看 |
| message.data.first | Object | 是 | |
| message.data.first.value | String | 是 | |
| message.data.first.color | String | 是 | |
| message.data.keyword1 | Object | 是 | |
| message.data.keyword1.value | String | 是 | |
| message.data.keyword1.color | String | 是 | |
| message.data.keyword2 | Object | 是 | |
| message.data.keyword2.value | String | 是 | |
| message.data.keyword2.color | String | 是 | |
| message.data.remark | Object | 是 | |
| message.data.remark.value | String | 是 | |
| message.data.remark.color | String | 是 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"corp_id": "test3333",
"users": [
"811247269405fd91a1da8e24"
],
"message": {
"template_id": "l9dtG5U1kvLFpqZqDQT-gyu4K2zIBWEHcXXfHO8RT7V",
"data": {
"first": {
"value": "恭喜你收到了!",
"color": "#173177"
},
"keyword1": {
"value": "测试人员",
"color": "#173177"
},
"keyword2": {
"value": "2026-08-26 11:00:00",
"color": "#173177"
},
"remark": {
"value": "欢迎!",
"color": "#173177"
}
}
}
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def message_wechat(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "c505411111f8c5ef0c09d6c"
params["users"] = [
"811247269405fd91a1da8e24"
]
params["message"] = {
"template_id": "l9dtG5U1kvLFpqZqDQT-gyu4K2zIBWEHcXXfHO8RT7V",
"data": {
"first": {
"value": "恭喜你收到了!",
"color": "#173177"
},
"keyword1": {
"value": "测试人员",
"color": "#173177"
},
"keyword2": {
"value": "2026-08-26 11:00:00",
"color": "#173177"
},
"remark": {
"value": "欢迎!",
"color": "#173177"
}
}
}
result = bmcp.message_wechat(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
2.3 发送钉钉消息
python调用方法名: bmcp.message_dingding
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
| depts | string Array | 否 | 要发送的部门id,要发送的部门和成员不能全部为空 |
| users | Array | 否 | 要发送的成员id,要发送的部门和成员不能全部为空 |
| message | Object | 是 | |
| message.title | String | 是 | 标题 |
| message.content | String | 是 | 内容 |
| message.url | String | 否 | 跳转链接 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"corp_id": "5f18e7408955d56e8f3451c2",
"users": [
"801947418e989206adb92e0a"
],
"message": {
"title": "test",
"content": "test001",
"url": ""
}
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def message_dingding(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "5f18e7408955d56e8f3451c2"
params["users"] = [
"801947418e989206adb92e0a"
]
params["message"] = {
"title": "test",
"content": "test001",
"url": ""
}
result = bmcp.message_dingding(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
2.4 发送飞书消息
python调用方法名: bmcp.message_feishu
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
| depts | string Array | 否 | 要发送的部门id,要发送的部门和成员不能全部为空 |
| users | string Array | 否 | 要发送的成员id,要发送的部门和成员不能全部为空 |
| message | Object | 是 | |
| message.title | String | 是 | 标题 |
| message.content | String | 是 | 内容 |
| message.url | String | 是 | 跳转链接 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"corp_id": "5deb33642f661c6a557593bb",
"users": [
"132d4f22834a2390567786d0"
],
"message": {
"title": "test",
"content": "test001",
"url": ""
}
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def message_feishu(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "5deb33642f661c6a557593bb"
params["users"] = [
"132d4f22834a2390567786d0"
]
params["message"] = {
"title": "test",
"content": "test001",
"url": ""
}
result = bmcp.message_feishu(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
2.5 发送企业微信消息
python调用方法名: bmcp.message_qywx
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
| depts | string Array | 否 | 要发送的部门id,要发送的部门和成员不能全部为空 |
| users | string Array | 否 | 要发送的成员id,要发送的部门和成员不能全部为空 |
| message | Object | 是 | |
| message.title | String | 是 | 标题 |
| message.content | String | 是 | 内容 |
| message.url | String | 是 | 跳转链接 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"corp_id": "5deb33642f661c6a557593bb",
"users": [
"132d4f22834a2390567786d0"
],
"message": {
"title": "test",
"content": "test001",
"url": ""
}
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def message_qywx(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "5deb33642f661c6a557593bb"
params["users"] = [
"132d4f22834a2390567786d0"
]
params["message"] = {
"title": "test",
"content": "test001",
"url": ""
}
result = bmcp.message_qywx(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
3. 应用管理
3.1 创建应用分组
python调用方法名: bmcp.appgroup_create
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | string | 是 | 团队id |
| group_name | string | 是 | 分组名称 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| group_id | string | 团队id |
| group_name | string | 分组名称 |
入参和响应示例:
入参示例:
{
"corp_id": "c505411111f8c5ef0c09d6c",
"group_name": "test01"
}
响应示例:
{
"group_id": "c04e4d71a950f3e71b663aef",
"group_name": "test01"
}
Python插件开发代码示例:
import bmcp
def appgroup_create(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "c505411111f8c5ef0c09d6c"
params["group_name"] = "test01"
result = bmcp.appgroup_create(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
3.2 查询应用分组列表
python调用方法名: bmcp.appgroup_list
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| Object Array | ||
| group_id | String | 分组id |
| group_name | String | 分组名称 |
| appcount | Number | 分组应用数量 |
入参和响应示例:
入参示例:
{
"corp_id": "c505411111f8c5ef0c09d6c"
}
响应示例:
[
{
"appcount": 1,
"group_id": "default",
"group_name": "默认分组"
},
{
"appcount": 1,
"group_id": "c04e4d71a950f3e71b663aef",
"group_name": "test01"
}
]
Python插件开发代码示例:
import bmcp
def appgroup_list(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "c505411111f8c5ef0c09d6c"
result = bmcp.appgroup_list(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
3.3 应用分组重命名
python调用方法名: bmcp.appgroup_rename
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | string | 是 | 团队id |
| group_id | string | 是 | 分组id |
| group_name | string | 是 | 分组名称 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"corp_id": "c505411111f8c5ef0c09d6c",
"group_id": "c04e4d71a950f3e71b663aef",
"group_name": "test0101"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def appgroup_rename(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "c505411111f8c5ef0c09d6c"
params["group_id"] = "c04e4d71a950f3e71b663aef"
params["group_name"] = "test0101"
result = bmcp.appgroup_rename(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
3.4 应用分组删除
python调用方法名: bmcp.appgroup_delete
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | string | 是 | 团队id |
| group_id | string | 是 | 分组id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"corp_id": "5deb33642f661c6a557593bb",
"group_id": "c163409dbf25bb4379fead63"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def appgroup_delete(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "5deb33642f661c6a557593bb"
params["group_id"] = "c163409dbf25bb4379fead63"
result = bmcp.appgroup_delete(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
3.5 获取应用列表
python调用方法名: bmcp.appgroup_list_app
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | string | 是 | 团队id |
| group_id | string | 是 | 分组id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| Object Array | ||
| appId | String | 应用id |
| appName | String | 应用名称 |
| group_id | String | 应用分组id |
入参和响应示例:
入参示例:
{
"corp_id": "5deb33642f661c6a557593bb",
"group_id": "c163409dbf25bb4379fead63"
}
响应示例:
[
{
"appId": "5bbae4167b0171aca6999732",
"appName": "财务资产",
"group_id": "c163409dbf25bb4379fead63"
},
{
"appId": "5ef0f7d74fe63f0803cd10aa",
"appName": "通讯录数据",
"group_id": "c163409dbf25bb4379fead63"
},
{
"appId": "52b64298390f3f180f0c7cff",
"appName": "空白应用",
"group_id": "c163409dbf25bb4379fead63"
},
{
"appId": "07ba4351b789d08366425a65",
"appName": "人力行政管理",
"group_id": "c163409dbf25bb4379fead63"
}
]
Python插件开发代码示例:
import bmcp
def appgroup_list_app(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "5deb33642f661c6a557593bb"
params["group_id"] = "c163409dbf25bb4379fead63"
result = bmcp.appgroup_list_app(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
3.6 应用信息修改
python调用方法名: bmcp.app_update
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| appId | string | 是 | 应用id |
| name | string | 是 | 应用名称 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"appId": "25a94c188d2bd49e57fa90df",
"name": "应用t02"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def app_update(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["appId"] = "25a94c188d2bd49e57fa90df"
params["name"] = "应用t02"
result = bmcp.app_update(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
3.7 删除应用
python调用方法名: bmcp.app_delete
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| appId | string | 是 | 应用id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"appId": "25a94c188d2bd49e57fa90df"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def app_delete(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["appId"] = "25a94c188d2bd49e57fa90df"
result = bmcp.app_delete(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
4. 密钥管理
4.1 创建秘钥
python调用方法名: bmcp.webapikey_create
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| keyid | String | 密钥id |
| key | String | 密钥 |
| name | String | 密钥名称 |
| type | String | 密钥类型,0表示全部接口,创建接口只能创建全部接口类型密钥 |
入参和响应示例:
入参示例:
{
"corp_id": "c505411111f8c5ef0c09d6c"
}
响应示例:
{
"key": "xd7dsN9r7CZTJJphMeIZE2UhWfmKRDPm",
"keyid": "163",
"name": "New Key",
"type": "0"
}
Python插件开发代码示例:
import bmcp
def webapikey_create(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "c505411111f8c5ef0c09d6c"
result = bmcp.webapikey_create(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
4.2 查询密钥
python调用方法名: bmcp.webapikey_list
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| Object Array | ||
| keyid | String | 密钥id |
| key | String | 密钥 |
| name | String | 密钥名称 |
| type | String | 密钥类型,0表示全部接口,创建接口只能创建全部接口类型密钥 |
入参和响应示例:
入参示例:
{
"corp_id": "c505411111f8c5ef0c09d6c"
}
响应示例:
[
{
"key": "xd7dsN9r7CZTJJphMeIZE2UhWfmKRDPm",
"keyid": "163",
"name": "New Key",
"type": "0"
}
]
Python插件开发代码示例:
import bmcp
def webapikey_list(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corp_id"] = "c505411111f8c5ef0c09d6c"
result = bmcp.webapikey_list(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
4.3 删除密钥
python调用方法名: bmcp.webapikey_delete
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corp_id | String | 是 | 团队id |
| keyid | String | 是 | 密钥id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"keyid": "163",
"corp_id": "5593fa9494be5331b6215267"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def webapikey_delete(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["keyid"] = "163"
params["corp_id"] = "5593fa9494be5331b6215267"
result = bmcp.webapikey_delete(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
5. 性能配置
5.1 查询用户基础配置信息
python调用方法名: bmcp.property_base
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | String | 是 | 用户id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| member_count | int | 成员数量上限(个) |
| dataview_num | int | 数据视图(个) |
| total_data_count | int | 所有表单数据量上限(条) |
| upload_total_trafficl_size | int | 上传总流量(B/年) |
| auto_clean_recycle_data_days | int | 回收站时间(天) |
| import_excel_size | int | 导入单个Excel文件大小(B) |
| upload_single_file_size | int | 单个上传附件大小(B) |
| schedule_num | int | 计划任务(个) |
| module_num | int | 多模块(个) |
| sms_num | int | 短信条数 |
| voice_num | int | 语音条数 |
| diy_theme | int | 是否能外链去logo,1为是,0为否 |
| export_has_pic | int | 导出数据能否带图片,1为是,0为否 |
| batch_import_member | int | 是否能批量导入成员,1为是,0为否 |
| batch_import_file | int | 是否能批量导出附件,1为是,0为否 |
| aggregate_table_count | int | 聚合表(个) |
| cloudapp_installnum | int | 应用数量(个) |
| datahelper_num | int | 数据助手配置数 |
| formevent_num | int | 前端事件配置数 |
| haswebapi | int | 是否有webapi权限,1为是,0为否 |
| open_api | int | 是否有openapi权限,1为是,0为否 |
| site_webapi | int | 是否有平台级接口权限,1为是,0为否 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24"
}
响应示例:
{
"aggregate_table_count": 1,
"ai_switch": 0,
"auto_clean_recycle_data_days": 1,
"batch_import_file": 0,
"batch_import_member": 1,
"cloudapp_installnum": 20,
"datahelper_num": 1,
"dataview_num": 1,
"diy_theme": 0,
"export_has_pic": 0,
"formevent_num": 1,
"haswebapi": 0,
"import_excel_size": 2097152,
"member_count": 10,
"module_num": 1,
"open_api": 0,
"schedule_num": 1,
"site_webapi": 0,
"sms_num": 0,
"total_data_count": 100,
"upload_single_file_size": 8388608,
"upload_total_trafficl_size": 6442450944,
"voice_num": 0
}
Python插件开发代码示例:
import bmcp
def property_base(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
result = bmcp.property_base(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
5.2 查询用户汇总配置信息
python调用方法名: bmcp.property_total
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | String | 是 | 团队id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| member_count | int | 成员数量上限(个) |
| dataview_num | int | 数据视图(个) |
| total_data_count | int | 所有表单数据量上限(条) |
| upload_total_trafficl_size | int | 上传总流量(B/年) |
| auto_clean_recycle_data_days | int | 回收站时间(天) |
| import_excel_size | int | 导入单个Excel文件大小(B) |
| upload_single_file_size | int | 单个上传附件大小(B) |
| schedule_num | int | 计划任务(个) |
| module_num | int | 多模块(个) |
| sms_num | int | 短信条数 |
| voice_num | int | 语音条数 |
| diy_theme | int | 是否能外链去logo,1为是,0为否 |
| export_has_pic | int | 导出数据能否带图片,1为是,0为否 |
| batch_import_member | int | 是否能批量导入成员,1为是,0为否 |
| batch_import_file | int | 是否能批量导出附件,1为是,0为否 |
| aggregate_table_count | int | 聚合表(个) |
| cloudapp_installnum | int | 应用数量(个) |
| datahelper_num | int | 数据助手配置数 |
| formevent_num | int | 前端事件配置数 |
| haswebapi | int | 是否有webapi权限,1为是,0为否 |
| open_api | int | 是否有openapi权限,1为是,0为否 |
| site_webapi | int | 是否有平台级接口权限,1为是,0为否 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24"
}
响应示例:
{
"aggregate_table_count": 101,
"auto_clean_recycle_data_days": 100,
"batch_import_file": 1,
"batch_import_member": 1,
"cloudapp_installnum": 50,
"datahelper_num": 6,
"dataview_num": 101,
"diy_theme": 1,
"export_has_pic": 1,
"formevent_num": 6,
"haswebapi": 1,
"import_excel_size": 10485760,
"member_count": 1110,
"module_num": 6,
"open_api": 1,
"schedule_num": 11,
"site_webapi": 1,
"sms_num": 10000,
"total_data_count": 1000100,
"upload_single_file_size": 209715200,
"upload_total_trafficl_size": 113816633344,
"voice_num": 10000
}
Python插件开发代码示例:
import bmcp
def property_total(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
result = bmcp.property_total(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
5.3 修改用户基础配置信息
python调用方法名: bmcp.property_update
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | String | 是 | 用户id |
| property | Object | 否 | |
| property.member_count | int | 否 | 成员数量上限(个) |
| property.dataview_num | int | 否 | 数据视图(个) |
| property.total_data_count | int | 否 | 所有表单数据量上限(条) |
| property.upload_total_trafficl_size | int | 否 | 上传总流量(B/年) |
| property.auto_clean_recycle_data_days | int | 否 | 回收站时间(天) |
| property.import_excel_size | int | 否 | 导入单个Excel文件大小(B) |
| property.upload_single_file_size | int | 否 | 单个上传附件大小(B) |
| property.schedule_num | int | 否 | 计划任务(个) |
| property.module_num | int | 否 | 多模块(个) |
| property.sms_num | int | 否 | 短信条数 |
| property.voice_num | int | 否 | 语音条数 |
| property.diy_theme | int | 否 | 是否能外链去logo,1为是,0为否 |
| property.export_has_pic | int | 否 | 导出数据能否带图片,1为是,0为否 |
| property.batch_import_member | int | 否 | 是否能批量导入成员,1为是,0为否 |
| property.batch_import_file | int | 否 | 是否能批量导出附件,1为是,0为否 |
| property.aggregate_table_count | int | 否 | 聚合表(个) |
| property.cloudapp_installnum | int | 否 | 应用数量(个) |
| property.datahelper_num | int | 否 | 数据助手配置数 |
| property.formevent_num | int | 否 | 前端事件配置数 |
| property.haswebapi | int | 否 | 是否有webapi权限,1为是,0为否 |
| property.open_api | int | 否 | 是否有openapi权限,1为是,0为否 |
| property.site_webapi | int | 否 | 是否有平台级接口权限,1为是,0为 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| member_count | int | 成员数量上限(个) |
| dataview_num | int | 数据视图(个) |
| total_data_count | int | 所有表单数据量上限(条) |
| upload_total_trafficl_size | int | 上传总流量(B/年) |
| auto_clean_recycle_data_days | int | 回收站时间(天) |
| import_excel_size | int | 导入单个Excel文件大小(B) |
| upload_single_file_size | int | 单个上传附件大小(B) |
| schedule_num | int | 计划任务(个) |
| module_num | int | 多模块(个) |
| sms_num | int | 短信条数 |
| voice_num | int | 语音条数 |
| diy_theme | int | 是否能外链去logo,1为是,0为否 |
| export_has_pic | int | 导出数据能否带图片,1为是,0为否 |
| batch_import_member | int | 是否能批量导入成员,1为是,0为否 |
| batch_import_file | int | 是否能批量导出附件,1为是,0为否 |
| aggregate_table_count | int | 聚合表(个) |
| cloudapp_installnum | int | 应用数量(个) |
| datahelper_num | int | 数据助手配置数 |
| formevent_num | int | 前端事件配置数 |
| haswebapi | int | 是否有webapi权限,1为是,0为否 |
| open_api | int | 是否有openapi权限,1为是,0为否 |
| site_webapi | int | 是否有平台级接口权限,1为是,0为否 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24",
"property": {
"member_count": 300,
"dataview_num": 1,
"total_data_count": 1020001,
"upload_total_trafficl_size": 6442450945,
"auto_clean_recycle_data_days": 15,
"import_excel_size": 10485760,
"upload_single_file_size": 8388608,
"schedule_num": 1,
"module_num": 1,
"sms_num": 0,
"voice_num": 0,
"diy_theme": 0,
"export_has_pic": 0,
"batch_import_member": 0,
"batch_import_file": 1,
"aggregate_table_count": 2000,
"cloudapp_installnum": 200,
"datahelper_num": 1,
"formevent_num": 1,
"haswebapi": 1,
"open_api": 0,
"site_webapi": 1
}
}
响应示例:
{
"member_count": 300,
"dataview_num": 1,
"total_data_count": 1020001,
"upload_total_trafficl_size": 6442450945,
"auto_clean_recycle_data_days": 15,
"import_excel_size": 10485760,
"upload_single_file_size": 8388608,
"schedule_num": 1,
"module_num": 1,
"sms_num": 0,
"voice_num": 0,
"diy_theme": 0,
"export_has_pic": 0,
"batch_import_member": 0,
"batch_import_file": 1,
"aggregate_table_count": 2000,
"cloudapp_installnum": 200,
"datahelper_num": 1,
"formevent_num": 1,
"haswebapi": 1,
"open_api": 0,
"site_webapi": 1
}
Python插件开发代码示例:
import bmcp
def property_update(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
params["property"] = {
"member_count": 300,
"dataview_num": 1,
"total_data_count": 1020001,
"upload_total_trafficl_size": 6442450945,
"auto_clean_recycle_data_days": 15,
"import_excel_size": 10485760,
"upload_single_file_size": 8388608,
"schedule_num": 1,
"module_num": 1,
"sms_num": 0,
"voice_num": 0,
"diy_theme": 0,
"export_has_pic": 0,
"batch_import_member": 0,
"batch_import_file": 1,
"aggregate_table_count": 2000,
"cloudapp_installnum": 200,
"datahelper_num": 1,
"formevent_num": 1,
"haswebapi": 1,
"open_api": 0,
"site_webapi": 1
}
result = bmcp.property_update(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
5.4 为用户赠送指定配置
python调用方法名: bmcp.property_give
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | string | 是 | 用户id |
| giveday | int | 是 | 赠送天数 |
| property | Object | 否 | |
| property.member_count | int | 否 | 成员数量上限(个) |
| property.dataview_num | int | 否 | 数据视图(个) |
| property.total_data_count | int | 否 | 所有表单数据量上限(条) |
| property.upload_total_trafficl_size | int | 否 | 上传总流量(B/年) |
| property.auto_clean_recycle_data_days | int | 否 | 回收站时间(天) |
| property.import_excel_size | int | 否 | 导入单个Excel文件大小(B) |
| property.upload_single_file_size | int | 否 | 单个上传附件大小(B) |
| property.schedule_num | int | 否 | 计划任务(个) |
| property.module_num | int | 否 | 多模块(个) |
| property.sms_num | int | 否 | 短信条数 |
| property.voice_num | int | 否 | 语音条数 |
| property.diy_theme | int | 否 | 是否赠送外链去logo,1为是,0为否 |
| property.export_has_pic | int | 否 | 是否赠送导出数据能带图片,1为是,0为否 |
| property.batch_import_member | int | 否 | 是否赠送批量导入成员,1为是,0为否 |
| property.batch_import_file | int | 否 | 是否赠送批量导出附件,1为是,0为否 |
| property.aggregate_table_count | int | 否 | 聚合表(个) |
| property.cloudapp_installnum | int | 否 | 应用数量(个) |
| property.datahelper_num | int | 否 | 数据助手配置数 |
| property.formevent_num | int | 否 | 前端事件配置数 |
| property.haswebapi | int | 否 | 是否赠送webapi权限,1为是,0为否 |
| property.open_api | int | 否 | 是否赠送openapi权限,1为是,0为否 |
| property.site_webapi | int | 否 | 是否赠送平台级接口权限,1为是,0为 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24",
"giveday": 100,
"property": {
"member_count": 500,
"dataview_num": 1,
"total_data_count": 20000,
"upload_total_trafficl_size": 6442450944,
"auto_clean_recycle_data_days": 15,
"import_excel_size": 10485760,
"upload_single_file_size": 8388608,
"schedule_num": 1,
"module_num": 1,
"sms_num": 1,
"voice_num": 1,
"diy_theme": 1,
"export_has_pic": 1,
"batch_import_member": 1,
"batch_import_file": 1,
"aggregate_table_count": 2001,
"cloudapp_installnum": 201,
"datahelper_num": 1,
"formevent_num": 1,
"haswebapi": 0,
"open_api": 1,
"site_webapi": 1
}
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def property_give(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
params["giveday"] = 100
params["property"] = {
"member_count": 500,
"dataview_num": 1,
"total_data_count": 20000,
"upload_total_trafficl_size": 6442450944,
"auto_clean_recycle_data_days": 15,
"import_excel_size": 10485760,
"upload_single_file_size": 8388608,
"schedule_num": 1,
"module_num": 1,
"sms_num": 1,
"voice_num": 1,
"diy_theme": 1,
"export_has_pic": 1,
"batch_import_member": 1,
"batch_import_file": 1,
"aggregate_table_count": 2001,
"cloudapp_installnum": 201,
"datahelper_num": 1,
"formevent_num": 1,
"haswebapi": 0,
"open_api": 1,
"site_webapi": 1
}
result = bmcp.property_give(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
5.5 查询配置赠送列表
python调用方法名: bmcp.property_give_list
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | string | 是 | 用户id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| Object Array | ||
| user_id | String | 用户id |
| member_count | Number | 成员数量上限(个) |
| dataview_num | Number | 数据视图(个) |
| total_data_count | Number | 所有表单数据量上限(条) |
| upload_total_trafficl_size | Number | 上传总流量(B/年) |
| auto_clean_recycle_data_days | Number | 回收站时间(天) |
| import_excel_size | Number | 导入单个Excel文件大小(B) |
| upload_single_file_size | Number | 单个上传附件大小(B) |
| schedule_num | Number | 计划任务(个) |
| module_num | Number | 多模块(个) |
| sms_num | Number | 短信条数 |
| voice_num | Number | 语音条数 |
| diy_theme | Number | 是否赠送外链去logo,1为是,0为否 |
| export_has_pic | Number | 是否赠送导出数据能带图片,1为是,0为否 |
| batch_import_member | Number | 是否赠送批量导入成员,1为是,0为否 |
| batch_import_file | Number | 是否赠送批量导出附件,1为是,0为否 |
| aggregate_table_count | Number | 聚合表(个) |
| cloudapp_installnum | Number | 应用数量(个) |
| datahelper_num | Number | 数据助手配置数 |
| formevent_num | Number | 前端事件配置数 |
| haswebapi | Number | 是否赠送webapi权限,1为是,0为否 |
| open_api | Number | 是否赠送openapi权限,1为是,0为否 |
| site_webapi | Number | 是否赠送平台级接口权限,1为是,0为 |
| givetype | Number | 赠送类型,1(注册/套餐赠送)2(手动赠送) |
| give_time | DateTime | 赠送时间 |
| expire_time | DateTime | 赠送到期时间 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24"
}
响应示例:
[
{
"aggregate_table_count": 2001,
"auto_clean_recycle_data_days": 15,
"batch_import_file": 1,
"batch_import_member": 1,
"cloudapp_installnum": 201,
"datahelper_num": 1,
"dataview_num": 1,
"diy_theme": 1,
"expire_time": "1970-01-01 08:00:00",
"export_has_pic": 1,
"formevent_num": 1,
"give_time": "1970-01-01 08:00:00",
"givetype": 2,
"haswebapi": 0,
"import_excel_size": 10485760,
"member_count": 500,
"module_num": 1,
"open_api": 1,
"schedule_num": 1,
"site_webapi": 1,
"sms_num": 1,
"total_data_count": 20000,
"upload_single_file_size": 8388608,
"upload_total_trafficl_size": 6442450944,
"user_id": "811247269405fd91a1da8e24",
"voice_num": 1
}
]
Python插件开发代码示例:
import bmcp
def property_give_list(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
result = bmcp.property_give_list(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
5.6 查询配置消耗
python调用方法名: bmcp.property_use
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | string | 是 | 用户id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| member_amount | Number | 成员数量 (个) |
| total_data_amount | Number | 所有表单数据 量 |
| total_attachfile_size | Number | 上传总流量(B/年) |
| aggregate_table_amount | Number | 聚合表(个) |
| dataview_num | Number | 数据视图(个) |
| sms_num | Number | 短信条数 |
| voice_num | Number | 语音条数 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24"
}
响应示例:
{
"member_amount": 11,
"total_data_amount": 443905,
"total_attachfile_size": 118341877,
"aggregate_table_amount": 3,
"dataview_num": 6,
"sms_num": 0,
"voice_num": 0
}
Python插件开发代码示例:
import bmcp
def property_use(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
result = bmcp.property_use(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
5.7 查询已购买套餐列表
python调用方法名: *bmcp.property_order_info
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | string | 是 | 用户id |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| Object Array | ||
| key | String | 套餐key |
| name | String | 套餐名称 |
| description | String | 套餐描述 |
| type | String | 套餐类型 |
| expire_time | Date | 到期时间 |
| expire | Boolean | 是否到期 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24"
}
响应示例:
[
{
"description": "开放api,表单,通讯录的webhook",
"expire": false,
"expire_time": "",
"key": "4",
"name": "开放平台",
"type": "custom"
}
]
Python插件开发代码示例:
import bmcp
def property_order_info(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
result = bmcp.property_order_info(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
6. 配置
6.1 查询模板应用总数
python调用方法名: bmcp.config_tpl_count
入参结构:
无
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| count | int | 数量 |
入参和响应示例:
入参示例:
{}
响应示例:
{
"count": 51
}
Python插件开发代码示例:
import bmcp
def config_tpl_count(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
result = bmcp.config_tpl_count(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
6.2 查询模板应用列表
python调用方法名: bmcp.config_tpl_list
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| limit | int | 否 | 查询的条数,1~300,默认300 |
| skip | int | 否 | 翻页起始值索引,默认0 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| Object Array | ||
| tpl_id | Number | 模板id |
| cate_id | Number | 二级分类id |
| cate_name | String | 二级分类名称 |
| top_cate_id | Number | 顶级分类id |
| top_cate_name | String | 顶级分类名称 |
| title | String | 模板应用名称 |
| url | String | 应用体验url |
| desc | String | 模板应用描述 |
| sort | Number | 排序 |
| install_num | Number | 安装次数 |
| reg_install | Number | 是否注册安装,1为是,0为否 |
入参和响应示例:
入参示例:
{
"limit": 2,
"skip": 0
}
响应示例:
[
{
"cate_id": 56,
"cate_name": "核酸检测",
"desc": "该应用有效管理推动新冠疫苗接种,建立全人群免疫屏障。",
"install_num": 2603,
"reg_install": 0,
"sort": 99,
"title": "新冠疫苗接种管理",
"top_cate_id": 1,
"top_cate_name": "疫情防控解决方案",
"tpl_id": 1,
"url": "https://demo.online-office.net/insidesso/sso.php?develop=user_cbczhc96620&member=GongNengTiYan&appid=510d17a399c6bebc16afb5dd"
},
{
"cate_id": 56,
"cate_name": "核酸检测",
"desc": "针对疫情防控设计的综合管理系统,一站式设计,疫情防控更高效。",
"install_num": 1857,
"reg_install": 0,
"sort": 98,
"title": "疫情防控综合管理",
"top_cate_id": 1,
"top_cate_name": "疫情防控解决方案",
"tpl_id": 2,
"url": "https://demo.online-office.net/insidesso/sso.php?develop=user_cbczhc96620&member=GongNengTiYan&appid=50b4620bc644f9fd854e91fb"
}
]
Python插件开发代码示例:
import bmcp
def config_tpl_list(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["limit"] = 2
params["skip"] = 0
result = bmcp.config_tpl_list(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
6.3 安装模板应用
python调用方法名: bmcp.config_tpl_install
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| user_id | int | 是 | 用户id |
| tpl_id | int | 是 | 模板应用id |
| app_name | string | 否 | 模板应用安装后的名称 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24",
"tpl_id": 238,
"app_name": "测试模版应用安装1"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def config_tpl_install(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
params["tpl_id"] = 238
params["app_name"] = "测试模版应用安装1"
result = bmcp.config_tpl_install(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
6.4 查询站点公告
python调用方法名: bmcp.config_notice_info
入参结构:
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| title | string | 公告标题 |
| content | string | 公告内容 |
| link | string | 公告跳转链接 |
| begintime | string | 开始时间 |
| endtime | string | 结束时间 |
| interval | int | 弹出间隔,关闭后再次弹出间隔 单位 小时 写0表示关闭后永不弹出 |
| cookie_str | string | cookie标识,修改后会重新弹出 用于弹出新公告或者马上刷新公告 |
| open | bool | 是否开启公告 |
入参和响应示例:
入参示例:
{}
响应示例:
{
"begintime": "2025-03-06 20:30:00",
"content": "平台于今天2025年3月6日晚上24点进行服务器维护,时长30分钟。请大家提前做好准备,给您造成的不便敬请谅解,感谢您对平台的支持,祝您工作愉快!",
"cookie_str": "etycd6j0306",
"endtime": "2025-03-06 21:00:00",
"interval": 0,
"link": "https://pub.testyun.com/closesitetip.php",
"open": true,
"title": "平台维护通知"
}
Python插件开发代码示例:
import bmcp
def config_notice_info(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
result = bmcp.config_notice_info(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
6.5 修改站点公告
python调用方法名: bmcp.config_notice_setting
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| title | string | 否 | 公告标题 |
| content | string | 否 | 公告内容 |
| link | string | 否 | 公告跳转链接 |
| begintime | string | 否 | 开始时间 |
| endtime | string | 否 | 结束时间 |
| interval | int | 否 | 弹出间隔,关闭后再次弹出间隔 单位 小时 写0表示关闭后永不弹出 |
| cookie_str | string | 否 | cookie标识,修改后会重新弹出 用于弹出新公告或者马上刷新公告 |
| open | bool | 否 | 是否开启公告 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"begintime": "2026-03-06 20:30:00",
"content": "平台于今天2025年3月6日晚上24点进行服务器维护,时长30分钟。请大家提前做好准备,给您造成的不便敬请谅解,感谢您对平台的支持,祝您工作愉快!",
"cookie_str": "etycd6j0306",
"endtime": "2026-03-06 21:00:00",
"interval": 0,
"link": "https://pub.testyun.com/closesitetip.php",
"open": true,
"title": "平台维护通知"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def config_notice_setting(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["begintime"] = "2026-03-06 20:30:00"
params["content"] = "平台于今天2025年3月6日晚上24点进行服务器维护,时长30分钟。请大家提前做好准备,给您造成的不便敬请谅解,感谢您对平台的支持,祝您工作愉快!"
params["cookie_str"] = "etycd6j0306"
params["endtime"] = "2026-03-06 21:00:00"
params["interval"] = 0
params["link"] = "https://pub.testyun.com/closesitetip.php"
params["open"] = True
params["title"] = "平台维护通知"
result = bmcp.config_notice_setting(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
6.6 查询微信access_token
python调用方法名: bmcp.config_wx_access_token
入参结构:
无
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| expire_time | String | 过期时间 |
| access_token | String | access_token |
入参和响应示例:
入参示例:
{}
响应示例:
{
"expire_time": "1657184142",
"access_token": "8_YweIMLXrVAcdZPKvMB6CyYcp_gVt2OuTxNbYyy4kfEs5U3iYr7hVb6uCYi5b"
}
Python插件开发代码示例:
import bmcp
def config_wx_access_token(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
result = bmcp.config_wx_access_token(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
6.7 查询企业微信代开发应用的access_token
python调用方法名: bmcp.config_wx_provider_app_access_token
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corpid | String | 否 | 企业微信团队ID, 企业微信加密过的,可在企业微信服务商后台获取;和user_id二选一 |
| user_id | String | 否 | 团队创建者的user_id;和corpid二选一 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| expire_time | String | 过期时间 |
| access_token | String | access_token |
入参和响应示例:
入参示例:
{
"corpid": "wpacI8DQAAGe1FWTFnK91FlrXhMHkSOA"
}
响应示例:
{
"expire_time": "1657184142",
"access_token": "8_YweIMLXrVAcdZPKvMB6CyYcp_gVt2OuTxNbYyy4kfEs5U3iYr7hVb6uCYi5b"
}
Python插件开发代码示例:
import bmcp
def config_wx_provider_app_access_token(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corpid"] = "wpacI8DQAAGe1FWTFnK91FlrXhMHkSOA"
result = bmcp.config_wx_provider_app_access_token(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
6.8 查询企业微信代开发应用的access_token
python调用方法名: bmcp.config_wx_auth_access_token
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corpid | String | 否 | 企业微信团队ID, 企业微信加密过的,可在企业微信服务商后台获取;和user_id二选一 |
| user_id | String | 否 | 团队创建者的user_id;和corpid二选一 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| expire_time | String | 过期时间 |
| access_token | String | access_token |
入参和响应示例:
入参示例:
{
"corpid": "a6ff448092039aee84208a41"
}
响应示例:
{
"expire_time": "1748333811",
"access_token": "92_v8AduC1Foun-bK1fheRfBZOU0mkR8j5px5QlqRns4097HarCKyat0miphonHP7"
}
Python插件开发代码示例:
import bmcp
def config_wx_auth_access_token(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["corpid"] = "a6ff448092039aee84208a41"
result = bmcp.config_wx_auth_access_token(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
7. 日志
7.1 查询登录日志
python调用方法名: bmcp.sys_login_log
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corpid | string | 否 | 企业微信团队ID, 企业微信加密过的,可在企业微信服务商后台获取;和user_id二选一 |
| user_id | string | 否 | 团队创建者的user_id;和corpid二选一 |
| start_time | string | 否 | 时间范围的开始时间 |
| end_time | string | 否 | 时间范围的结束时间 |
| skip | int | 否 | 翻页起始值索引 |
| limit | int | 否 | 查询的条数,1~100,默认20 |
| useUtcFormat | bool | 否 | 时间返回值是否使用Utc格式 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| has_next | Boolean | 是否有下一页 |
| logs | Object | 返回数据内容 |
| logs.user_id | String | 登录用户id |
| logs.username | String | 登录用户名称 |
| logs.avatarurl | String | 登录用户头像链接 |
| logs.corp_id | String | 团队id |
| logs.corp_name | String | 团队名称 |
| logs.login_time | DateTime | 登录时间 |
| logs.ip | String | 登录ip |
| logs.city | String | 登录地 |
| logs.ua | String | 登录平台 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24",
"corp_id": "c505411111f8c5ef0c09d6c",
"start_time": "2026-08-01 00:00:00",
"end_time": "2026-08-25 23:59:59",
"skip": 0,
"limit": 2
}
响应示例:
{
"has_next": true,
"logs": [
{
"city": "地址获取失败:INVALID_USER_IP",
"ip": "175.8.126.208",
"login_time": "2026-08-25 10:09:11",
"operator": "通讯录重构一",
"operator_status": 1,
"ua": "电脑网页版"
},
{
"city": "地址获取失败:INVALID_USER_IP",
"ip": "175.8.126.208",
"login_time": "2026-08-25 09:46:25",
"operator": "通讯录重构一",
"operator_status": 1,
"ua": "电脑网页版"
}
]
}
Python插件开发代码示例:
import bmcp
def sys_login_log(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
params["corp_id"] = "c505411111f8c5ef0c09d6c"
params["start_time"] = "2026-08-01 00:00:00"
params["end_time"] = "2026-08-25 23:59:59"
params["skip"] = 0
params["limit"] = 2
result = bmcp.sys_login_log(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
7.2 查询日志类型
python调用方法名: bmcp.sys_log_type
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 类型,operate 平台操作日志 app 应用日志 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| types | Object | 返回内容 |
入参和响应示例:
入参示例:
{
"type": "operate"
}
响应示例:
{
"types": {
"201": "导出通讯录",
"202": "邀请成员",
"203": "转为已删除成员",
"204": "删除成员",
"205": "修改成员信息",
"206": "添加部门",
"207": "删除部门",
"208": "修改部门名称",
"209": "添加普通管理组",
"210": "删除普通管理组",
"211": "修改普通管理组名称"
}
}
Python插件开发代码示例:
import bmcp
def sys_log_type(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["type"] = "operate"
result = bmcp.sys_log_type(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
7.3 查询平台操作日志
python调用方法名: bmcp.sys_operate_log
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corpid | string | 否 | 企业微信团队ID, 企业微信加密过的,可在企业微信服务商后台获取;和user_id二选一 |
| user_id | string | 否 | 团队创建者的user_id;和corpid二选一 |
| start_time | string | 否 | 时间范围的开始时间 |
| end_time | string | 否 | 时间范围的结束时间 |
| skip | int | 否 | 翻页起始值索引 |
| limit | int | 否 | 查询的条数,1~100,默认20 |
| types | string Array | 否 | 查询日志类型列表,可通过查询日志类型接口获取 |
| useUtcFormat | bool | 否 | 时间返回值是否使用Utc格式 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| has_next | Boolean | 是否有下一页 |
| logs | Object | 返回数据内容 |
| logs.type | String | 日志类型id |
| logs.type_name | String | 日志类型名称 |
| logs.details | Object | 操作内容 |
| logs.details.content | String | 操作描述 |
| logs.user_id | String | 操作人id |
| logs.username | String | 操作人名称 |
| logs.avatarurl | String | 操作人头像链接 |
| logs.corp_id | String | 团队id |
| logs.corp_name | String | 团队名称 |
| logs.time | DateTime | 操作时间 |
| logs.ip | String | 操作ip |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24",
"corp_id": "c505411111f8c5ef0c09d6c",
"start_time": "2026-08-01 00:00:00",
"end_time": "2026-08-25 23:59:59",
"types": [
"254",
"203"
],
"skip": 0,
"limit": 1
}
响应示例:
{
"has_next": false,
"logs": [
{
"avatarurl": "",
"corp_id": "c505411111f8c5ef0c09d6c",
"corp_name": "通讯录重构一",
"details": {
"content": ""
},
"ip": "175.8.126.208",
"time": "2026-08-24 10:46:10",
"type": "转为已删除成员",
"type_name": "",
"user_id": "811247269405fd91a1da8e24",
"username": "通讯录重构一"
}
]
}
Python插件开发代码示例:
import bmcp
def sys_operate_log(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
params["corp_id"] = "c505411111f8c5ef0c09d6c"
params["start_time"] = "2026-08-01 00:00:00"
params["end_time"] = "2026-08-25 23:59:59"
params["types"] = [
"254",
"203"
]
params["skip"] = 0
params["limit"] = 1
result = bmcp.sys_operate_log(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
7.4 查询应用日志
python调用方法名: bmcp.sys_app_log
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| corpid | string | 否 | 企业微信团队ID, 企业微信加密过的,可在企业微信服务商后台获取;和user_id二选一 |
| user_id | string | 否 | 团队创建者的user_id;和corpid二选一 |
| start_time | string | 否 | 时间范围的开始时间 |
| end_time | string | 否 | 时间范围的结束时间 |
| skip | int | 否 | 翻页起始值索引 |
| limit | int | 否 | 查询的条数,1~100,默认20 |
| types | string Array | 否 | 查询日志类型列表,可通过查询日志类型接口获取 |
| appIds | string Array | 否 | 应用id列表 |
| entryIds | string Array | 否 | 表单名称列表 |
| useUtcFormat | bool | 否 | 时间返回值是否使用Utc格式 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| has_next | bool | 是否 |
| logs | Object | 返回数据内容 |
| logs.app_id | String | 应用id |
| logs.app_name | String | 应用名称 |
| logs.app_removed | bool | 应用是否删除 |
| logs.entry_id | String | 表单id |
| logs.entry_name | String | 表单名称 |
| logs.entry_removed | bool | 表单是否删除 |
| logs.type | String | 日志类型 |
| logs.type_name | String | 日志类型名称 |
| logs.details | Object | 操作内容 |
| logs.details.content | String | 操作描述 |
| logs.details.link | String | 跳转链接 |
| logs.details.linkText | String | 跳转描述 |
| logs.ip | String | 操作ip |
| logs.time | String | 操作时间 |
| logs.user_id | String | 操作人id |
| logs.username | String | 操作人名称 |
| logs.avatarurl | String | 操作人头像链接 |
| logs.corp_id | String | 团队id |
| logs.corp_name | String | 团队名称 |
入参和响应示例:
入参示例:
{
"user_id": "811247269405fd91a1da8e24",
"corp_id": "c505411111f8c5ef0c09d6c",
"start_time": "2026-08-01 00:00:00",
"end_time": "2026-08-25 23:59:59",
"types": [
"116"
],
"skip": 0,
"limit": 1
}
响应示例:
{
"has_next": true,
"logs": [
{
"app_id": "52b64298390f3f180f0c7cff",
"app_name": "空白应用",
"app_removed": false,
"avatarurl": "",
"corp_id": "c505411111f8c5ef0c09d6c",
"corp_name": "通讯录重构一",
"details": {
"content": "新建了权限组「管理全部流程」",
"link": "",
"linkText": ""
},
"entry_id": "5cb945e9a55e9f857e4601c3",
"entry_name": "未命名流程表单",
"entry_removed": false,
"ip": "175.0.224.118",
"time": "2026-08-08 16:12:25",
"type": "116",
"type_name": "新建了权限组「{{-authName-}}」",
"user_id": "",
"username": "通讯录重构一"
}
]
}
Python插件开发代码示例:
import bmcp
def sys_app_log(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["user_id"] = "811247269405fd91a1da8e24"
params["corp_id"] = "c505411111f8c5ef0c09d6c"
params["start_time"] = "2026-08-01 00:00:00"
params["end_time"] = "2026-08-25 23:59:59"
params["types"] = [
"116"
]
params["skip"] = 0
params["limit"] = 1
result = bmcp.sys_app_log(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
8. Webhook
8.1 查询webhook列表
python调用方法名: bmcp.webhook_list
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | int | 是 | webhook类型, 1:通讯录 2:表单 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| list | Object Array | |
| list.id | String | id |
| list.appId | String | 应用id, 通讯录webhook该值为空 |
| list.entryId | String | 表单id, 通讯录webhook该值为空 |
| list.event_info | int Array | 推送事件类型, 通讯录webhook该值为空 0:有新数据提交时推送;1:有数据被修改时推送;2:有数据被删除时推送;3:有数据被恢复时推送;4:表单结构有变化时推送;5:流程事件;6:有新增评论时推送;:7:有评论被修改时推送; |
| list.status | int | 状态: 1:启用,0:停用 |
| list.url | String | 推送服务器地址 |
| list.encrypt_key | String | 加密Secret |
| list.fail | int | 推送失败数据条数 |
入参和响应示例:
入参示例:
{
"type": 2
}
响应示例:
{
"list": [
{
"appId": "52b64298390f3f180f0c7cff",
"encrypt_key": "",
"entryId": "23894599b192e6f526f5ad7e",
"event_info": [
0,
1,
2
],
"fail": 0,
"id": "128",
"status": 0,
"url": "http://lacetest001.com/lace01"
},
{
"appId": "52b64298390f3f180f0c7cff",
"encrypt_key": "",
"entryId": "23894599b192e6f526f5ad7e",
"event_info": [
0
],
"fail": 0,
"id": "135",
"status": 1,
"url": "http://test.online-office.com/xxx"
}
]
}
Python插件开发代码示例:
import bmcp
def webhook_list(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["type"] = 2
result = bmcp.webhook_list(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
8.2 新建webhook
python调用方法名: bmcp.webhook_create
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| type | Number | webhook类型, 1:通讯录 2:表单 | |
| appId | String | 应用id,通讯录 webhook不用填 | |
| entryId | String | 表单id,通讯录 webhook不用填 | |
| url | String | 推送服务器地址 | |
| encrypt_key | String | 加密Secret | |
| event_info | int Array | 推送事件类型, 通讯录webhook该值不用填 0:有新数据提交时推送;1:有数据被修改时推送;2:有数据被删除时推送;3:有数据被恢复时推送;4:表单结构有变化时推送;5:流程事件;6:有新增评论时推送;:7:有评论被修改时推送; |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | string | |
| type | int | webhook类型, 1:通讯录 2:表单 |
| appId | String | 应用id,通讯录 webhook不用填 |
| entryId | String | 表单id,通讯录 webhook不用填 |
| url | String | 推送服务器地址 |
| encrypt_key | String | 加密Secret |
| event_info | int Array | 推送事件类型, 通讯录webhook该值不用填 0:有新数据提交时推送;1:有数据被修改时推送;2:有数据被删除时推送;3:有数据被恢复时推送;4:表单结构有变化时推送;5:流程事件;6:有新增评论时推送;:7:有评论被修改时推送; |
入参和响应示例:
入参示例:
{
"type": 2,
"appId": "52b64298390f3f180f0c7cff",
"entryId": "23894599b192e6f526f5ad7e",
"url": "http://test.com/test01",
"event_info": [
0,
1
],
"encrypt_key": ""
}
响应示例:
{
"appId": "52b64298390f3f180f0c7cff",
"encrypt_key": "",
"entryId": "23894599b192e6f526f5ad7e",
"event_info": [
0,
1
],
"id": "153",
"status": 1,
"url": "http://test.com/test01"
}
Python插件开发代码示例:
import bmcp
def webhook_create(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["type"] = 2
params["appId"] = "52b64298390f3f180f0c7cff"
params["entryId"] = "23894599b192e6f526f5ad7e"
params["url"] = "http://test.com/test01"
params["event_info"] = [
0,
1
]
params["encrypt_key"] = ""
result = bmcp.webhook_create(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
8.3 修改webhook
python调用方法名: bmcp.webhook_update
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | String | 是 | id |
| url | String | 否 | 推送服务器地址 |
| encrypt_key | String | 否 | 加密Secret |
| status | int | 否 | 状态: 1:启用, 0:停用 |
| event_info | int array | 否 | 推送事件类型, 通讯录webhook该值不用填 0:有新数据提交时推送;1:有数据被修改时推送;2:有数据被删除时推送;3:有数据被恢复时推送;4:表单结构有变化时推送;5:流程事件;6:有新增评论时推送;:7:有评论被修改时推送; |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"id": "153",
"event_info": [
0,
1,
2
]
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def webhook_update(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["id"] = "153"
params["event_info"] = [
0,
1,
2
]
result = bmcp.webhook_update(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
8.4 webhook删除
python调用方法名: bmcp.webhook_delete
入参结构:
| 字段名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| id | string | 否 |
响应结构:
| 字段名 | 类型 | 说明 |
|---|---|---|
| code | int | 执行结果码,200代表成功,其他代表失败 |
| msg | string | 执行结果 |
入参和响应示例:
入参示例:
{
"id": "153"
}
响应示例:
{
"code": 200,
"msg": "success"
}
Python插件开发代码示例:
import bmcp
def webhook_delete(args: Args) -> Output:
# 插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
params = args.params
# 如果需要固定参数 可以如下指定
params["id"] = "153"
result = bmcp.webhook_delete(params)
# 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
return Output(result)
