蓝鲸配置平台(bk-cmdb)批量创建项目接口 batch_create_project 实战指南
后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载本篇以 docs/apidoc/apigw/open/en/batch_create_project.md 为核心结合 bk-cmdb 源码完整讲解通过 API 网关批量创建项目Project的请求参数、枚举取值、调用示例与底层实现原理。读完可掌握POST /api/v3/createmany/project的完整调用姿势、字段约束如 200 条上限、32 位 UUID 规则、响应结构ids 与请求顺序一致并能从源码层面理解其事务、审计与权限注册机制。一、接口概览适用版本与权限要求batch_create_project批量创建项目是 bk-cmdb 通过蓝鲸 API 网关APIGateway对外暴露的 Open API用于一次性创建多个项目实例。接口路径POST /api/v3/createmany/project对外网关路径拓扑服务内部路由为POST /createmany/project见 service_initfunc.go最低版本v3.10.23原文档明确标注所需权限项目创建权限Project creation permission支持协议JSON over HTTP POST该接口在 API 网关资源定义文件 bk_apigw_resources_bk-cmdb.yaml 中声明operationId为batch_create_project后端直连post /api/v3/createmany/project并配置了默认限流bk-rate-limit__default每 1 秒 100 个 token。二、请求参数详解请求体为一个 JSON 对象仅包含一个必填字段dataNameTypeRequiredDescriptiondataarray是项目数组单次最多创建 200 个data上限 200 在源码中得到印证toposerver.go 中CreateProjectOption.Validate()使用common.BKWriteOpLimit校验该常量定义在 definitions.go// BKWriteOpLimit default write operation limit BKWriteOpLimit 200超出上限会返回CCErrCommXXExceedLimit超出数量限制错误。data 数组元素字段每个数组元素代表一个待创建的项目字段如下NameTypeRequiredDescriptionbk_project_idstring否项目 ID。若传入必须是32 位、不含连字符的 UUID若不传系统自动生成bk_project_namestring是项目名称bk_project_codestring是项目英文名编码bk_project_descstring否项目描述bk_project_typeenum否项目类型默认值otherbk_project_sec_lvlenum否保密级别默认值publicbk_project_ownerstring是项目负责人bk_project_teamarray否所属团队bk_project_iconstring否项目图标图片 URL字段名与类型均可在 definitions.go 中找到对应常量定义BKProjectIDField、BKProjectNameField等说明这些字段是 project 模型的内置属性。必填字段说明从字段属性定义add_project.go可以看出模型的属性约束bk_project_name、bk_project_code、bk_project_owner、bk_project_type在模型层面均为IsRequired: true与 API 文档的必填标注一致bk_project_name、bk_project_code还带有IsOnly: true唯一约束对应 MongoDB 中的唯一索引bk_project_owner属性类型为FieldTypeUser且IsMultiple: true即负责人为用户类型字段可多选bk_project_team为FieldTypeOrganization组织架构类型IsMultiple: true即所属团队可传多个。三、枚举字段取值与默认值bk_project_type项目类型枚举定义位于 add_project.go枚举值含义mobile_game手游pc_game端游web_game页游platform_prod平台产品support_prod支撑产品other其他默认值IsDefault: truebk_project_sec_lvl保密级别枚举定义位于 add_project.go枚举值含义public公开默认值IsDefault: trueprivate私有classified机密补充项目状态字段项目模型还包含bk_project_status枚举enable启用disabled未启用默认enable由系统维护创建时可不必显式传入。四、请求示例可直接复制运行原文档给出的完整请求体如下{ data: [ { bk_project_id: 21bf9ef9be7c4d38a1d1f2uc0b44a8f2, bk_project_name: test, bk_project_code: test, bk_project_desc: test project, bk_project_type: mobile_game, bk_project_sec_lvl: public, bk_project_owner: admin, bk_project_team: [1, 2], bk_project_icon: https://127.0.0.1/file/png/11111 } ] }使用要点bk_project_id示例为 32 位字符串无连字符传入时必须符合该格式否则校验失败bk_project_team传的是组织团队ID 数组单元素数组同样适用数组内可放多个项目对象实现批量创建。五、响应示例与字段说明原文档给出的成功响应{ result: true, code: 0, message: success, permission: null, data: { ids: [1] } }响应参数总表NameTypeDescriptionresultbool请求是否成功。true成功false失败codeint错误码。0 表示成功0 表示失败错误messagestring请求失败时返回的错误信息permissionobject权限信息dataobject请求返回的数据data.idsNameTypeDescriptionidsarray项目在 CMDB 中的唯一标识ID数组关键注意点原文档明确提示返回的ids数组顺序与请求参数data数组顺序一一对应。这意味着批量创建后可以按下标直接关联请求的第 N 个项目 ↔ 返回的第 N 个 ID便于后续回填和二次操作如更新、删除。响应结构在源码中对应metadata.ProjectDataResp{IDs []int64}见 toposerver.go接口处理器返回ctx.RespEntity(metadata.ProjectDataResp{IDs: ids})project.go。六、底层实现原理从网关到存储的完整调用链1. 路由注册拓扑服务topo_server在启动时注册路由service_initfunc.goutility.AddHandler(rest.Action{Verb: http.MethodPost, Path: /createmany/project, Handler: s.CreateProject})2. 服务层处理器CreateProject处理器project.go的执行流程将请求体反序列化为metadata.CreateProjectOption调用opt.Validate()校验data非空、条数 ≤ 200在**数据库事务AutoRunTxn**中调用ProjectOperation().CreateProject返回ProjectDataResp{IDs: ids}。整个创建过程被事务包裹任一项目创建失败会整体回滚保证批量创建的原子性。3. 逻辑层ID 生成、批量入库、审计与 IAM 注册核心逻辑在 logics/inst/project.goID 自动生成遍历data若某元素未传bk_project_id则调用uuid.New()生成 UUID 并去掉连字符strings.Replace(uuid.New().String(), -, , -1)这与文档32 位无连字符 UUID不传则系统自动生成完全对应批量入库构造metadata.BatchCreateModelInstOption调用CoreService().Instance().BatchCreateInstance目标模型为common.BKInnerObjIDProject即项目作为 CMDB 的一个内置模型实例存储数量一致性校验若返回的resp.IDs数量与data数量不一致直接报错the number of project creation is inconsistent审计日志为每个创建的项目生成AuditCreate审计日志并保存IAM 权限注册若系统启用了鉴权auth.EnableAuthorize()会把新项目批量注册到 IAM 资源创建者动作中BatchRegisterResourceCreatorAction将创建者与项目实例关联。4. SDK 封装Go SDK 侧封装为instanceClient.CreateProjectapimachinery/toposerver/inst/project.go请求POST /createmany/project把CreateProjectOption序列化为请求体并解析ProjectInstResp响应供 CMDB 内部及测试代码直接调用。七、约束与限制总结数量限制单次data数组最多 200 条BKWriteOpLimit 200超出报超出限制错误ID 格式bk_project_id若传入必须是 32 位无连字符 UUID不传则由系统基于uuid.New()自动生成唯一性约束bk_project_id、bk_project_name、bk_project_code在 MongoDB 中均有唯一索引collections/project.go重复创建同名/同编码项目会触发唯一索引冲突顺序对应响应ids与请求data顺序一致可按位回填事务性批量创建在单事务内完成失败整体回滚鉴权需要项目创建权限启用 IAM 后还会将创建者注册为新项目资源的所有者。八、测试验证参考仓库内置的集成测试 src/test/topo_server/project_test.go 给出了完整可参考的创建用例涵盖显式传入bk_project_id与不传bk_project_id由系统生成两种场景批量创建两个项目后断言IDs[0]、IDs[1]后续的更新改bk_project_status为disabled、查询filter 分页 count、删除按ids批量删除操作闭环。测试代码可直接作为调用该接口的最小可用示例参考验证了请求字段组织方式与响应解析方式。九、相关接口延伸项目生命周期还包含配套接口见 service_initfunc.go 与 apimachinery/toposerver/inst/project.goPUT /api/v3/updatemany/projectbatch_update_project按ids批量更新项目POST /api/v3/findmany/projectlist_project按 filter 查询项目列表DELETE /api/v3/deletemany/projectbatch_delete_project按ids批量删除项目PUT /api/v3/update/project/bk_project_id更新项目bk_project_id为 BCS 项目数据迁移专用的内部接口其他平台不可使用。创建后建议通过list_project或ids回查确认项目已生效再进行后续的更新、关联等操作。赞分享后端企业应用运维【免费下载链接】bk-cmdb蓝鲸智云配置平台(BlueKing CMDB)项目地址https://gitcode.com/gh_mirrors/bk/bk-cmdb点击查看免费下载相关推荐蓝鲸配置平台bk-cmdb批量更新 Kubernetes Workload 接口实战指南蓝鲸配置平台bk cmdb批量更新 Kubernetes Workload 接口实战指南 导读 本文围绕 bk cmdb蓝鲸智云配置平台API 网关提供后端企业应用运维蓝鲸智云配置平台bk-cmdb批量创建容器节点接口 batch_create_kube_node 实战指南蓝鲸智云配置平台bk cmdb批量创建容器节点接口 batch_create_kube_node 实战指南 本文是蓝鲸智云配置平台BlueKing CMD后端企业应用运维蓝鲸配置平台 bk-cmdb 批量删除 Kubernetes Workload 接口batch_delete_kube_workload实战指南蓝鲸配置平台 bk cmdb 批量删除 Kubernetes Workload 接口batch_delete_kube_workload实战指南 本篇技术指后端企业应用运维上一篇揭秘gdbgui代码高亮技术从语法解析到智能着色的完整实现下一篇Item-NBT-API源码解析NBTCompoundList与集合数据处理原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

