
# 上传单个kv
#### 功能介绍
指定表，新建kv或覆盖已有kv，且满足表的key schema描述；允许指定条件执行。
#### URI
POST /v1/put-kv
表1Query参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                   |
|:---|:---|:---|:---|
| store_name | 否    | String | 仓名，全域唯一，不同租户的仓名不能相同。 - 格式：${prefix}-${region-code}-${account-id}，其中prefix为自定义前缀，region-code为kvs集群所在的区域代码，account-id为用户的账户id - 取值字符限制：\[a-z0-9-\]+ - 长度：\[16,52\] 说明： "-"不能出现在名字头部或尾部 |
#### 请求参数
表2请求Body参数 
| 参数                   | 是否必选 | 参数类型                                                                | 描述                                             |
|:---|:---|:---|:---|
| table_name           | 是    | String                                                              | 表名，仓内唯一。 - 长度：\[3, 52\] - 取值字符限制：\[a-z0-9_-\]+ |
| condition_expression | 否    | [condition_expression] object | 条件表达式，参见conditional小节。 - 长度：\[8,4096\]         |
| kv_doc               | 否    | Document                                                            | 用户文档。                                          |
   
 表3condition_expression 
| 参数                      | 是否必选 | 参数类型                                                                      | 描述                   |
|:---|:---|:---|:---|
| single_field_expression | 否    | [single_field_expression] object | 单字段条件。               |
| multi_field_expression  | 否    | [multi_field_expression] object   | 多字段条件，多个相同优先级的单字段条件。 |
| composed_expression     | 否    | [composed_expression] object         | 组合条件, 逐层同级的子表达式嵌套。   |
   
 表4composed_expression 
| 参数          | 是否必选 | 参数类型                                                      | 描述                             |
|:---|:---|:---|:---|
| logic       | 否    | String                                                    | 逻辑关系，取值如"$and", "$or", "$nor"。 |
| expressions | 是    | Array of [expression] objects | 多个相同优先级且相同逻辑的单字段或多字段条件。        |
   
 表5expression 
| 参数                      | 是否必选 | 参数类型                                                                      | 描述                   |
|:---|:---|:---|:---|
| single_field_expression | 否    | [single_field_expression] object | 单字段条件。               |
| multi_field_expression  | 否    | [multi_field_expression] object   | 多字段条件，多个相同优先级的单字段条件。 |
| composed_expression     | 否    | [composed_expression] object         | 组合条件, 逐层同级的子表达式嵌套。   |
   
 表6single_field_expression 
| 参数          | 是否必选 | 参数类型             | 描述                                                                                                                                        |
|:---|:---|:---|:---|
| field       | 是    | String           | 条件字段。                                                                                                                                     |
| func        | 是    | String           | 条件函数，取值如"$gt", $lt","$gte", $lte" "$eq", "$ne", "$prefix", "$exists"。                                                                     |
| value       | 否    | Document         | value和value_array二选一。 - value条件值，适用于除"$in", "$nin"外的func。 - 字段名无意义，可以传空，也可以传字段名。 - $exists值为true/false。 说明： $prefix操作只适用于string和binary类型。 |
| value_array | 否    | Array of strings | "value"和"value_array"二选一。 - "value_array" 条件值列表, 值用于"$in", "$nin"。                                                                        |
   
 表7multi_field_expression 
| 参数          | 是否必选 | 参数类型                                                                                | 描述                   |
|:---|:---|:---|:---|
| logic       | 否    | String                                                                              | 多字段条件，多个相同优先级的单字段条件。 |
| expressions | 是    | Array of [single_field_expression] objects | 多个相同逻辑操作的单字段条件。      |
   
#### 响应参数
**状态码：200**
表示上传单个kv请求成功
**状态码：400**
表8响应Body参数 
| 参数         | 参数类型   | 描述         |
|:---|:---|:---|
| error_code | String | 请求返回的错误码。  |
| error_msg  | String | 请求返回的错误信息。 |
   
#### 请求示例
上传单个kv，表名为test-table-1，仓名为test-store。
```
POST https://test-store.{endpoint}/v1/put-kv
{
  "table_name" : "test-table-1",
  "kv_doc" : {
    "owner" : "user-1",
    "filename" : "test-file-1",
    "otherKey" : "other"
  }
}
```
#### 响应示例
无
#### 状态码
| 状态码 | 描述           |
|:---|:---|
| 200 | 表示上传单个kv请求成功 |
| 400 | BadRequest   |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-kvs/ErrorCode.html)。
