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

MCP Python API 接口文档 - 表单体系

  • 1. 表单单条数据
    • 1.1 单条数据创建
    • 1.2 单条数据编辑
    • 1.3 单条数据删除
    • 1.4 单条数据查询
  • 2. 表单批量数据
    • 2.1 批量数据新增
    • 2.2 批量数据查询
    • 2.3 批量数据修改
    • 2.4 批量数据删除
  • 3. 子表单操作
    • 3.1 单条数据新增
    • 3.2 单条数据修改
    • 3.3 单条数据删除
    • 3.4 批量数据新增
    • 3.5 批量数据更新
    • 3.6 批量数据删除
  • 4. 应用
    • 4.1 应用列表
    • 4.2 应用下的表单列表
    • 4.3 表单基本信息
  • 5. 文件
    • 5.1 文件上传-通过外部url
    • 5.2 文件上传-直接上传文件内容
  • 6. 聚合表操作
    • 6.1 查询聚合表输出字段
    • 6.2 查询聚合表数据
    • 6.3 查询聚合表数据总数
  • 7 数据视图操作
    • 7.1 查询视图输出字段
    • 7.2 查询视图数据总量
    • 7.3 查询视图数据

1. 表单单条数据

1.1 单条数据创建

python调用方法名: bmcp.form_create_single_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
data Object 是 单行数据

响应结构:

字段名 类型 是否必填 说明
code int 是 执行结果码,200代表成功,其他代表失败
dataId string 否 数据id,执行失败返回空
msg string 否 code非200时的错误详情

入参和响应示例:

  • 入参示例:
{
    "appId": "efesage545e4egsage",
    "formId":"8518seges8e83w4hgehe",
    "useUtcFormat":true,
    "is_start_workflow":true,
    "is_start_event":false,
    "data":{
        "单行文本": "张三",
        "多行文本": "webapi",
        "数字": 8,
        "日期时间": "2019-01-01 11:11:11",
        "单选按钮组": "一年级",
        "复选框组": [
            "选项1",
            "选项2"
        ],
        "下拉框": "女",
        "下拉复选框": [
            "选项1",
            "选项2"
        ],
        "地址": {
            "province": "湖南省",
            "city": "长沙市",
            "district": "芙蓉区",
            "detail": "韶山北路"
        },
        "定位": {
            "province": "湖南省",
            "city": "长沙市",
            "district": "芙蓉区",
            "detail": "韶山北路",
            "lnglatXY": [
                112.99627,
                28.19393
            ]
        },
        "图片": [
                {
                    "name": "logo.png",
                    "url": "https://doc.testyun.com/doc/images/logo.png"
                },
                {
                    "name":"test1.json",
                    "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMj“
                }
            ],
            "附件": [
                {
                    "name": "logo.png",
                    "url": "https://doc.testyun.com/doc/images/logo.png"
                },
                {
                    "name":"test2.json",
                    "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMjM0ODBiM2EiLAog“
                }
            ],
        "子表单": [
            {
                "单行文本1": "张三"
            },
            {
                "单行文本1": "张三"
            }
        ],
        "成员单选": "46b842969dfef8eb1a9df35c",
        "成员多选": [
            "46b842969dfef8eb1a9df35c"
        ],
        "部门单选": "51d1177b964603db9e60a962",
        "部门多选": [
            "51d1177b964603db9e60a962"
        ]

    }
}
  • 响应示例
{
  "code": 200,
  "dataId": "9f97469aae84d9b5d2810e09",
  "msg": ""
}

Python插件开发代码示例:

import bmcp

