
# 部署后端API - PublishLiveDataApiV2
#### 功能介绍
在某个实例中部署后端API。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/ROMA/doc?api=PublishLiveDataApiV2)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-roma/roma_06_0018.html)。
#### URI
POST /v2/{project_id}/apic/instances/{instance_id}/livedata-apis/{ld_api_id}/deploy
表1路径参数 
| 参数          | 是否必选 | 参数类型   | 描述                                  |
|:---|:---|:---|:---|
| project_id  | 是    | String | 项目ID，获取方式请参见API参考的"附录 \> 获取项目ID"章节。 |
| instance_id | 是    | String | 实例ID                                |
| ld_api_id   | 是    | String | 后端API的编号                            |
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                       |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
   
表3请求Body参数 
| 参数               | 是否必选 | 参数类型    | 描述                                                                                               |
|:---|:---|:---|:---|
| ld_api_id        | 否    | String  | 后端API的编号                                                                                         |
| deploy_front_api | 否    | Boolean | 是否自动发布API - true：部署完成后自动创建并发布前端API。此时auth_type，group_id，env_id，protocol必填。 - false：部署完成后不创建前端API |
| auth_type        | 否    | String  | 认证方式 - NONE：无认证 - APP：APP认证 - IAM：IAM认证 - AUTHORIZER：自定义认证                                       |
| authorizer_id    | 否    | String  | 自定义认证编号。 认证方式auth_type = AUTHORIZER时必填                                                           |
| group_id         | 否    | String  | 部署的前端API分组编号                                                                                     |
| env_id           | 否    | String  | 部署的环境编号                                                                                          |
| protocol         | 否    | String  | 请求协议 - HTTP - HTTPS - BOTH: 同时支持HTTP和HTTPS                                                       |
| backend_timeout  | 否    | Integer | 超时时间                                                                                             |
| path             | 否    | String  | 请求路径                                                                                             |
| method           | 否    | String  | 请求方式                                                                                             |
| cors             | 否    | Boolean | 是否支持跨域 - true：支持 - false：不支持                                                                     |
| roma_app_id      | 否    | String  | 部署到前端的api归属的应用编号，与后端归属的应用编号保持一致                                                                  |
| retry_count      | 否    | String  | 服务集成请求后端服务的重试次数，默认为-1，范围\[-1,10\]                                                                |
   
#### 响应参数
**状态码：200**
表4响应Body参数 
| 参数             | 参数类型                                                          | 描述           |
|:---|:---|:---|
| id             | String                                                        | 部署的编号        |
| ld_api_id      | String                                                        | 部署的后端API编号   |
| group_id       | String                                                        | 部署的前端API分组编号 |
| env_id         | String                                                        | 部署的环境编号      |
| api_id         | String                                                        | 部署的前端API编号   |
| deploy_time    | String                                                        | 部署时间         |
| api_definition | [LdApiInfo] object | 自定义后端API详情   |
   
 表5LdApiInfo 