浏览器里剪视频成真了:FilmCraft Web 版架构全拆解(WebCodecs + OPFS)

浏览器里剪视频成真了:FilmCraft Web 版架构全拆解(WebCodecs + OPFS)

浏览器里剪视频成真了:FilmCraft Web 版架构全拆解(WebCodecs OPFS) 【免费下载链接】filmcraft An open-source, clean-room reimplementation of Adobe Premiere Pro built in pure Rust. 项目地址: https://gitcode.com/gh_mirrors/fi/…

2026/10/12 1:36:52 阅读更多 →
指针模块总结

指针模块总结

1.指针的认识和应用int val 0 char* a &val; char* *b &a; //指针就是取地址,分指针等级 char* pa,pb; //pa是char* pb是char char* pa,*pb; //pa pb都是char* typedef; 是对变量进行重命名 // typedef char* PChar PChar pa,pb char* pa,*pb 变量名升…

2026/10/12 1:35:51 阅读更多 →
C++命名空间完全指南:从符号冲突原理到工程级排查方案

C++命名空间完全指南:从符号冲突原理到工程级排查方案

我印象很深的一个 Bug:项目里一个工具函数 find_max,代码逻辑没有任何问题,但编译时却撞上了另一个第三方库里的 find_max,编译器直接甩出一屏 ambiguous、multiple definition 的报错。这类 C 代码冲突问题,在老项目中…

