---
title: "新增产品"
method: POST
path: "/api/v1/things/product/info/create"
tags: ["things/product/info", "thingsProductInfo"]
---

# 新增产品

`POST /api/v1/things/product/info/create`

## Request body

- ProductInfo
  - `authMode` integer — 认证方式:1:账密认证,2:秘钥认证
  - `autoRegister` integer — 动态注册:1:关闭,2:打开,3:打开并自动创建设备,4:在前面的基础上绑定没有也自动创建
  - `bindLevel` integer — 绑定级别: 1:强绑定(默认,只有用户解绑之后才能绑定) 2:中绑定(可以通过token强制解绑设备) 3:弱绑定(app可以内部解绑被绑定的设备)
  - `category` ProductCategory
    - `children` ProductCategory[]
    - `desc` string — 描述
    - `deviceCount` integer — 设备数量
    - `headImg` string — 用户头像
    - `id` integer
    - `idPath` integer[] — 只读
    - `isLeaf` integer
    - `isUpdateHeadImg` boolean — 用户头像
    - `name` string
    - `order` integer — 排序,必须大于等于1,为0代表不修改
    - `parentID` integer
  - `categoryID` integer — 产品品类
  - `config` ProductConfig
    - `devInit` DevInit
      - `areaID` string — 设备创建默认分配给的区域ID
      - `deptID` string — 设备创建默认分配给的部门
      - `projectID` string — 设备创建默认分配给的项目
      - `tenantCode` string — 设备创建默认分配给的租户
    - `productID` string, required
  - `createdTime` string — 创建时间 只读
  - `customUi` object — 自定义ui,key是端的类型(web-client mini-client) value是以下类型的对象{version:123(版本号,只读),isUpdateUi:bool(是否更新ui),path:string(前端路径,如果需要修改,需要将isUpdateUi置为true并在这个参数中传入压缩包的filePath)}
  - `desc` string — 描述
  - `deviceSchemaMode` integer — 设备物模型模式:1:手动创建,2:设备自动创建 3: 设备自动创建及上报无定义自动创建 4: 设备自动创建及上报无定义自动创建(数字类型只使用浮点)
  - `deviceType` integer — 设备类型:1:直连设备,2:网关,3:子设备,4:监控设备
  - `isUpdateProductImg` boolean — 只有这个参数为true的时候才会更新产品图片,传参为产品图片的file path
  - `netType` integer — 通讯方式:1:其他,2:wi-fi,3:2G/3G/4G,4:5G,5:BLE,6:LoRaWAN,7:wifi+ble,8:有线网,9:4G+BLE
  - `onlineHandle` integer — 在线处理:1: 自动 2: 永远在线
  - `productID` string — 产品id 只读
  - `productImg` string — 产品图片
  - `productName` string — 产品名称
  - `protocol` ProtocolInfo
    - `code` string — iThings,iThings-thingsboard,wumei,aliyun,huaweiyun,tuya
    - `configFields` ProtocolConfigField[] — 配置字段列表,没有可以不传
      - `group` string, required
      - `id` integer, required
      - `isRequired` boolean, required
      - `key` string, required
      - `label` string, required
      - `sort` integer, required
    - `configInfos` ProtocolConfigInfo[] — 配置列表
      - `config` object, required
      - `desc` string, required
      - `id` integer, required
    - `desc` string
    - `deviceFields` ProtocolConfigField[] — 设备级的配置字段列表,没有可以不传
      - `group` string, required
      - `id` integer, required
      - `isRequired` boolean, required
      - `key` string, required
      - `label` string, required
      - `sort` integer, required
    - `endpoints` string[]
    - `etcdKey` string
    - `id` integer
    - `isEnableSyncDevice` integer, required — 是否支持主动同步设备信息
    - `isEnableSyncProduct` integer, required — 是否支持主动同步产品信息
    - `name` string
    - `productFields` ProtocolConfigField[] — 产品级的配置字段列表,没有可以不传
      - `group` string, required
      - `id` integer, required
      - `isRequired` boolean, required
      - `key` string, required
      - `label` string, required
      - `sort` integer, required
    - `transProtocol` string — 传输协议: mqtt,tcp,udp
    - `type` string — 协议类型: 普通设备(默认):normal 音视频:media
  - `protocolCode` string — 协议code,默认urMqtt,设备下发只会发送给主协议 urMqtt,urHttp,wumei,aliyun,huaweiyun,tuya
  - `protocolConf` Tag[] — 协议配置
    - `key` string, required
    - `value` string, required
  - `sceneMode` string — 场景模式 读写类型: r(只读) rw(可读可写) none(不参与场景)
  - `secret` string — 动态注册产品秘钥 只读
  - `status` integer — 产品状态 1:启用 2:禁用 3:开发中
  - `subDeviceOnlineHandle` integer — 子设备在线处理:1:自动(跟随网关下线) 2:独立(不跟随)
  - `subProtocolCode` string — 子协议,主协议和子协议传输类型必须不相同, 设备控制下发只会发送给主协议, 当设备是音视频设备但是控制协议需要单独走的时候就可以把主协议定义为普通协议,子协议定义为音视频协议,这样就能实现音视频走音视频协议,控制走子协议
  - `subProtocolConf` Tag[] — 子协议协议配置
    - `key` string, required
    - `value` string, required
  - `tags` Tag[] — 产品tag
    - `key` string, required
    - `value` string, required
  - `tenantCode` string — 租户号,common 为公共的产品,公共的大家都可以看,但是只有default可以修改
  - `trialTime` string — 试用时间(单位为天,为0不限制)

## Response `200`

A successful response.

- object
  - `code` integer
  - `data` ProductID
    - `productID` string, required — 产品id 只读
  - `msg` string

## Changes

- **2026-06-11** `d9bde20b898b` — 1 info
  - added the new optional request property `subDeviceOnlineHandle`
- **2026-03-27** `b9582d0ab6af` — 1 breaking, 1 info
  - added required request body
  - added the media type `application/json` for the response with the status `200`
- **2025-03-14** `e87dbcac5d9e` — 2 breaking
  - removed the request body
  - removed the media type `application/json` for the response with the status `200`

[Change history](https://skmtc.dev/unitedrhino/apis/things-api/changes/api/v1/things/product/info/create/post.md)

---

[API](https://skmtc.dev/unitedrhino/apis/things-api.md) · [All operations](https://skmtc.dev/unitedrhino/apis/things-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/unitedrhino/things-api/revisions/f3bdeb916389/schema)
