
# 获取多模态文件上传地址 - GenerateOpsMultimodalUploadUrl
#### 功能介绍
该接口用于生成OBS预签名上传链接和对应的OBS路径，供用户上传多模态文件（如PPT等）。
用户使用返回的上传链接将文件上传至OBS后，可在细粒度评估接口中传入OBS路径进行评估。
**约束限制：**
- 同一用户未使用的上传链接数量上限为5个。
  
- 上传链接有效期为15分钟。
  
- 单个文件大小上限100MB。
  
- file_suffix仅支持ppt和pptx。
  
**典型应用场景：**
用户在使用PPT整体质量评估器进行评估前，先调用该接口获取上传地址，将PPT文件上传至OBS，然后在细粒度评估接口中传入OBS路径完成评估。
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-agentarts/agentarts_07_0003.html)。
#### 授权信息
账号根用户具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备如下身份策略权限，更多的权限说明请参见[权限和授权项](https://support.huaweicloud.com/api-agentarts/Permission.html)。
| 授权项                                       | 访问级别  | 资源类型（\*为必须） | 条件键 | 别名 | 依赖的授权项 |
|:---|:---|:---|:---|:---|:---|
| agentarts::generateOpsMultimodalUploadUrl | Write | -           | -   | -  | -      |
   
#### URI
POST /v1/ops/evaluation-multimodal-upload-url
#### 请求参数
表1请求Body参数 
| 参数          | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| file_suffix | 是    | String | **参数解释：** 文件后缀名，用于生成OBS对象名。 **约束限制：** 必须为枚举值之一。 **取值范围：** 由英文字母及点(.)组成的字符串，长度为0\~20个字符。 **默认取值：** 不涉及。                                                                                                               |
| file_hash   | 是    | String | **参数解释：** 文件的SHA256哈希值，用于OBS上传校验。 **取值范围：** 不涉及。 **约束限制：** 必须为有效的SHA256哈希值。 **取值范围：** 64位十六进制字符串。 **默认取值：** 不涉及。 |
   
#### 响应参数
**状态码：200**
表2响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| upload_url | String | **参数解释：** OBS预签名上传链接，用户使用该链接上传多模态文件。 **取值范围：** 不涉及。 **取值范围：** HTTPS URL字符串。 |
| obs_path   | String | **参数解释：** OBS对象路径，评估时传入此路径。 **取值范围：** 不涉及。 **取值范围：** 不涉及。                   |
   
**状态码：400**
表3响应Body参数 
| 参数                            | 参数类型                                                                                        | 描述                                                                                                                                                                                                                     |
|:---|:---|:---|
| error_code                    | String                                                                                      | **参数解释：** 系统定义的标准化错误代码。 **取值范围：** 业务异常编码字符串。                     |
| error_msg                     | String                                                                                      | **参数解释：** 对错误的详细描述，包含异常原因或解决建议。 **取值范围：** 字符长度2-512，任意文本内容。      |
| encoded_authorization_message | String                                                                                      | **参数解释：** 编码后的授权信息，用于客户端解析权限问题。 **取值范围：** Base64编码的字符串。          |
| details                       | Array of [OpsErrorDetail] objects | **参数解释：** 错误详情列表，包含多个子错误的详细信息。 **取值范围：** 不涉及。                    |
| request_id                    | String                                                                                      | **参数解释：** 请求的唯一标识符，用于问题排查和链路追踪。 **取值范围：** 符合通用唯一识别码(UUID)标准的字符串。 |
   
 表4OpsErrorDetail 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                |
|:---|:---|:---|
| error_code | String | **参数解释：** 子错误的标准化错误代码。 **取值范围：** 业务异常编码字符串。 |
| error_msg  | String | **参数解释：** 对子错误的详细描述。 **取值范围：** 任意文本内容。      |
   
**状态码：401**
表5响应Body参数 
| 参数                            | 参数类型                                                                                          | 描述                                                                                                                                                                                                                     |
|:---|:---|:---|
| error_code                    | String                                                                                        | **参数解释：** 系统定义的标准化错误代码。 **取值范围：** 业务异常编码字符串。                     |
| error_msg                     | String                                                                                        | **参数解释：** 对错误的详细描述，包含异常原因或解决建议。 **取值范围：** 字符长度2-512，任意文本内容。      |
| encoded_authorization_message | String                                                                                        | **参数解释：** 编码后的授权信息，用于客户端解析权限问题。 **取值范围：** Base64编码的字符串。          |
| details                       | Array of [OpsErrorDetail] objects | **参数解释：** 错误详情列表，包含多个子错误的详细信息。 **取值范围：** 不涉及。                    |
| request_id                    | String                                                                                        | **参数解释：** 请求的唯一标识符，用于问题排查和链路追踪。 **取值范围：** 符合通用唯一识别码(UUID)标准的字符串。 |
   
 表6OpsErrorDetail 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                |
|:---|:---|:---|
| error_code | String | **参数解释：** 子错误的标准化错误代码。 **取值范围：** 业务异常编码字符串。 |
| error_msg  | String | **参数解释：** 对子错误的详细描述。 **取值范围：** 任意文本内容。      |
   
**状态码：403**
表7响应Body参数 
| 参数                            | 参数类型                                                                                          | 描述                                                                                                                                                                                                                     |
|:---|:---|:---|
| error_code                    | String                                                                                        | **参数解释：** 系统定义的标准化错误代码。 **取值范围：** 业务异常编码字符串。                     |
| error_msg                     | String                                                                                        | **参数解释：** 对错误的详细描述，包含异常原因或解决建议。 **取值范围：** 字符长度2-512，任意文本内容。      |
| encoded_authorization_message | String                                                                                        | **参数解释：** 编码后的授权信息，用于客户端解析权限问题。 **取值范围：** Base64编码的字符串。          |
| details                       | Array of [OpsErrorDetail] objects | **参数解释：** 错误详情列表，包含多个子错误的详细信息。 **取值范围：** 不涉及。                    |
| request_id                    | String                                                                                        | **参数解释：** 请求的唯一标识符，用于问题排查和链路追踪。 **取值范围：** 符合通用唯一识别码(UUID)标准的字符串。 |
   
 表8OpsErrorDetail 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                |
|:---|:---|:---|
| error_code | String | **参数解释：** 子错误的标准化错误代码。 **取值范围：** 业务异常编码字符串。 |
| error_msg  | String | **参数解释：** 对子错误的详细描述。 **取值范围：** 任意文本内容。      |
   
**状态码：429**
表9响应Body参数 
| 参数                            | 参数类型                                                                                          | 描述                                                                                                                                                                                                                     |
|:---|:---|:---|
| error_code                    | String                                                                                        | **参数解释：** 系统定义的标准化错误代码。 **取值范围：** 业务异常编码字符串。                     |
| error_msg                     | String                                                                                        | **参数解释：** 对错误的详细描述，包含异常原因或解决建议。 **取值范围：** 字符长度2-512，任意文本内容。      |
| encoded_authorization_message | String                                                                                        | **参数解释：** 编码后的授权信息，用于客户端解析权限问题。 **取值范围：** Base64编码的字符串。          |
| details                       | Array of [OpsErrorDetail] objects | **参数解释：** 错误详情列表，包含多个子错误的详细信息。 **取值范围：** 不涉及。                    |
| request_id                    | String                                                                                        | **参数解释：** 请求的唯一标识符，用于问题排查和链路追踪。 **取值范围：** 符合通用唯一识别码(UUID)标准的字符串。 |
   
 表10OpsErrorDetail 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                |
|:---|:---|:---|
| error_code | String | **参数解释：** 子错误的标准化错误代码。 **取值范围：** 业务异常编码字符串。 |
| error_msg  | String | **参数解释：** 对子错误的详细描述。 **取值范围：** 任意文本内容。      |
   
**状态码：500**
表11响应Body参数 
| 参数                            | 参数类型                                                                                          | 描述                                                                                                                                                                                                                     |
|:---|:---|:---|
| error_code                    | String                                                                                        | **参数解释：** 系统定义的标准化错误代码。 **取值范围：** 业务异常编码字符串。                     |
| error_msg                     | String                                                                                        | **参数解释：** 对错误的详细描述，包含异常原因或解决建议。 **取值范围：** 字符长度2-512，任意文本内容。      |
| encoded_authorization_message | String                                                                                        | **参数解释：** 编码后的授权信息，用于客户端解析权限问题。 **取值范围：** Base64编码的字符串。          |
| details                       | Array of [OpsErrorDetail] objects | **参数解释：** 错误详情列表，包含多个子错误的详细信息。 **取值范围：** 不涉及。                    |
| request_id                    | String                                                                                        | **参数解释：** 请求的唯一标识符，用于问题排查和链路追踪。 **取值范围：** 符合通用唯一识别码(UUID)标准的字符串。 |
   
 表12OpsErrorDetail 
| 参数         | 参数类型   | 描述                                                                                                                                                                                                |
|:---|:---|:---|
| error_code | String | **参数解释：** 子错误的标准化错误代码。 **取值范围：** 业务异常编码字符串。 |
| error_msg  | String | **参数解释：** 对子错误的详细描述。 **取值范围：** 任意文本内容。      |
   
#### 请求示例
```
POST https://api.example.com/v1/ops/evaluation-multimodal-upload-url
{
  "file_suffix" : "pptx",
  "file_hash" : "289c93d104b56d8685de80378833b8b8d3079cad2862abc0690e57eca3ee2ece"
}
```
#### 响应示例
**状态码：200**
获取成功
```
{
  "upload_url" : "https://obs.*.com/...",
  "obs_path" : "550e8400-e29b-41d4-a716-446655440000.pptx"
}
```
**状态码：400**
请求参数错误
```
{
  "error_code" : "AgentArts.10004001",
  "error_msg" : "file_suffix is required"
}
```
**状态码：401**
认证失败
```
{
  "error_code" : "AgentArts.100004010",
  "error_msg" : "unauthorized"
}
```
**状态码：403**
鉴权失败
```
{
  "error_code" : "AgentArts.100004030",
  "error_msg" : "forbidden"
}
```
**状态码：429**
上传链接数量超限
```
{
  "error_code" : "AgentArts.10004291",
  "error_msg" : "the number of unused upload URLs has reached the limit (5), please use existing URLs first or wait for expiration"
}
```
**状态码：500**
系统错误
```
{
  "error_code" : "AgentArts.03500001",
  "error_msg" : "internal error"
}
```
#### 状态码
| 状态码 | 描述       |
|:---|:---|
| 200 | 获取成功     |
| 400 | 请求参数错误   |
| 401 | 认证失败     |
| 403 | 鉴权失败     |
| 429 | 上传链接数量超限 |
| 500 | 系统错误     |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-agentarts/ErrorCode.html)。