2026/10/12 1:35:51 阅读更多 →

最新新闻

【大数据毕设项目】基于K-Means的低能见度事件预测模型与可视化分析系统\基于数据挖掘的站间同步低能现象分析与可视化研究

【大数据毕设项目】基于K-Means的低能见度事件预测模型与可视化分析系统\基于数据挖掘的站间同步低能现象分析与可视化研究

文章目录 一、项目开发背景意义 二、项目开发技术 三、项目开发内容 四、项目展示 五、项目相关代码 六、最后 一、项目开发背景意义 随着气象监测技术的快速发展,气象领域积累了海量的多源观测数据。低能见度事件对航海、航空以及陆地交通的安全运行构成严重…

2026/10/12 2:25:23 阅读更多 →
【C++ 入门】从 C 过渡到 C++:基础语法与核心特性入门

【C++ 入门】从 C 过渡到 C++:基础语法与核心特性入门

目录 1.C的第一个程序 2.命名空间namespace 一、为什么有namespace ​二、namespace的特性 特性1:命名空间可以拆分,追加定义 特性2:命名空间可以嵌套 特性3:匿名命名空间(无名字namespace) 特性4&…

2026/10/12 2:25:23 阅读更多 →
题解:洛谷 P10112 [GESP202312 八级] 奖品分配

题解:洛谷 P10112 [GESP202312 八级] 奖品分配

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

2026/10/12 2:25:23 阅读更多 →
如何把 Windows 11 任务栏移到左侧(官方快捷方法)

如何把 Windows 11 任务栏移到左侧(官方快捷方法)

Windows 11 面世已久,早已融入百万用户的日常,帮他们打理各种计算需求;只不过它重新设计的任务栏图标把开始菜单摆到了正中间,打破了 Windows 延续 25 年的传统。如果你想把任务栏挪回左侧、放回它该在的地方,好消息是:微软内置了一个官方设置,改起来大约 15 秒。 不过…

2026/10/12 2:25:22 阅读更多 →
题解:洛谷 P1118 [USACO06FEB] Backward Digit Sums G/S

题解:洛谷 P1118 [USACO06FEB] Backward Digit Sums G/S

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

2026/10/12 2:25:22 阅读更多 →
【深度学习新浪潮】Meta Muse 智能体:它是什么?有哪些特点?为什么突然火了?

【深度学习新浪潮】Meta Muse 智能体:它是什么?有哪些特点?为什么突然火了?

1. 引言 近期,Meta Muse 智能体在 AI 领域引发广泛关注,开发者、创作者与科技从业者纷纷展开讨论。许多初次接触者不禁疑惑:这是 Meta 推出的又一款大模型?抑或仅是蹭热度的 AI 玩具? 事实并非如此。Meta Muse 是 Meta 在 AI 智能体方向的一次战略性布局,它并非简单的对…

2026/10/12 2:24:22 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →