
# 注册API并授权给APP
#### 功能介绍
注册API并将API授权给APP，只有对服务有更新权限的华为云用户可以调用。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/ModelArts/doc?api=CreateAndAuthAppAuthApi)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-modelarts/modelarts_03_0138.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
 
#### URI
POST /v1/{project_id}/services/{service_id}/app-auth-api
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                               |
|:---|:---|:---|:---|
| project_id | 是    | String | 用户项目ID。获取方法请参见[获取项目ID和名称](https://support.huaweicloud.com/api-modelarts/modelarts_03_0147.html)。 |
| service_id | 是    | String | 服务编号，可通过查询服务列表获取。                                                                                |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述       |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户token。 |
   
表3请求Body参数 
| 参数           | 是否必选 | 参数类型                                                                 | 描述                                                                                                                               |
|:---|:---|:---|:---|
| apps         | 是    | Array of [Apps] objects | app列表。                                                                                                                           |
| workspace_id | 否    | String                                                               | 工作空间ID。获取方法请参见[查询工作空间列表](https://support.huaweicloud.com/api-modelarts/ListWorkspace.html)。未创建工作空间时默认值为"0"，存在创建并使用的工作空间，以实际取值为准。 |
   
 表4Apps 
| 参数     | 是否必选 | 参数类型   | 描述                   |
|:---|:---|:---|:---|
| app_id | 否    | String | APP的编号，可通过查询APP列表获取。 |
   
#### 响应参数
**状态码：200**
表5响应Header参数 
| 参数           | 参数类型   | 描述     |
|:---|:---|:---|
| X-Request-Id | String | 链路追踪编号 |
   
表6响应Body参数 
| 参数          | 参数类型                                                                                            | 描述     |
|:---|:---|:---|
| api         | [AuthTypeApiBasicInfo] object     | API详情。 |
| auth_result | Array of [AppAuthResultInfo] objects | 授权结果。  |
   
 表7AuthTypeApiBasicInfo 
| 参数               | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| api_id           | String  | API编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| api_method       | String  | 请求方式包含GET、POST、PUT、DELETE、HEAD、PATCH、OPTIONS、ANY，固定返回ANY。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| api_name         | String  | API名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| api_remark       | String  | API描述。字符长度不超过255。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| auth_type        | String  | API的认证方式。枚举值如下： - NONE：无认证   - APP：APP认证   - IAM：IAM认证    |
| predict_url      | String  | 预测地址。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| service_id       | String  | 服务编号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| service_name     | String  | 服务名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| support_app_code | Boolean | 是否支持APP CODE。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
 表8AppAuthResultInfo 
| 参数      | 参数类型    | 描述                    |
|:---|:---|:---|
| api_id  | String  | API的编号。               |
| app_id  | String  | APP的编号，可通过查询APP列表获取。  |
| auth_id | String  | 授权编号，授权失败时为空。         |
| reason  | String  | 授权或者取消授权失败原因，授权成功时为空。 |
| success | Boolean | 授权或者取消授权是否成功。         |
   
**状态码：400**
表9响应Header参数 
| 参数           | 参数类型   | 描述     |
|:---|:---|:---|
| X-Request-Id | String | 链路追踪编号 |
   
表10响应Body参数 
| 参数         | 参数类型   | 描述                                                                                   |
|:---|:---|:---|
| error_code | String | **参数解释**：ModelArts错误码。 **取值范围**：不涉及。 |
| error_msg  | String | **参数解释**：具体错误信息。 **取值范围**：不涉及。       |
   
**状态码：401**
表11响应Header参数 
| 参数           | 参数类型   | 描述     |
|:---|:---|:---|
| X-Request-Id | String | 链路追踪编号 |
   
表12响应Body参数 
| 参数         | 参数类型   | 描述                                                                                   |
|:---|:---|:---|
| error_code | String | **参数解释**：ModelArts错误码。 **取值范围**：不涉及。 |
| error_msg  | String | **参数解释**：具体错误信息。 **取值范围**：不涉及。       |
   
**状态码：403**
表13响应Header参数 
| 参数           | 参数类型   | 描述     |
|:---|:---|:---|
| X-Request-Id | String | 链路追踪编号 |
   
表14响应Body参数 
| 参数         | 参数类型   | 描述                                                                                   |
|:---|:---|:---|
| error_code | String | **参数解释**：ModelArts错误码。 **取值范围**：不涉及。 |
| error_msg  | String | **参数解释**：具体错误信息。 **取值范围**：不涉及。       |
   
**状态码：500**
表15响应Header参数 
| 参数           | 参数类型   | 描述     |
|:---|:---|:---|
| X-Request-Id | String | 链路追踪编号 |
   
表16响应Body参数 
| 参数         | 参数类型   | 描述                                                                                   |
|:---|:---|:---|
| error_code | String | **参数解释**：ModelArts错误码。 **取值范围**：不涉及。 |
| error_msg  | String | **参数解释**：具体错误信息。 **取值范围**：不涉及。       |
   
#### 请求示例
创建API并授权应用
```
POST https://{endpoint}/v1/{project_id}/services/{service_id}/app-auth-api
{
  "apps" : [ {
    "app_id" : "e2fb64be3be9418bb0f570c60f0ed93f"
  } ],
  "workspace_id" : "0"
}
```
#### 响应示例
**状态码：200**
OK
```
{
  "api" : {
    "api_id" : "b9c78dbb50d04230aab90e35e141fccf",
    "api_name" : "infer_456963f1737c4de08bee5b4f6f3a8fa3",
    "api_method" : "ANY",
    "predict_url" : "https://d566c7efafe04a26a83d3a8475602ee3.apig.xxxxxx.com/v1/infers/456963f1-737c-4de0-8bee-5b4f6f3a8fa3",
    "support_app_code" : true,
    "service_id" : "456963f1-737c-4de0-8bee-5b4f6f3a8fa3",
    "service_name" : "service-129c-test"
  },
  "auth_result" : [ {
    "api_id" : "b9c78dbb50d04230aab90e35e141fccf",
    "app_id" : "e2fb64be3be9418bb0f570c60f0ed93f",
    "success" : true
  } ]
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 200 | OK                    |
| 400 | Bad Request           |
| 401 | Unauthorized          |
| 403 | Forbidden             |
| 500 | Server Internal Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-modelarts/modelarts_03_0095.html)。