| 参数               | 参数类型                                                                              | 描述                                                                                        |
|:---|:---|:---|
| name             | String                                                                            | 后端API名称。 支持汉字、英文、数字、中划线、下划线、点、斜杠、中英文格式下的小括号和冒号、中文格式下的顿号，且只能以英文、汉字和数字开头。                   |
| path             | String                                                                            | 后端API请求路径。 支持英文、数字、中划线、下划线、点等，且以斜杠（/）开头。 更新后端API时，status=4为后端API的已部署状态，该状态下后端API请求路径不能修改。 |
| method           | String                                                                            | 后端API请求方法。 支持GET、PUT、POST、DELETE 更新后端API时，status=4为后端API的已部署状态，该状态下后端API请求方法不能修改。         |
| description      | String                                                                            | 后端API描述。 不支持\<，\>字符                                                                       |
| version          | String                                                                            | 后端API版本 支持英文，数字，下划线，中划线，点。                                                                |
| content_type     | String                                                                            | 后端API返回类型 - json - xml - stream                                                           |
| api_signature_id | String                                                                            | 后端API为签名认证时绑定的签名密钥编号                                                                      |
| roma_app_id      | String                                                                            | 后端API归属的集成应用编号 更新后端API时，status=4为后端API的已部署状态，该状态下后端API归属的集成应用编号不能修改。                      |
| return_format    | Boolean                                                                           | API响应信息是否格式化 true： 对响应信息进行格式化 false：对响应信息格式化不进行格式化                                        |
| parameters       | Array of [LdApiParameter] objects | 后端API的请求参数列表                                                                              |
| id               | String                                                                            | 后端API编号                                                                                   |
| instance         | String                                                                            | 后端API所属实例编号                                                                               |
| type             | String                                                                            | 后端API类型： - data：数据后端 - function： 函数后端                                                     |
| status           | Integer                                                                           | 后端API状态： - 1：待开发 - 3：开发中 - 4：已部署                                                          |
| created_time     | String                                                                            | 后端API创建时间                                                                                 |
| modified_time    | String                                                                            | 后端API修改时间                                                                                 |
| scripts          | Array of [LdApiScript] objects       | 后端API脚本信息                                                                                 |
| roma_app_name    | String                                                                            | 后端API归属的集成应用名称                                                                            |
   
 表6LdApiParameter 
| 参数          | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| name        | String  | 参数名称： - 参数位于Headers、 Parameters时，用户自行定义，支持英文、数字、点、中划线、下划线，且需要英文开头，不区分大小写。 - 参数位于Body时候，参数以application/json、application/xml、application/text为名，但实际是以请求body里的键值对作为参数名和参数值，比如请求消息样例，参数名为application/json，参数值为{"table":"apic01","id":"1"}，后端取table：apic01，id：1这两个键值对作为入参。 - 注意：定义参数不要重名，否则会覆盖掉，当Headers、Parameters重复时候，Parameters会被覆盖，当Parameters和Body里的键值对重复时候，Parameters会被覆盖。 |
| in          | String  | 该参数在调用API时候所放的位置： - Headers ：放于请求头 - Parameters ：放于请求参数 - Body：放于请求体                                                                                                                                                                                                                                                                                                        |
| default     | String  | 参数默认值                                                                                                                                                                                                                                                                                                                                                                       |
| description | String  | 参数描述 不支持\<，\>字符                                                                                                                                                                                                                                                                                                                                                             |
| required    | Boolean | 参数是否必须。true：必须，false：不必须                                                                                                                                                                                                                                                                                                                                                    |
   
 表7LdApiScript 
| 参数                      | 参数类型    | 描述                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| ds_id                   | String  | 数据源编号，当api_type = data时，必选                                                                                                                                                                                                                                                                                      |
| ds_name                 | String  | 数据源名称                                                                                                                                                                                                                                                                                                           |
| ds_type                 | String  | 数据源类型： - oracle：oracle数据源类型 - mysql：mysql数据源类型 - mongodb：mongodb数据源类型 - redis：redis数据源类型 - postgresql：postgresql/opengauss数据源类型 - hive：hive数据源类型 - mssql：sqlserver数据源类型 - sqlserver：sqlserver数据源类型 - dws：dws数据源类型 - gauss100：gauss100数据源类型 - zenith：zenith数据源类型 - hana: hana数据源类型 - clickhouse: clickhouse数据源类型 |
| type                    | String  | 脚本类型 - SQL：sql语句 - SP：存储过程                                                                                                                                                                                                                                                                                      |
| object_name             | String  | 返回对象。                                                                                                                                                                                                                                                                                                           |
| content                 | String  | API脚本内容 请对脚本进行base64编码                                                                                                                                                                                                                                                                                          |
| enable_result_paging    | Boolean | 数据脚本是否结果分页，当api_type = data时有效                                                                                                                                                                                                                                                                                  |
| enable_preparestatement | Boolean | 数据脚本是否预编译，当api_type = data时有效                                                                                                                                                                                                                                                                                   |
| created_time            | String  | 后端API脚本创建时间                                                                                                                                                                                                                                                                                                     |
| modified_time           | String  | 后端API脚本修改时间                                                                                                                                                                                                                                                                                                     |
   