def form_create_single_data(args: Args) -> Output:
    #插件定义好入参后除了动态部分,其他部分无需调整的可以直接按如下方式继承
    params = args.params

    # 参数内容
        params["data"] = {
            "单行文本": "张三",
            "多行文本": "webapi",
            "数字": 8,
            "日期时间": "2019-01-01 11:11:11",
            "单选按钮组": "一年级",
            "复选框组": [
                "选项1",
                "选项2"
            ],
            "下拉框": "女",
            "下拉复选框": [
                "选项1",
                "选项2"
            ],
            "地址": {
                "province": "湖南省",
                "city": "长沙市",
                "district": "芙蓉区",
                "detail": "韶山北路"
            },
            "定位": {
                "province": "湖南省",
                "city": "长沙市",
                "district": "芙蓉区",
                "detail": "韶山北路",
                "lnglatXY": [
                    112.99627,
                    28.19393
                ]
            },
            "图片": [
                {
                    "name": "logo.png",
                    "url": "https://doc.testyun.com/doc/images/logo.png"
                },
                {
                    "name":"test1.json",
                    "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMj“
                }
            ],
            "附件": [
                {
                    "name": "logo.png",
                    "url": "https://doc.testyun.com/doc/images/logo.png"
                },
                {
                    "name":"test2.json",
                    "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMjM0ODBiM2EiLAog“
                }
            ],
            "子表单": [
                {
                    "单行文本1": "张三"
                },
                {
                    "单行文本1": "张三"
                }
            ],
            "成员单选": "46b842969dfef8eb1a9df35c",
            "成员多选": [
                "46b842969dfef8eb1a9df35c"
            ],
            "部门单选": "51d1177b964603db9e60a962",
            "部门多选": [
                "51d1177b964603db9e60a962"
            ]

        }
    }

    result = bmcp.form_create_single_data(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

1.2 单条数据编辑

python调用方法名: bmcp.form_edit_single_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
dataId string 是 数据id
data Object 是 修改数据,可以只传需要修改的字段即可

响应结构:

字段名 类型 是否必填 说明
code int 是 执行结果码,200代表成功,其他代表失败
msg string 否 code非200时的错误详情

入参和响应示例:

  • 入参示例:

    {
        "appId": "efesage545e4egsage",
        "formId":"8518seges8e83w4hgehe",
        "dataId":"c1b840ab8865b313etj54j78",
        "data":{
            "单行文本": "张三",
            "多行文本": "webapi",
            "数字": 8,
            "日期时间": "2019-01-01 11:11:11",
            "单选按钮组": "一年级",
            "复选框组": [
                "选项1",
                "选项2"
            ],
            "下拉框": "女",
            "下拉复选框": [
                "选项1",
                "选项2"
            ],
            "地址": {
                "province": "湖南省",
                "city": "长沙市",
                "district": "芙蓉区",
                "detail": "韶山北路"
            },
            "定位": {
                "province": "湖南省",
                "city": "长沙市",
                "district": "芙蓉区",
                "detail": "韶山北路",
                "lnglatXY": [
                    112.99627,
                    28.19393
                ]
            },
            "图片": [
                    {
                        "name": "logo.png",
                        "url": "https://doc.testyun.com/doc/images/logo.png"
                    },
                    {
                        "name":"test1.json",
                        "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMj“
                    }
                ],
                "附件": [
                    {
                        "name": "logo.png",
                        "url": "https://doc.testyun.com/doc/images/logo.png"
                    },
                    {
                        "name":"test2.json",
                        "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMjM0ODBiM2EiLAog“
                    }
                ],
            "子表单": [
                {
                    "单行文本1": "张三"
                },
                {
                    "单行文本1": "张三"
                }
            ],
            "成员单选": "46b842969dfef8eb1a9df35c",
            "成员多选": [
                "46b842969dfef8eb1a9df35c"
            ],
            "部门单选": "51d1177b964603db9e60a962",
            "部门多选": [
                "51d1177b964603db9e60a962"
            ]
    
        }
    }
  • 响应示例

{
    "code": 200,
    "msg": ""
}

Python插件开发代码示例:

import bmcp

def form_edit_single_data(args: Args) -> Output:
    params = args.params
    params["dataId"] = "755egag7erthh44wef774" #这里不传params就会继承插件配置的默认dataId

    params["data"] = {
            "单行文本": "张三",
            "多行文本": "webapi",
            "数字": 8,
            "日期时间": "2019-01-01 11:11:11",
            "单选按钮组": "一年级",
            "复选框组": [
                "选项1",
                "选项2"
            ],
            "下拉框": "女",
            "下拉复选框": [
                "选项1",
                "选项2"
            ],
            "地址": {
                "province": "湖南省",
                "city": "长沙市",
                "district": "芙蓉区",
                "detail": "韶山北路"
            },
            "定位": {
                "province": "湖南省",
                "city": "长沙市",
                "district": "芙蓉区",
                "detail": "韶山北路",
                "lnglatXY": [
                    112.99627,
                    28.19393
                ]
            },
            "图片": [
                {
                    "name": "logo.png",
                    "url": "https://doc.testyun.com/doc/images/logo.png"
                },
                {
                    "name":"test1.json",
                    "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMj“
                }
            ],
            "附件": [
                {
                    "name": "logo.png",
                    "url": "https://doc.testyun.com/doc/images/logo.png"
                },
                {
                    "name":"test2.json",
                    "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMjM0ODBiM2EiLAog“
                }
            ],
            "子表单": [
                {
                    "单行文本1": "张三"
                },
                {
                    "单行文本1": "张三"
                }
            ],
            "成员单选": "46b842969dfef8eb1a9df35c",
            "成员多选": [
                "46b842969dfef8eb1a9df35c"
            ],
            "部门单选": "51d1177b964603db9e60a962",
            "部门多选": [
                "51d1177b964603db9e60a962"
            ]
        }
    }

    result = bmcp.form_edit_single_data(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

1.3 单条数据删除

python调用方法名: bmcp.form_delete_single_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
dataId string 是 数据id

响应结构:

字段名 类型 是否必填 说明
code int 是 执行结果码,200代表成功,其他代表失败
msg string 否 code非200时的错误详情

入参和响应示例:

  • 入参示例:
{
    "appId": "efesage545e4egsage",
    "formId":"8518seges8e83w4hgehe",
    "dataId":"c1b840ab8865b313etj54j78"
}
  • 响应示例:
{
    "code": 200,
    "msg": ""
}

Python插件开发代码示例:

import bmcp

def form_delete_single_data(args: Args) -> Output:
    params = args.params
    params["dataId"] = "755egag7erthh44wef774" #这里不传params就会继承插件配置的默认dataId

    result = bmcp.form_delete_single_data(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

1.4 单条数据查询

python调用方法名: bmcp.form_query_single_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
dataId string 是 数据id

响应结构:

字段名 类型 是否必填 说明
code int 是 执行结果码,200代表成功,其他代表失败
msg string 否 code非200时的错误详情

入参和响应示例:

  • 入参示例:
{
    "appId": "efesage545e4egsage",
    "formId":"8518seges8e83w4hgehe",
    "dataId":"c1b840ab8865b313etj54j78"
}
  • 响应示例:
{
  "_id": "2a9142adb53313695ace2ad",
  "_widget_1788868513385": "2026-09-17 16:00:00",
  "_widget_1788868575503": "569a5c86847c84762e436092",
  "appId": "540559aff5e7e4452f3c4295",
  "chargers_name": "",
  "createTime": "2026-09-08 17:24:14",
  "creator": {
    "_id": "5e8ceaa6545cdd9973d9e16",
    "name": "谭一测试"
  },
  "entryId": "e5b64bb7b1caa82472ae867",
  "flowDecision": {},
  "ip": "175.8.126.152",
  "isbackup": 0,
  "label": "1",
  "updateTime": "2026-09-09 11:24:52",
  "updater": {
    "_id": "5e8ceaa6545cd93973d9e16",
    "name": "谭一测试"
  },
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36",
  "下拉复选框": [
    "选项1",
    "选项2",
    "选项3"
  ],
  "单行文本": "1",
  "成员单选": {
    "_id": "5e8ceaa6545cdd9973d9e16",
    "mode": "member",
    "nickname": "谭一测试",
    "status": 0
  },
  "成员多选": [
    {
      "_id": "5e8ceaa6545cd93973d9e16",
      "mode": "member",
      "nickname": "谭一测试",
      "status": 0
    },
    {
      "_id": "5ae9b2e76347bd11c13c9ba",
      "mode": "member",
      "nickname": "清随心",
      "status": 2
    }
  ],
  "部门单选": {
    "_id": "516c1997586430ec3284d0c",
    "mode": "dept",
    "nickname": "经理办公室",
    "status": 1
  },
  "部门多选": [
    {
      "_id": "555078d3d8fb3c6d874e9de",
      "mode": "dept",
      "nickname": "销售部",
      "status": 1
    },
    {
      "_id": "571195f980aa3c6219ad76a",
      "mode": "dept",
      "nickname": "市场部",
      "status": 1
    }
  ]
}

Python插件开发代码示例:

import bmcp

def form_query_single_data(args: Args) -> Output:
    params = args.params
    params["dataId"] = "755egag7erthh44wef774" #这里不传params就会继承插件配置的默认dataId

    result = bmcp.form_query_single_data(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

2. 表单批量数据

2.1 批量数据新增

python调用方法名: bmcp.form_batch_data_create

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
dataId string 是 数据id

响应结构:

字段名 类型 是否必填 说明
code int 是 执行结果码,200代表成功,其他代表失败
successCount int 是 成功的条数
failedCount int 是 失败的条数
failed Object Array 否 失败的数据
_id stirng 否 数据id, 创建一条数据成功时返回
batch_id string 否 批量id, 创建多条数据成功时返回,可以作为批量查询的凭据

入参和响应示例:

入参示例:

{
    "appId": "efesage545e4egsage",
    "formId":"8518seges8e83w4hgehe",
    "dataId":"c1b840ab8865b313etj54j78",
    "data":[
        {
            "单行文本":"张三",
            "多行文本":"李四",
            "数字":"25",
            "日期时间": "2019-01-01 11:11:11",
            "单选按钮组": "一年级",
            "复选框组": [
                "选项1",
                "选项2"
            ],
            "下拉框": "女",
            "下拉复选框": [
                "选项1",
                "选项2"
            ],
            "地址": {
                "province": "湖南省",
                "city": "长沙市",
                "district": "芙蓉区",
                "detail": "韶山北路"
            },
            "定位": {
                "province": "湖南省",
                "city": "长沙市",
                "district": "芙蓉区",
                "detail": "韶山北路",
                "lnglatXY": [
                    112.99627,
                    28.19393
                ]
            },
            "图片": [
                {
                    "name": "logo.png",
                    "url": "https://doc.testyun.com/doc/images/logo.png"
                },
                {
                    "name":"test1.json",
                    "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMj“
                }
            ],
            "附件": [
                {
                    "name": "logo.png",
                    "url": "https://doc.testyun.com/doc/images/logo.png"
                },
                {
                    "name":"test2.json",
                    "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMjM0ODBiM2EiLAog“
                }
            ],
            "子表单": [
                {
                    "单行文本1": "张三"
                },
                {
                    "单行文本1": "张三"
                }
            ],
            "成员单选": "46b842969dfef8eb1a9df35c",
            "成员多选": [
                "46b842969dfef8eb1a9df35c"
            ],
            "部门单选": "51d1177b964603db9e60a962",
            "部门多选": [
                "51d1177b964603db9e60a962"
            ]
        }
    ]
}
  • 响应示例:
{
    "code": 200,
    "successCount": 1,
    "failedCount": 0
}

Python插件开发代码示例:

import bmcp

# 具体字段类型和使用方式请参考MCP API文档

def form_batch_data_create(args: Args) -> Output:
    # args.params内容为MCP配置的入参
    params = args.params

    params["appId"] = "550606b07bcc0d41cd9b2de"
    params["formId"] = "5b97538e65451aef9317653"
    params["data"] = [{"单行文本": "张三", "数字": 8}, {"单行文本": "李四", "数字": 10}]

    result = bmcp.form_batch_data_create(params)
    return Output(result)

2.2 批量数据查询

python调用方法名: bmcp.form_batch_data_list

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
dataId string 是 数据id
filter Object 否 过滤条件
filter.rel String 是 筛选组合关系,and或or
filter.cond Object 是 过滤条件列表
filter.cond.field String 是 字段别名
filter.cond.method String 是 过滤方法
filter.cond.value String 是 过滤值

响应结构:

字段名 类型 是否必填
data Object Array 数据

入参和响应示例:

入参示例:

{
    "appId": "5d7b86502d5e2b3443587322",
    "formId":"b7a44ce5ad315a49688fd49d",
    "filter":{
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "method":"eq",
                "value":["dddd"],
            }
        ]
    }
}

响应示例:

{
    "data": [
        {
            "appId": "5d7b86522d5e2b3443587322",
            "entryId": "b7a44ce3ad315a49688fd49d",
            "creator": {
                "name": "张三",
                "_id": "5d66359813f33ef2e45916f2"
            },
            "deleter": "",
            "updater": {
                "name": "张三",
                "_id": "5d66359813f33ef2e45916f2"
            },
            "createTime": "2026-06-19 11:46:53",
            "updateTime": "2026-06-19 14:22:30",
            "deleteTime": null,
            "_id": "755egag7erthh44wef774",
            "flowState": "0",
            "单行文本": "dddd"
        }
    ]
}

Python插件开发代码示例:

import bmcp

def form_batch_data_list(args: Args) -> Output:
    params = args.params
    params["dataId"] = "755egag7erthh44wef774" #这里不传params就会继承插件配置的默认dataId

    result = bmcp.form_batch_data_list(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

2.3 批量数据修改

python调用方法名: bmcp.form_batch_data_update

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
dataId string 否 数据id
field string 是 更新字段
value string 是 更新的值
filter object 否 过滤条件
filter.rel string 是 筛选组合关系,and或or
filter.cond Object 是 过滤条件列表
filter.cond.field string 是 字段别名
filter.cond.method string 是 过滤方法
filter.cond.value string array 是 过滤值

响应结构:

字段名 类型 是否必填
code int 执行结果码,200代表成功,其他代表失败
msg string code非200时的错误详情
total int 总数据量
failed int 失败的条数
success int 成功的条数

入参和响应示例:

  • 入参示例:
{
    "appId": "5d7b86502d6e2b3443587322",
    "formId": "c4b34a9c87fe342244ff72d3",
    "filter":{
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":"ewtewa"
            },
            {
                "field":"子表单1.子表单_单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":"sss"
            }
        ]
    }
}
  • 响应示例:
{
    "code":    200,
    "msg":     "success",
    "total":   1,
    "failed":  0,
    "success": 1,
}

Python插件开发代码示例:

import bmcp

def form_batch_data_update(args: Args) -> Output:
    params = args.params
    params["dataId"] = "755egag7erthh44wef774" #这里不传params就会继承插件配置的默认dataId

    result = bmcp.form_batch_data_update(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

2.4 批量数据删除

python调用方法名: bmcp.form_batch_data_delete

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
filter Object 否 筛选条件
filter.rel string 是 筛选组合关系,and或or
filter.cond Object 是 过滤条件列表
filter.cond.field string 是 字段别名
filter.cond.method string 是 过滤方法
filter.cond.value string array 是 过滤值

响应结构:

code int 执行结果码,200代表成功,其他代表失败
msg string 执行结果描述
count int 删除的数据条数,调用成功才会返回

入参和响应示例:

  • 入参示例:
{
    "appId": "5d7b86502d5e2b3443587322",
    "formId": "c4b34a9c8cfe342244ff72d3",
    "filter":{
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":["2002"],
                "valueMode":"item"
            },
            {
                "field":"_widget_1781660609782._widget_1781660609808",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":["aaa"],
                "valueMode":"item"
            }
        ]
    }
}
  • 响应示例:
{
    "code": 200,
    "msg":"success"
    "count":1
}

Python插件开发代码示例:

import bmcp

