百数百数帮助
  • 首页
  • 帮助文档
  • 后端python
  • 开放平台
  • 私有云
  • AI智能体
  • 更新日志
返回控制台
返回控制台
  • 百数AI智能体介绍
  • 使用智能体
    • 智能体的基础使用
  • 智能体开发
    • 智能体
      • 智能体的基础开发流程
      • 智能体设计页说明
    • 工作流
      • 工作流基础开发流程
      • 工作流设计说明
      • 对话流基础开发流程
      • 对话流设计说明
    • 知识库
      • 知识库基础开发流程
      • 文本格式知识库
      • 表格格式知识库
      • 照片类型知识库
      • 表单知识库
    • MCP
      • MCP基础开发流程
      • MCP Python API接口文档
        • 表单体系接口文档
        • 平台体系接口文档
        • 通讯录体系接口文档
        • 应用体系接口文档
    • 插件中心
  • 设置智能体助手
    • 智能体助手设计

MCP Python API 接口文档 - 平台体系

  • 1. 账号
    • 1.1 账号注册
    • 1.2 加入某个团队
    • 1.3 加入某个团队的外部联系人
    • 1.4 账号绑定微信
    • 1.5 账号解绑微信
    • 1.6 查询账号基本信息
    • 1.7 查询账号列表
    • 1.8 修改账号信息
    • 1.9 登录账号
    • 1.10 修改团队信息
    • 1.11 解散团队
  • 2. 消息
    • 1.1 发送邮件消息
    • 2.2 发送微信消息
    • 2.3 发送钉钉消息
    • 2.4 发送飞书消息
    • 2.5 发送企业微信消息
  • 3. 应用管理
    • 3.1 创建应用分组
    • 3.2 查询应用分组列表
    • 3.3 应用分组重命名
    • 3.4 应用分组删除
    • 3.5 获取应用列表
    • 3.6 应用信息修改
    • 3.7 删除应用
  • 4. 密钥管理
    • 4.1 创建秘钥
    • 4.2 查询密钥
    • 4.3 删除密钥
  • 5. 性能配置
    • 5.1 查询用户基础配置信息
    • 5.2 查询用户汇总配置信息
    • 5.3 修改用户基础配置信息
    • 5.4 为用户赠送指定配置
    • 5.5 查询配置赠送列表
    • 5.6 查询配置消耗
    • 5.7 查询已购买套餐列表
  • 6. 配置
    • 6.1 查询模板应用总数
    • 6.2 查询模板应用列表
    • 6.3 安装模板应用
    • 6.4 查询站点公告
    • 6.5 修改站点公告
    • 6.6 查询微信access_token
    • 6.7 查询企业微信代开发应用的access_token
    • 6.8 查询企业微信代开发应用的access_token
  • 7. 日志
    • 7.1 查询登录日志
    • 7.2 查询日志类型
    • 7.3 查询平台操作日志
    • 7.4 查询应用日志
  • 8. Webhook
    • 8.1 查询webhook列表
    • 8.2 新建webhook
    • 8.3 修改webhook
    • 8.4 webhook删除

1. 账号

1.1 账号注册

python调用方法名: bmcp.account_register

入参结构:

字段名 类型 是否必填 说明
mobile string 否 手机号码,手机和邮箱必填一个
country_code string 否 手机区号,填写手机时需填手机区号,不填默认为86
username string 是 用户名
password string 否 密码,不填默认123456
email string 否 电子邮箱,手机和邮箱必填一个
account string 否 账号,支持中文,不填系统将自动生成
create_team string 否 是否创建团队,1:创建 0:不创建,不填时默认为 1

响应结构:

字段名 类型 说明
uid int 账号uid
account string 账号
country_code string 手机区号
mobile string 手机号码
username string 用户名
email 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个参数选其中一个参数即可
email 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 否 用户名
email 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)
最新修改于:2026-09-15