**状态码：400**
表8响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：401**
表9响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：403**
表10响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：404**
表11响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：409**
表12响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
**状态码：500**
表13响应Body参数 
| 参数         | 参数类型   | 描述   |
|:---|:---|:---|
| error_code | String | 错误码  |
| error_msg  | String | 错误描述 |
   
#### 请求示例
部署指定的自定义后端，并发布对应的前端API，认证方式为APP认证，请求方法为GET，请求协议为HTTPS
```
{
  "auth_type" : "APP",
  "authorizer_id" : "",
  "backend_timeout" : 5000,
  "cors" : false,
  "deploy_front_api" : true,
  "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID",
  "group_id" : "01ce7564a2544713b80c7c08eb85f5d0",
  "method" : "GET",
  "path" : "/test/function",
  "protocol" : "HTTPS",
  "roma_app_id" : "98df09fb-d459-4cbf-83a7-2b55ca6f3d5d"
}
```
#### 响应示例
**状态码：200**
OK
```
{
  "api_definition" : {
    "content_type" : "json",
    "created_time" : "2020-09-18T09:25:59Z",
    "description" : "",
    "id" : "bd42841c20184da6bbf457c6d8a06e37",
    "instance" : "f0fa1789-3b76-433b-a787-9892951c620e",
    "method" : "GET",
    "modified_time" : "2020-09-19T06:29:35Z",
    "name" : "livedata_api_demo",
    "parameters" : [ ],
    "path" : "/test/function",
    "return_format" : false,
    "roma_app_id" : "98df09fb-d459-4cbf-83a7-2b55ca6f3d5d",
    "roma_app_name" : "app-demo",
    "scripts" : [ {
      "type" : "SQL",
      "object_name" : "fun",
      "content" : "ZnVuY3Rpb24gZXhlY3V0ZShkYXRhKSB7CiAgICByZXR1cm4gIkhlbGxvIHdvcmxkISIKfQ==",
      "created_time" : "2020-09-19T06:29:35Z",
      "modified_time" : "2020-09-19T06:29:35Z"
    } ],
    "status" : 4,
    "type" : "function",
    "version" : "1.0.1"
  },
  "api_id" : "1d0432f1a82a49d08b9308ae7bd96ca6",
  "deploy_time" : "2020-09-19T06:58:13Z",
  "env_id" : "DEFAULT_ENVIRONMENT_RELEASE_ID",
  "group_id" : "01ce7564a2544713b80c7c08eb85f5d0",
  "id" : "5e19590f54444d8a9b8fe698ce26e9fe",
  "ld_api_id" : "bd42841c20184da6bbf457c6d8a06e37"
}
```
**状态码：400**
Bad Request
```
{
  "error_code" : "APIG.2011",
  "error_msg" : "Invalid parameter value,parameterName:auth_type. Please refer to the support documentation"
}
```
**状态码：401**
Unauthorized
```
{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}
```
**状态码：403**
Forbidden
```
{
  "error_code" : "APIG.1005",
  "error_msg" : "No permissions to request this method"
}
```
**状态码：404**
Not Found
```
{
  "error_code" : "APIG.3084",
  "error_msg" : "The livedata API does not exist, id: bd42841c20184da6bbf457c6d8a06e37"
}
```
**状态码：409**
Conflict
```
{
  "error_code" : "APIG.3479",
  "error_msg" : "the roma app used for deploy must be the same as the roma app of the ld api"
}
```
**状态码：500**
Internal Server Error
```
{
  "error_code" : "APIG.9999",
  "error_msg" : "System error"
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 200 | OK                    |
| 400 | Bad Request           |
| 401 | Unauthorized          |
| 403 | Forbidden             |
| 404 | Not Found             |
| 409 | Conflict              |
| 500 | Internal Server Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-roma/ErrorCode.html)。