def form_batch_data_delete(args: Args) -> Output:
    params = args.params
    params["appId"] = "5d7b86502d5e2b3443587322",
    params["formId"] = "c4b34a9c8cfe342244ff72d3",
    params["filter"] = {
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":["2002"],
                "valueMode":"item"
            },
            {
                "field":"_widget_1781660609782._widget_1781660609808",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":["aaa"],
                "valueMode":"item"
            }
        ]
    }

    result = bmcp.form_batch_data_delete(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

3. 子表单操作

3.1 单条数据新增

python调用方法名: bmcp.subform_create_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
sub string 是 子表单别名
dataId string 是 数据id
datas Object Array 是 需要写入的子表单数据

响应结构:

字段名 类型 是否必填
failedCode int 执行结果码,0代表成功,其他代表失败
success int 成功条数
failed Object 成功时返回为空

入参和响应示例:

  • 入参示例:
{
    "appId": "efesage545e4egsage",
    "formId":"8518seges8e83w4hgehe",
    "sub":"子表单",
    "dataId":"eaeg848ge48wsge4weseg",
    "datas":[
        {
            "单行文本_子表单": "张三",
            "多行文本1": "webapi",
            "数字1": 8,
            "日期时间1": "2019-01-01 11:11:11",
            "单选按钮组1": "一年级",
            "复选框组1": [
                "选项1",
                "选项2"
            ],
            "下拉框1": "女",
            "成员单选1": "56581f14f37f4c9a0152c6a6",
            "成员多选1": [
                "56581f14f37f4c9a0152c6a6"
            ],
            "部门单选1": "51d1177b964603db9e60a962",
            "部门多选1": [
                "51d1177b964603db9e60a962"
            ]

        }
    ]
}
  • 响应示例:
{
  "failed": null,
  "failedCode": 0,
  "success": 1
}

Python插件开发代码示例:

import bmcp

def subform_create_data(args: Args) -> Output:
    params = args.params

    # 获取传入参数
    appId = params.get("appId", "")
    formId = params.get("formId", "")
    dataId = params.get("dataId", "")
    sub = params.get("sub", "")

    # api参数
    ret = {
        "appId": appId,
        "formId": formId,
        "sub":sub,
        "dataId":dataId,
        "datas":[
                    {
                    "单行文本_子表单": "张三",
                    "多行文本1": "webapi",
                    "数字1": 8,
                    "日期时间1": "2019-01-01 11:11:11",
                    "单选按钮组1": "一年级",
                    "复选框组1": [
                        "选项1",
                        "选项2"
                    ],
                    "下拉框1": "女",
                    "成员单选1": "56581f14f37f4c9a0152c6a6",
                    "成员多选1": [
                        "56581f14f37f4c9a0152c6a6"
                    ],
                    "部门单选1": "51d1177b964603db9e60a962",
                    "部门多选1": [
                        "51d1177b964603db9e60a962"
                    ]

                }
            ]
        }

    result = bmcp.subform_create_data(ret)

    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

3.2 单条数据修改

python调用方法名: bmcp.subform_update_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
dataId string 是 数据id
sub string 是 子表单别名
datas Object Array 是 更新内容

响应结构:

字段名 类型 是否必填
code int 执行结果码,200代表成功,其他代表失败
total int 总共修改数据条数
success int 修改成功的数据条数

入参和响应示例:

  • 入参示例:
{
    "appId": "5d7b86502d5e2b3443587322",
    "formId": "c4b34a9c8cfe342244ff72d3",
    "sub":"子表单",
    "dataId":"5959407bb9a9990a62407c62",
    "datas":[
        {
            "单行文本_子表单": "张三",
            "多行文本1": "webapi",
            "数字1": 8,
            "日期时间1": "2019-01-01 11:11:11",
            "单选按钮组1": "一年级",
            "复选框组1": [
                "选项1",
                "选项2"
            ],
            "下拉框1": "女",
            "成员单选1": "56581f14f37f4c9a0152c6a6",
            "成员多选1": [
                "56581f14f37f4c9a0152c6a6"
            ],
            "部门单选1": "51d1177b964603db9e60a962",
            "部门多选1": [
                "51d1177b964603db9e60a962"
            ]

        }
    ]
}
  • 响应示例:
{
  "code": 200,
  "success": 1,
  "total": 1
}

Python插件开发代码示例:

import bmcp

def subform_update_data(args: Args) -> Output:
    params = args.params

    # 获取传入参数
    appId = params.get("appId", "")
    formId = params.get("formId", "")
    dataId = params.get("dataId", "")
    sub = params.get("sub", "")
    # api参数
    ret = {
        "appId": appId,
        "formId": formId,
        "sub":sub,
        "dataId":dataId,
        "filter":{
            "rel":"and",
            "cond":[
                {
                    "field":"单行文本1",
                    "method":"eq",
                    "value":"张三"
                }
            ]
        },
        "datas":{
                    "单行文本1": "张三",
                    "多行文本1": "webapi",
                    "数字1": 8,
                    "日期时间1": "2019-01-01 11:11:11",
                    "单选按钮组1": "一年级",
                    "复选框组1": [
                        "选项1",
                        "选项2"
                    ],
                    "下拉框1": "女",
                    "成员单选1": "56581f14f37f4c9a0152c6a6",
                    "成员多选1": [
                        "56581f14f37f4c9a0152c6a6"
                    ],
                    "部门单选1": "51d1177b964603db9e60a962",
                    "部门多选1": [
                        "51d1177b964603db9e60a962"
                    ]

                }
        }


    result = bmcp.subform_update_data(ret)

    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

3.3 单条数据删除

python调用方法名: bmcp.subform_delete_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
dataId string 是 数据id
sub string 是 子表单别名
filter Obejct 否 过滤条件
filter.rel string 是 筛选组合关系,and或or
filter.cond Object 是 过滤条件列表
filter.cond.field string 是 字段别名
filter.cond.method string 是 过滤方法
filter.cond.value string array 是 过滤值

响应结构:

字段名 类型 是否必填
code int 执行结果码,200代表成功,其他代表失败
msg string 结果描述

入参和响应示例:

  • 入参示例:
{
    "appId": "5d7b86502d5e2b3443587322",
    "formId": "4c3543a59a2084d648eac387",
    "dataId":"90984705b66ceafd69c06258",
    "sub":"子表单",
    "filter":{
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":"ewtewa"
            }
        ]
    }
}
  • 响应示例:
{
    "code": 200,
    "msg": "success"
}

Python插件开发代码示例:

import bmcp

# 具体字段类型和使用方式请参考MCP API文档
def subform_delete_data(args: Args) -> Output:
    # args.params内容为MCP配置的入参
    params = args.params

    params["appId"] = "5d7b86502d5e2b3443587322"
    params["formId"] = "4c3543a59a2084d648eac387"
    params["dataId"] = "90984705b66ceafd69c06258"
    params["sub"] = "子表单"
    params["filter"] = {
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":"ewtewa"
            }
        ]
    }

    result = bmcp.subform_delete_data(params)

    return Output(result)

3.4 批量数据新增

python调用方法名: bmcp.subform_batch_create_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
sub string 是 子表单别名
filter Obejct 否 过滤条件
filter Obejct 否 过滤条件
filter.rel string 是 筛选组合关系,and或or
filter.cond Object 是 过滤条件列表
filter.cond.field string 是 字段别名
filter.cond.method string 是 过滤方法
filter.cond.value string array 是 过滤值
datas Object Array 是 子表单数据

响应结构:

字段名 类型 是否必填
code int 执行结果码,200代表成功,其他代表失败
msg string 结果描述

入参和响应示例:

入参示例:

{
    "appId": "5d7b86502d5e2b3443587322",
    "formId": "c4b34a9c8cfe342244ff72d3",
    "filter":{
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":"ewtewa"
            }
        ]
    },
    "datas":[
        {
            "单行文本":"张三3001",
            "多行文本":"awq",
            "数字":"25",
            "多选框":["选项1", "选项2"]      
        },
        {
            "单行文本":"张三3001",
            "多行文本":"awq",
            "数字":"25",
            "多选框":["选项1", "选项2"]      
        }         
    ]
}
  • 响应示例:
{
    "code": 200,
    "msg": "success"
}

Python插件开发代码示例:

import bmcp

# 具体字段类型和使用方式请参考MCP API文档

