
# 创建或更新录制规则 - CreateRecordRule
#### 功能介绍
调用此接口创建或更新录制规则。
- 若当前app在请求的location中无录制规则，则会创建新的录制规则
  
- 若当前app在请求的location中已有录制规则，则会更新原来的录制规则
  
 
#### 接口约束
一个app在一个location最多创建一个录制规则。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/CloudRTC/doc?api=CreateRecordRule)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-rtc/rtc_07_0022.html)。
#### URI
POST /v2/apps/{app_id}/record-rules
表1路径参数 
| 参数     | 是否必选 | 参数类型   | 描述   |
|:---|:---|:---|:---|
| app_id | 是    | String | 应用id |
   
#### 请求参数
表2请求Header参数 
| 参数            | 是否必选 | 参数类型   | 描述                                                                      |
|:---|:---|:---|:---|
| Content-Type  | 是    | String | 内容类型。取值application/json。                                                |
| X-Auth-Token  | 否    | String | 用户Token。使用Token鉴权方式时必选。通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
| Authorization | 否    | String | 使用AK/SK方式认证时必选，携带的鉴权信息。                                                 |
| X-Sdk-Date    | 否    | String | 使用AK/SK方式认证时必选，请求的发生时间。                                                 |
| X-Project-Id  | 否    | String | 使用AK/SK方式认证时必选，携带项目ID信息。                                                |
   
表3请求Body参数 
| 参数             | 是否必选 | 参数类型                                                                     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| obs_addr       | 是    | [RecordObsFileAddr] object | 保存录制文件所在的桶信息                                                                                                                                                                                                                                                                                                                                                                                                                         |
| record_formats | 是    | Array of strings                                                         | 录制格式：支持HLS格式和MP4格式（HLS和MP4为大写）。 - 若配置HLS则必须携带HLSRecordConfig参数   - 若配置MP4则需要携带MP4RecordConfig    |
| hls_config     | 否    | [HLSRecordConfig] object     | HLS格式录制规则管理                                                                                                                                                                                                                                                                                                                                                                                                                          |
| mp4_config     | 否    | [MP4RecordConfig] object     | MP4格式录制规则管理                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表4RecordObsFileAddr 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| location   | 是    | String | OBS Bucket所在RegionID - cn-north-4    |
| project_id | 是    | String | OBS Bucket所在Region的项目ID                                                                                                                                                                                                                    |
| bucket     | 是    | String | OBS的bucket名称                                                                                                                                                                                                                               |
| object     | 否    | String | OBS对象路径，遵守OBS Object定义。如果为空则保存到根目录                                                                                                                                                                                                         |
   
 表5HLSRecordConfig 
| 参数                                | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| record_cycle                      | 是    | Integer | 周期录制时长。 取值范围：\[60，43200\]或者0，如果为0则整个流录制为一个文件。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| record_prefix                     | 否    | String  | 录制m3u8文件含路径和文件名的前缀 默认{app_id}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time} 可自定义以下特殊变量： - {app_id}：应用id   - {record_format}：录制格式   - {stream}：流名   - {file_start_time}：文件生成时间    |
| record_slice_duration             | 否    | Integer | 录制HLS时ts的切片时长，非必填。 取值范围：\[2，60\]，缺省为10。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| record_max_duration_to_merge_file | 否    | Integer | 录制HLS文件拼接时长，如果流中断超过该时间，则生成新文件。 取值范围：\[-1，300\]，缺省为0。 单位：秒。 - 如果为0表示流中断就生成新文件。   - 如果为-1则表示流中断恢复后追加到原来的文件中（相隔不超过30天）。                                                                                                                                                                                                                                                                                                                                                 |
   
 表6MP4RecordConfig 
| 参数                                | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| record_cycle                      | 是    | Integer | 周期录制时长。 取值范围：\[60，10800\]。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| record_prefix                     | 否    | String  | 录制文件含路径和文件名的前缀。 默认{app_id}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time} 可自定义以下特殊变量： - {app_id}：应用id   - {record_format}：录制格式   - {stream}：流名   - {file_start_time}：文件生成时间    |
| record_max_duration_to_merge_file | 否    | Integer | 录制MP4拼接时长，如果流中断超过该时间，则生成新文件。 取值范围：\[0，300\]，缺省为0。 单位：秒。 如果为0表示流中断就生成新文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
#### 响应参数
**状态码：201**
表7响应Header参数 
| 参数           | 参数类型   | 描述                 |
|:---|:---|:---|
| X-request-Id | String | 此字段携带请求ID号，以便任务跟踪。 |
   