def subform_batch_create_data(args: Args) -> Output:
    # args.params内容为MCP配置的入参
    params = args.params

    params["appId"] = "550606b07bcc60d41cd9b2de"
    params["formId"] = "5b97538e651451aef9317653"
    params["datas"] = [{"单行文本": "张三", "数字": 8}, {"单行文本": "李四", "数字": 10}]

    result = bmcp.subform_batch_create_data(params)
    return Output(result)

3.5 批量数据更新

python调用方法名: bmcp.subform_batch_update_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
sub string 是 子表单别名

响应结构:

字段名 类型 是否必填
code int 执行结果码,200代表成功,其他代表失败
total int 总数据量
success int 成功条数

入参和响应示例:

  • 入参示例:
{
    "appId": "5d7b86502d5e2b3443587322",
    "formId": "c4b34a9c8cfe342244ff72d3",
    "filter":{
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":"ewtewa"
            }
        ]
    },
    "datas":[
        {
            "单行文本":"张三3001",
            "多行文本":"awq",
            "数字":"25",
            "多选框":["选项1", "选项2"]      
        },
        {
            "单行文本":"张三3001",
            "多行文本":"awq",
            "数字":"25",
            "多选框":["选项1", "选项2"]      
        }         
    ]
}
  • 响应示例:
{
    "code": 200,
    "total": 1,
    "success": 1
}

Python插件开发代码示例:

import bmcp

# 具体字段类型和使用方式请参考MCP API文档

def subform_batch_update_data(args: Args) -> Output:
    # args.params内容为MCP配置的入参
    params = args.params

    params["appId"] = "550606b07bcc60d41cd9b2de"
    params["formId"] = "5b97538e651451aef9317653"
    params["sub"] = "子表单"
    params["filter"] = {"rel": "and", "cond": [{"field": "单行文本", "method": "eq", "value": "张三"}]}
    params["datas"] = [{"单行文本_子表单": "新值"}]

    result = bmcp.subform_batch_update_data(params)
    return Output(result)

3.6 批量数据删除

python调用方法名: bmcp.subform_batch_delete_data

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
sub string 是 子表单别名
filter Object 否 过滤条件
filter Obejct 否 过滤条件
filter.rel string 是 筛选组合关系,and或or
filter.cond Object 是 过滤条件列表
filter.cond.field string 是 字段别名
filter.cond.method string 是 过滤方法
filter.cond.value string array 是 过滤值

响应结构:

字段名 类型 是否必填
code int 执行结果码,200代表成功,其他代表失败
msg string 执行结果描述
total int 删除数据量

入参和响应示例:

  • 入参示例:
{
    "appId": "5d7b86502d5e2b3443587322",
    "formId": "c4b34a9c8cfe342244ff72d3",
    "filter":{
        "rel":"and",
        "cond":[
            {
                "field":"单行文本",
                "hasEmpty":False,
                "method":"like",
                "type":"text",
                "value":"ewtewa"
            }
        ]
    },
    "datas":[
        {
            "单行文本":"张三3001",
            "多行文本":"awq",
            "数字":"25",
            "多选框":["选项1", "选项2"]      
        },
        {
            "单行文本":"张三3001",
            "多行文本":"awq",
            "数字":"25",
            "多选框":["选项1", "选项2"]      
        }         
    ]
}
  • 响应示例:
{
    "code": 200,
    "msg": "success",
    "total": 1
}

Python插件开发代码示例:

import bmcp

# 具体字段类型和使用方式请参考MCP API文档

def subform_batch_delete_data(args: Args) -> Output:
    # args.params内容为MCP配置的入参
    params = args.params

    params["appId"] = "550606b07bcc60d41cd9b2de"
    params["formId"] = "5b97538e651451aef9317653"
    params["sub"] = "子表单"
    params["dataId"] = "7067493898b407dec4a5a754"
    params["filter"] = {"rel": "and", "cond": [{"field": "单行文本", "method": "eq", "value": "张三"}]}

    result = bmcp.subform_batch_delete_data(params)
    return Output(result)

4. 应用

4.1 应用列表

python调用方法名: bmcp.app_list

入参结构:

无

响应结构:

字段名 类型 是否必填 说明
items Object Array 是
items._id string 是 应用分组id
items.appcount int 是 应用数量
items.name string 是 分组名称
items.apps Object Array 是
apps._id string 是 应用id
apps.appStatus int 是 应用状态
apps.appType int 是 应用类型
apps.appname string 是 应用名称
apps.copyable boolean 是 是否可复制
apps.deletable boolean 是 是否可删除
apps.disable_export boolean 是 导出开关
apps.dock boolean 是 是否互联
apps.editable boolean 是 是否可编辑
apps.parent string 是 上级应用id
apps.style Object 是 样式
Style.color int 是
Style.icon int 是

入参和响应示例:

  • 入参示例:
{}
  • 响应示例:
{
    "items": [
        {
            "_id": "default",
            "appcount": 12,
            "apps": [
                {
                    "_id": "5d7b86502d5e2b3443587322",
                    "appStatus": 1,
                    "appType": 1,
                    "appname": "19111111111空白应用",
                    "copyable": True,
                    "deletable": True,
                    "disable_export": False,
                    "dock": False,
                    "editable": True,
                    "isFavorite": False,
                    "parent": "default",
                    "style": {
                        "color": 0,
                        "icon": 39
                    }
                }
            ],
            "name": "默认分组"
        }
    ]
}

Python插件开发代码示例:

import bmcp