表8响应Body参数 
| 参数             | 参数类型                                                                      | 描述                                        |
|:---|:---|:---|
| rule_id        | String                                                                    | 规则id，由服务端返回。创建或修改规则的时候不携带                 |
| app_id         | String                                                                    | 应用id                                      |
| obs_addr       | [RecordObsFileAddr] object | 保存录制文件所在的桶信息                              |
| record_formats | Array of strings                                                          | 录制格式：HLS格式或者MP4格式                         |
| hls_config     | [HLSRecordConfig] object     | hls格式录制规则管理                               |
| mp4_config     | [MP4RecordConfig] object     | mp4格式录制规则管理                               |
| create_time    | String                                                                    | 创建时间，形如"2006-01-02T15:04:05.075Z"，时区为：UTC |
| update_time    | String                                                                    | 更新时间，形如"2006-01-02T15:04:05.075Z"，时区为：UTC |
   
 表9RecordObsFileAddr 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                                                         |
|:---|:---|:---|
| location   | String | OBS Bucket所在RegionID - cn-north-4    |
| project_id | String | OBS Bucket所在Region的项目ID                                                                                                                                                                                                                    |
| bucket     | String | OBS的bucket名称                                                                                                                                                                                                                               |
| object     | String | OBS对象路径，遵守OBS Object定义。如果为空则保存到根目录                                                                                                                                                                                                         |
   
 表10HLSRecordConfig 
| 参数                                | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| record_cycle                      | Integer | 周期录制时长。 取值范围：\[60，43200\]或者0，如果为0则整个流录制为一个文件。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| record_prefix                     | String  | 录制m3u8文件含路径和文件名的前缀 默认{app_id}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time} 可自定义以下特殊变量： - {app_id}：应用id   - {record_format}：录制格式   - {stream}：流名   - {file_start_time}：文件生成时间    |
| record_slice_duration             | Integer | 录制HLS时ts的切片时长，非必填。 取值范围：\[2，60\]，缺省为10。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| record_max_duration_to_merge_file | Integer | 录制HLS文件拼接时长，如果流中断超过该时间，则生成新文件。 取值范围：\[-1，300\]，缺省为0。 单位：秒。 - 如果为0表示流中断就生成新文件。   - 如果为-1则表示流中断恢复后追加到原来的文件中（相隔不超过30天）。                                                                                                                                                                                                                                                                                                                                                 |
   
 表11MP4RecordConfig 
| 参数                                | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| record_cycle                      | Integer | 周期录制时长。 取值范围：\[60，10800\]。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| record_prefix                     | String  | 录制文件含路径和文件名的前缀。 默认{app_id}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time} 可自定义以下特殊变量： - {app_id}：应用id   - {record_format}：录制格式   - {stream}：流名   - {file_start_time}：文件生成时间    |
| record_max_duration_to_merge_file | Integer | 录制MP4拼接时长，如果流中断超过该时间，则生成新文件。 取值范围：\[0，300\]，缺省为0。 单位：秒。 如果为0表示流中断就生成新文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
**状态码：200**
表12响应Header参数 
| 参数           | 参数类型   | 描述                 |
|:---|:---|:---|
| X-request-Id | String | 此字段携带请求ID号，以便任务跟踪。 |
   
表13响应Body参数 
| 参数             | 参数类型                                                                        | 描述                                        |
|:---|:---|:---|
| rule_id        | String                                                                      | 规则id，由服务端返回。创建或修改规则的时候不携带                 |
| app_id         | String                                                                      | 应用id                                      |
| obs_addr       | [RecordObsFileAddr] object | 保存录制文件所在的桶信息                              |
| record_formats | Array of strings                                                            | 录制格式：HLS格式或者MP4格式                         |
| hls_config     | [HLSRecordConfig] object     | hls格式录制规则管理                               |
| mp4_config     | [MP4RecordConfig] object     | mp4格式录制规则管理                               |
| create_time    | String                                                                      | 创建时间，形如"2006-01-02T15:04:05.075Z"，时区为：UTC |
| update_time    | String                                                                      | 更新时间，形如"2006-01-02T15:04:05.075Z"，时区为：UTC |
   
 表14RecordObsFileAddr 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                                                         |
|:---|:---|:---|
| location   | String | OBS Bucket所在RegionID - cn-north-4    |
| project_id | String | OBS Bucket所在Region的项目ID                                                                                                                                                                                                                    |
| bucket     | String | OBS的bucket名称                                                                                                                                                                                                                               |
| object     | String | OBS对象路径，遵守OBS Object定义。如果为空则保存到根目录                                                                                                                                                                                                         |
   
 表15HLSRecordConfig 