def app_list(args: Args) -> Output:
    params = args.params

    result = bmcp.app_list(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

4.2 应用下的表单列表

python调用方法名: bmcp.app_list_entry

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id

响应结构:

字段名 类型 说明
form Object Array
form.appId string 应用id
form.entryId string 表单id
form.hasCoop boolean
form.icon int
form.name string 表单名称
form.type string 表单类型

入参和响应示例:

  • 入参示例:
{
    "appId":"5d7b86502d5e2b3443123456"
}
  • 响应示例:
{
    "form": [
        {
            "appId": "5d7b86502d5e2b3443587322",
            "entryId": "d2204444955b1762ec711aad",
            "hasCoop": true,
            "icon": 0,
            "name": "普通未命名表单",
            "type": "form"
        }
    ]
}

Python插件开发代码示例:

import bmcp

def app_list_entry(args: Args) -> Output:
    params = args.params

    result = bmcp.app_list_entry(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

4.3 表单基本信息

python调用方法名: bmcp.form_info

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id

响应结构:

字段名 类型 说明
formId string 表单id
hasCoop string
hasFlow string 是否流程
name boolean 表单名称
public Object
public.isPublic boolean
public.publicLink string
query Object
query.isPublic boolean
query.queryLink string
type string
widgets Object Array 字段数组

入参和响应示例:

  • 入参示例:
{
    "appId": "5d7b86502d5e2b3443587322",
    "formId": "c4b34a9c8cfe342244ff72d3"
}
  • 响应示例:
{
    "formId": "c4b34a9c8cfe342244ff72d3",
    "hasCoop": "1",
    "hasFlow": false,
    "name": "批量修改测试表单",
    "public": {
        "isPublic": false,
        "publicLink": ""
    },
    "query": {
        "isPublic": false,
        "queryLink": ""
    },
    "type": "form",
    "widgets": [
        {
            "isRequired": false,
            "name": "单行文本",
            "title": "单行文本",
            "type": "text",
            "widget": "_widget_1781660609616"
        },
        {
            "isRequired": false,
            "name": "多行文本",
            "title": "多行文本",
            "type": "textarea",
            "widget": "_widget_1781660609635"
        },
        {
            "isRequired": false,
            "name": "数字",
            "title": "数字",
            "type": "number",
            "widget": "_widget_1781660609652"
        },
        {
            "isRequired": false,
            "name": "日期时间",
            "title": "日期时间",
            "type": "datetime",
            "widget": "_widget_1781660609673"
        },
        {
            "isRequired": false,
            "name": "下拉框",
            "title": "下拉框",
            "type": "combo",
            "widget": "_widget_1781660609697"
        },
        {
            "isRequired": false,
            "name": "下拉复选框",
            "title": "下拉复选框",
            "type": "combocheck",
            "widget": "_widget_1781660609721"
        },
        {
            "isRequired": false,
            "name": "附件",
            "title": "附件",
            "type": "upload",
            "widget": "_widget_1784280381117"
        },
        {
            "isRequired": false,
            "name": "地址",
            "title": "地址",
            "type": "address",
            "widget": "_widget_1781660609744"
        },
        {
            "isRequired": false,
            "name": "定位",
            "title": "定位",
            "type": "location",
            "widget": "_widget_1781660609762"
        },
        {
            "name": "子表单1",
            "title": "子表单",
            "type": "subform",
            "widget": "_widget_1781660609782",
             "isRequired": false,
            "data": [
                {
                    "isRequired": false,
                    "name": "子表单_单行文本",
                    "title": "单行文本",
                    "type": "text",
                    "widget": "_widget_1781660609808"
                },
                {
                    "isRequired": false,
                    "name": "子表单_数字",
                    "title": "数字",
                    "type": "number",
                    "widget": "_widget_1781660609864"
                },
                {
                    "isRequired": false,
                    "name": "子表单_附件",
                    "title": "附件",
                    "type": "upload",
                    "widget": "_widget_1784115923634"
                },
                {
                    "isRequired": false,
                    "name": "子表单_多行文本",
                    "title": "多行文本",
                    "type": "textarea",
                    "widget": "_widget_1782264622605"
                },
                {
                    "isRequired": false,
                    "name": "子表单_地址",
                    "title": "地址",
                    "type": "address",
                    "widget": "_widget_1782264621532"
                },
                {
                    "isRequired": false,
                    "name": "子表单_图片",
                    "title": "图片",
                    "type": "image",
                    "widget": "_widget_1782264621587"
                },
                {
                    "isRequired": false,
                    "name": "子表单_下拉框",
                    "title": "下拉框",
                    "type": "combo",
                    "widget": "_widget_1782264621796"
                },
                {
                    "isRequired": false,
                    "name": "子表单_下拉复选框",
                    "title": "下拉复选框",
                    "type": "combocheck",
                    "widget": "_widget_1782264622252"
                },
                {
                    "isRequired": false,
                    "name": "子表单_复选框组",
                    "title": "复选框组",
                    "type": "checkboxgroup",
                    "widget": "_widget_1782264621861"
                },
                {
                    "isRequired": false,
                    "name": "子表单_成员单选",
                    "title": "成员单选",
                    "type": "user",
                    "widget": "_widget_1782264621946"
                },
                {
                    "isRequired": false,
                    "name": "子表单_日期",
                    "title": "日期时间",
                    "type": "datetime",
                    "widget": "_widget_1782264622516"
                },
                {
                    "isRequired": false,
                    "name": "子表单_成员多选",
                    "title": "成员多选",
                    "type": "usergroup",
                    "widget": "_widget_1782264622037"
                },
                {
                    "isRequired": false,
                    "name": "子表单_部门单选",
                    "title": "部门单选",
                    "type": "dept",
                    "widget": "_widget_1782264622105"
                },
                {
                    "isRequired": false,
                    "name": "子表单_部门多选",
                    "title": "部门多选",
                    "type": "deptgroup",
                    "widget": "_widget_1782264622178"
                }
            ]
        }
    ]
}

Python插件开发代码示例:

import bmcp

def form_info(args: Args) -> Output:
    params = args.params

    result = bmcp.form_info(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

5. 文件

5.1 文件上传-通过外部url

python调用方法名: bmcp.form_upload_file_url

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
datas Object Array 是 文件信息列表
datas.name string 是
datas.url string 是 必须是公网可以访问的地址

响应结构:

字段名 类型 说明
Object Array
_id string
mime string
name string
qnKey string
size int
url string

入参和响应示例:

  • 入参示例:
{
    "appId": "5d7b86502d5e2b3443587322",
    "formId": "c4b34a9c8cfe342244ff72d3",
    "datas":[
        {
            "name":"3654_1648113567.png",
            "url":"https://doc.testyun.com/upload/image/1/3654_1648113567.png"
        }
    ]
}
  • 响应示例:
[
    {
        "_id": "3ba04cdd8b85ac7e197dfcad",
        "mime": "image/png",
        "name": "3654_1648113567.png",
        "qnKey": "cc95a95a1b9137f63b2881a8ec1b1fbe",
        "size": 115224,
        "url": "https://qiniu-media.test.com/3654_1648113567.png?attname=3654_1648113567.png"
    }
]

Python插件开发代码示例:

import bmcp

def form_save_file(args: Args) -> Output:
    params = args.params

    result = bmcp.form_save_file(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

5.2 文件上传-直接上传文件内容

python调用方法名: bmcp.form_upload_file_content

入参结构:

字段名 类型 是否必填 说明
uid int 否 用户的uid, 未传该参数时默认获取当前操作者的,主要用于权限校验
appId string 是 应用id
formId string 是 表单id
datas Object Array 是 文件信息列表
datas.name string 是 文件名
datas.content string 是 文件内容,base64字符串

响应结构:

字段名 类型 说明
code int
msg string
data Object Array
data._id string 文档 ID
data.bucket string 存储桶名称
data.compressUrl string 压缩地址
data.downloadUrl string 下载地址
data.exifUrl string EXIF 信息地址
data.mime string 媒体类型
data.name string 名称
data.originalUrl string 原始文件地址
data.previewUrl string 预览地址
data.previewUrlMedium string 中等预览
data.qnKey string
data.size string 大小
data.thumbUrl string 缩略地址
data.thumbUrlMedium string
data.uploadTime string
data.uploader string

入参和响应示例:

  • 入参示例:
{
        "appId": "5d7b86502d5e2b3443587322",
        "formId": "c4b34a9c8cfe342244ff72d3",
        "datas":[
            {
                 "name":"test.json",
                 "content":"ewogICAgImFwcF9pZCI6ICI1YmZiNDIxMGVhZWZkNzkwMjM0ODBiM2EiLAogICAgImZvcm1faWQiOiAiNTU3OGRjZDA3ZTI0NzQ0NDllZTQ5OTlkIiwKICAgICJwbGF0Zm9ybSI6ICJkaW5ndGFsayIsCiAgICAidHlwZSI6IFsKICAgICAgICAiY3VzdG9tI
gogICAgXSwKICAgICJ1c2VyX2lkIjogIjhhY2Y0YTA4YWU1MzI2ZjY4ZDNkNDllMSIsCiAgICAiZGF0YSI6IHsKICAgICAgICAiY3VzdG9tIjogewogICAgICAgICAgICAidGVtcGxhdGUiOiB7CiAgICAgICAgICAgICAgICAidGVtcGxhdGVfaWQiOiAiIiwKICAgICAgICAgICAgICAgICJ0aXRsZSI6ICLlt7LliLDmj5DphpLml7bpl7TvvIzor7flj4rml7blpITnkIYiLAogICAgICAgICAgICAgICAgImNvbnRlbnQiOiAiIiwKICAgICAgICAgICAgICAgICJwYXJhbXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImtleXdvcmQxIjogIiR7Zm9ybU5hbWV9IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJrZXlzIjogewogICAgICAgICAgICAgICAgICAgICJrZXl3b3JkMSI6ICLooajljZXlkI3np7AiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIndpZGdldCI6IHt9LAogICAgICAgICAgICAgICAgImhhc0ZpbGVkIjogW10sCiAgICAgICAgICAgICAgICAicmVtYXJrIjogewogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICIiLAogICAgICAgICAgICAgICAgICAgICJjb2xvciI6ICIjZjU4MjIwIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9"
            }
        ]
}
  • 响应示例:
{
    "code": 200,
    "data": [
        {
            "_id": "d25a4d45a5f89d5a1e2eeb7e",
            "bucket": "file",
            "compressUrl": "https://qiniu-media.test.com/FhOxX4M_j196QmiQNlXrDSFp5Mvy?imageView2/2/q/75",
            "downloadUrl": "https://qiniu-media.test.com/FhOxX4M_j196QmiQNlXrDSFp5Mvy?attname=test.json",
            "exifUrl": "https://qiniu-media.test.com/FhOxX4M_j196QmiQNlXrDSFp5Mvy?exif",
            "mime": "application/json",
            "name": "test.json",
            "originalUrl": "https://qiniu-media.test.com/FhOxX4M_j196QmiQNlXrDSFp5Mvy",
            "previewUrl": "https://qiniu-media.test.com/FhOxX4M_j196QmiQNlXrDSFp5Mvy?imageView2/2/w/1200/h/1200",
            "previewUrlMedium": "https://qiniu-media.test.com/FhOxX4M_j196QmiQNlXrDSFp5Mvy?imageView2/2/w/450/h/450",
            "qnKey": "FhOxX4M_j196QmiQNlXrDSFp5Mvy",
            "size": 783,
            "thumbUrl": "https://qiniu-media.test.com/FhOxX4M_j196QmiQNlXrDSFp5Mvy?imageView2/2/w/32/h/32",
            "thumbUrlMedium": "https://qiniu-media.test.com/FhOxX4M_j196QmiQNlXrDSFp5Mvy?imageView2/2/w/65/h/65",
            "uploadTime": "2026-07-25T10:06:47Z",
            "uploader": "532c5cefac39aa2d6d1ae963"
        }
    ],
    "msg": "操作成功",
    "requestId": "7df0a56287cd11f1a2d002420a0001d1"
}

Python插件开发代码示例:

import bmcp

def form_upload_file(args: Args) -> Output:
    params = args.params

    result = bmcp.form_upload_file(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

6. 聚合表操作

6.1 查询聚合表输出字段

python调用方法名: bmcp.aggregatetable_fields

入参结构:

字段名 类型 是否必填 说明
appId string 是 应用id
formId string 是 表单id

响应结构:

字段名 类型 说明
Object Array
aliasName string 字段别名
name string 字段名
text string 字段标签
type string 字段类型

入参和响应示例:

  • 入参示例:
{
    "appId": "52b64298390f3f180f0c7cff",
    "formId": "52d348d08c69a33b793c3adf"
}
  • 响应示例:
[
    {
        "aliasName": "单行文本1",
        "name": "_widget_1787206276222",
        "text": "单行文本",
        "type": "text"
    },
    {
        "name": "_widget_1787206276231",
        "text": "公式",
        "type": "number"
    }
]

Python插件开发代码示例:

import bmcp

def aggregatetable_fields(args: Args) -> Output:
    params = args.params
    params["appId"] = "52b64298390f3f180f0c7cff",
    params["formId"] = "52d348d08c69a33b793c3adf"

    result = bmcp.aggregatetable_fields(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

6.2 查询聚合表数据

python调用方法名: bmcp.aggregatetable_data_list

入参结构:

字段名 类型 是否必填 说明
appId string 是 应用id
formId string 是 表单id
fields Object Array
fields.aliasName string 字段别名
fields.name string 字段名
fields.text string 字段标签
fields.type string 字段类型
filter Object 否 筛选条件,同表单

响应结构:

字段名 类型 说明
count int 总数据量
data Object Array 动态表单数据

入参和响应示例:

  • 入参示例:
{
    "appId":"52b64298390f3f180f0c7cff",
    "entryId":"52d348d08c69a33b793c3adf",
    "fields":[
        {
            "aliasName": "单行文本1",
            "name": "_widget_1787206276222",
            "text": "单行文本",
            "type": "text"
        },
        {
            "name": "_widget_1787206276231",
            "text": "公式",
            "type": "number"
        }
    ]
}
  • 响应示例:
{
      "count": 9,
        "data": [
            {
                "_id": "2b0baee9d279d34fa1dfd71a",
                "_widget_1787206276222": "11111",
                "_widget_1787206276231": 0
            },
            {
                "_id": "2e343a47b2741a347a45ec72",
                "_widget_1787206276222": "23tgfwge",
                "_widget_1787206276231": 0
            },
            {
                "_id": "202a05c6e278d3e19afaca4f",
                "_widget_1787206276222": "qqqqqqq",
                "_widget_1787206276231": 0
            },
            {
                "_id": "2111ff4bb69b12801063ed85",
                "_widget_1787206276222": "revoke",
                "_widget_1787206276231": 10
            },
            {
                "_id": "22d02e669731cbade6a64b58",
                "_widget_1787206276222": "sssss",
                "_widget_1787206276231": 20
            },
            {
                "_id": "2fa820cc1ad39a4e99283e9f",
                "_widget_1787206276222": "test001",
                "_widget_1787206276231": 40
            },
            {
                "_id": "2bcc720f2981d1a68dbd66ff",
                "_widget_1787206276222": "tttttt",
                "_widget_1787206276231": 20
            },
            {
                "_id": "220c6bbf3e1cdc639cea81c8",
                "_widget_1787206276222": "wgwgewg",
                "_widget_1787206276231": 20
            },
            {
                "_id": "294e7d712742adbbb7a73a1d",
                "_widget_1787206276222": "yyyyyy",
                "_widget_1787206276231": 0
            }
        ]
}

Python插件开发代码示例:

import bmcp

def aggregatetable_data_list(args: Args) -> Output:
    params = args.params

    result = bmcp.aggregatetable_data_list(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

6.3 查询聚合表数据总数

python调用方法名: bmcp.aggregatetable_data_count

入参结构:

字段名 类型 是否必填 说明
appId string 是 应用id
formId string 是 表单id
fields Object Array
fields.aliasName string 字段别名
fields.name string 字段名
fields.text string 字段标签
fields.type string 字段类型

响应结构:

字段名 类型 说明
count int 数据量

入参和响应示例:

  • 入参示例:
{
    "appId":"52b64298390f3f180f0c7cff",
    "entryId":"52d348d08c69a33b793c3adf",
    "fields":[
        {
            "aliasName": "单行文本1",
            "name": "_widget_1787206276222",
            "text": "单行文本",
            "type": "text"
        },
        {
            "name": "_widget_1787206276231",
            "text": "公式",
            "type": "number"
        }
    ]
}
  • 响应示例:
{
    "count": 9
}

Python插件开发代码示例:

import bmcp

def aggregatetable_data_count(args: Args) -> Output:
    params = args.params
    params["appId"] = "52b64298390f3f180f0c7cff"
    params["entryId"] = "52d348d08c69a33b793c3adf"

    result = bmcp.aggregatetable_data_count(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

7 数据视图操作

7.1 查询视图输出字段

python调用方法名: bmcp.etl_fields

入参结构:

字段名 类型 是否必填 说明
appId string 是 应用id
formId string 是 输出表id

响应结构:

字段名 类型 说明
Object Array
alias string 字段别名
name string 字段名
text string 字段标签
type string 字段类型

入参和响应示例:

入参示例:

{
    "appId": "52b64298390f3f180f0c7cff",
    "formId": "553c4406aad3a90877e87c67"
}

响应示例:

[
    {
        "name": "_widget_1789010599126",
        "text": "单行文本",
        "type": "text"
    },
    {
        "name": "_widget_1789010599127",
        "text": "成员单选",
        "type": "user"
    },
    {
        "name": "_widget_1789010599128",
        "text": "成员多选",
        "type": "usergroup"
    },
    {
        "name": "_widget_1789010599129",
        "text": "部门单选",
        "type": "dept"
    },
    {
        "name": "_widget_1789010599130",
        "text": "提交人",
        "type": "user"
    },
    {
        "format": "yyyy-MM-dd HH:mm:ss",
        "name": "_widget_1789010599131",
        "text": "提交时间",
        "type": "datetime"
    },
    {
        "name": "_widget_1789010599132",
        "text": "更新时间",
        "type": "datetime"
    },
    {
        "name": "_widget_1789010599133",
        "text": "单行文本",
        "type": "text"
    },
    {
        "name": "_widget_1789010599134",
        "text": "数字",
        "type": "number"
    }
]

Python插件开发代码示例:

import bmcp

def etl_fields(args: Args) -> Output:
    params = args.params
    params["appId"] = "52b64298390f3f180f0c7cff",
    params["formId"] = "553c4406aad3a90877e87c67"

    result = bmcp.etl_fields(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

7.2 查询视图数据总量

python调用方法名: bmcp.etl_count

入参结构:

字段名 类型 是否必填 说明
appId string 是 应用id
formId string 是 输出表id
filter object 否
filter.rel string 是 筛选组合关系,and或or
filter.cond Object 是 过滤条件列表
filter.cond.field string 是 字段别名
filter.cond.method string 是 过滤方法
filter.cond.value string array 是 过滤值

响应结构:

字段名 类型 说明
count int 总数据量

入参和响应示例:

入参示例:

{
    "appId":"52b64298390f3f180f0c7cff",
    "entryId":"553c4406aad3a90877e87c67"
}

响应示例:

{
    "count": 2
}

Python插件开发代码示例:

import bmcp

def etl_count(args: Args) -> Output:
    params = args.params
    params["appId"] = "52b64298390f3f180f0c7cff",
    params["formId"] = "553c4406aad3a90877e87c67"

    result = bmcp.etl_count(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)

7.3 查询视图数据

python调用方法名: bmcp.etl_data

入参结构:

字段名 类型 是否必填 说明
appId string 是 应用id
formId string 是 输出表id
fields string array 否 查询字段,不填查所有
limit int64 否 返回条数
skip int64 否
filter object 否
filter.rel string 是 筛选组合关系,and或or
filter.cond Object 是 过滤条件列表
filter.cond.field string 是 字段别名
filter.cond.method string 是 过滤方法
filter.cond.value string array 是 过滤值

响应结构:

字段名 类型 说明
count Number 符合的数据条数
data Object Array 返回数据

入参和响应示例:

入参示例:

{
    "appId":"52b64298390f3f180f0c7cff",
    "entryId":"553c4406aad3a90877e87c67",
    "filter":{
        "rel":"and",
        "cond":[
            {
                "method":"like",
                "field":"单行文本",
                "value":["qqq"]
            }
        ]
    }
}

响应示例:

{
    "count": 1,
    "data": [
        {
            "_id": "6aa222eed1df0082ef0000a1",
            "单行文本": "qqqq",
            "_widget_1789010599127": {
                "_id": "57485153a936aad06de22096",
                "mode": "member",
                "nickname": "tt002",
                "status": 2
            },
            "_widget_1789010599128": [
                {
                    "_id": "57485153a936aad06de22096",
                    "mode": "member",
                    "name": "tt002",
                    "status": 2
                },
                {
                    "_id": "5ae92dc398a45b0cb8c9147c",
                    "mode": "member",
                    "name": "测试002测试  哈",
                    "status": 2
                }
            ],
            "_widget_1789010599129": {
                "_id": "550606b07bcc60d41cd9b2de",
                "mode": "dept",
                "nickname": "test001",
                "status": 1
            },
            "_widget_1789010599130": {
                "_id": "811247269405fd91a1da8e24",
                "mode": "member",
                "nickname": "通讯录重构一",
                "status": 0
            },
            "_widget_1789010599131": "2026-08-22T19:37:08Z",
            "_widget_1789010599132": "2026-08-22T19:37:08Z",
            "_widget_1789010599133": "yyyy",
            "_widget_1789010599134": "22",
            "_widget_1789010599135": "9f5d4c4e8ff611cf4cdab800"
        }
    ]
}

Python插件开发代码示例:

import bmcp

def etl_data(args: Args) -> Output:
    params = args.params
    params["appId"] = "52b64298390f3f180f0c7cff"
    params["entryId"] = "52d348d08c69a33b793c3adf"
    params["filter"] = {
        "rel":"and",
        "cond":[
            {
                "method":"like",
                "field":"单行文本",
                "value":["qqq"]
            }
        ]
    }

    result = bmcp.etl_data(params)
    # 如果必须返回 Output 类型实例,可以强制转换,否则直接返回 dict 也可被接受
    return Output(result)
最新修改于:2026-09-15