| 参数                                | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| record_cycle                      | Integer | 周期录制时长。 取值范围：\[60，43200\]或者0，如果为0则整个流录制为一个文件。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| record_prefix                     | String  | 录制m3u8文件含路径和文件名的前缀 默认{app_id}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time} 可自定义以下特殊变量： - {app_id}：应用id   - {record_format}：录制格式   - {stream}：流名   - {file_start_time}：文件生成时间    |
| record_slice_duration             | Integer | 录制HLS时ts的切片时长，非必填。 取值范围：\[2，60\]，缺省为10。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| record_max_duration_to_merge_file | Integer | 录制HLS文件拼接时长，如果流中断超过该时间，则生成新文件。 取值范围：\[-1，300\]，缺省为0。 单位：秒。 - 如果为0表示流中断就生成新文件。   - 如果为-1则表示流中断恢复后追加到原来的文件中（相隔不超过30天）。                                                                                                                                                                                                                                                                                                                                                 |
   
 表16MP4RecordConfig 
| 参数                                | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| record_cycle                      | Integer | 周期录制时长。 取值范围：\[60，10800\]。 单位：秒。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| record_prefix                     | String  | 录制文件含路径和文件名的前缀。 默认{app_id}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time} 可自定义以下特殊变量： - {app_id}：应用id   - {record_format}：录制格式   - {stream}：流名   - {file_start_time}：文件生成时间    |
| record_max_duration_to_merge_file | Integer | 录制MP4拼接时长，如果流中断超过该时间，则生成新文件。 取值范围：\[0，300\]，缺省为0。 单位：秒。 如果为0表示流中断就生成新文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
**状态码：400**
表17响应Header参数 
| 参数           | 参数类型   | 描述                 |
|:---|:---|:---|
| X-request-Id | String | 此字段携带请求ID号，以便任务跟踪。 |
   
表18响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：404**
表19响应Header参数 
| 参数           | 参数类型   | 描述                 |
|:---|:---|:---|
| X-request-Id | String | 此字段携带请求ID号，以便任务跟踪。 |
   
表20响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：500**
表21响应Header参数 
| 参数           | 参数类型   | 描述                 |
|:---|:---|:---|
| X-request-Id | String | 此字段携带请求ID号，以便任务跟踪。 |
   
表22响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
#### 请求示例
创建或更新一个录制规则，区域为北京四，录制文件将被保存在名为obsName的桶上，录制文件格式为MP4，录制周期为60秒
```
POST https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/record-rules
{
  "obs_addr" : {
    "bucket" : "obsName",
    "location" : "cn-north-4",
    "object" : "Record/",
    "project_id" : "ad7456ce8ef89adf567"
  },
  "record_formats" : [ "MP4" ],
  "mp4_config" : {
    "record_cycle" : 60,
    "record_max_duration_to_merge_file" : 0
  }
}
```
#### 响应示例
**状态码：201**
创建配置成功
```
{
  "app_id" : "123456abc",
  "rule_id" : "456789abc",
  "create_time" : "2006-01-02T15:04:05.075Z",
  "obs_addr" : {
    "bucket" : "obsName",
    "location" : "cn-north-4",
    "object" : "Record/",
    "project_id" : "ad7456ce8ef89adf567"
  },
  "record_formats" : [ "MP4" ],
  "mp4_config" : {
    "record_cycle" : 60,
    "record_max_duration_to_merge_file" : 0
  },
  "update_time" : "2006-01-02T15:04:05.075Z"
}
```
**状态码：200**
更新配置成功
```
{
  "app_id" : "123456abc",
  "rule_id" : "456789abc",
  "create_time" : "2006-01-02T15:04:05.075Z",
  "obs_addr" : {
    "bucket" : "obsName",
    "location" : "cn-north-4",
    "object" : "Record/",
    "project_id" : "ad7456ce8ef89adf567"
  },
  "record_formats" : [ "MP4" ],
  "mp4_config" : {
    "record_cycle" : 60,
    "record_max_duration_to_merge_file" : 0
  },
  "update_time" : "2006-01-02T15:04:05.075Z"
}
```
**状态码：400**
配置失败，语义有误，当前请求无法被服务器理解，或参数有误
```
{
  "error_code" : "RTC.00001003",
  "error_msg" : "InvalidParameterValue"
}
```
**状态码：404**
配置失败，应用不存在
```
{
  "error_code" : "RTC.00001003",
  "error_msg" : "InvalidParameterValue"
}
```
**状态码：500**
配置失败，服务器端错误
```
{
  "error_code" : "RTC.00002xxx",
  "error_msg" : "InternalError"
}
```
#### 状态码
| 状态码 | 描述                           |
|:---|:---|
| 201 | 创建配置成功                       |
| 200 | 更新配置成功                       |
| 400 | 配置失败，语义有误，当前请求无法被服务器理解，或参数有误 |
| 404 | 配置失败，应用不存在                   |
| 500 | 配置失败，服务器端错误                  |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-rtc/ErrorCode.html)。
