无特殊说明,所有接口具有如下统一约定
{ “code”: “200”, //code非200,会被统一拦截报错,弹窗提示取值 message “message”: “错误信息”, // 只有code非200时,前端才会调用这个message “requestId”: “xxx”, // 一般用于定位报错和日志问题用 “data”: { “gmtCreated”: “关联时间”, “relationState”: “关联状态”, “relationType”: “关联类型”, “list”: [] }, // pageInfo不一定需要,但如果有请一定是这几个字段,不能是其他字段名称 “pageInfo”: { “currentPage”: 1, “pageSize”: 10, “total”: 100 } }
![image.png](https://cdn.nlark.com/yuque/0/2020/png/203859/1608193720659-c9bd7266-1c56-4979-b02b-9f8541dc40bc.png#height=582&id=KccWv&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1164&originWidth=1110&originalType=binary&ratio=1&size=621971&status=done&style=none&width=555)
<a name="vbuLF"></a>
#### 说明
这样的基本格式是不能动的,这个我们在各个业务的portal端是要统一的;<br />**code为字符串格式,非200,会被统一拦截报错,弹窗提示取值 message;**<br />data部分数据结构请注意,pageInfo返回的字段要统一。列表数据请放list中。
response.code须符合http规范,可能是5个不同的值开头:<br />1xx:信息响应类,表示接收到请求并且继续处理<br />2xx:处理成功响应类,表示动作被成功接收、理解和接受<br />3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理<br />4xx:客户端错误,客户请求包含语法错误或者是不能正确执行<br />5xx:服务端错误,服务器不能正确执行一个正确的请求
<a name="Ov04L"></a>
# 例1. 获取实例列表数据
- 接口路径:/renew/getListAndCount.json
- 请求方法:GET
<a name="6ZtSE"></a>
#### 请求参数
| 参数名 | 类型 | 是否必需 | 说明 |
| --- | --- | --- | --- |
| instanceName | String | 否 | 实例名称,模糊匹配 |
| instanceId | String | 否 | 实例ID,精确匹配,当该参数有值时,忽略instanceName |
| expiresIn | Integer | 否 | 距离过期的天数,当不传时查询全部过期时间 |
| commodityCode | String | 否 | 产品code,当不传时查询全部产品 |
| region | String | 否 | region,当不传时查询全部地域 |
| renewalStatus | String | 是 | 注1 |
| pageIndex | Integer | 是 | 当前页码 |
| pageSize | Integer | 是 | 每页数量 |
<a name="E7Kvo"></a>
#### 返回值格式
- Data:Object
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| list | Array<RenewItem> | 列表数据(成功时返回的信息) |
| renewalStatusCount | renewalStatus | 按续费类型的聚合数据(tab按钮展示list的数值用) |
- Array<RenewItem> 的结构
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| commodityCode | String | 产品Code |
| commodityName | String | 产品名称(需要支持国际化) |
| instanceId | String | 实例ID |
| instanceName | String | 实例名称 |
| spInstanceName | String | 实例名称(rds的展示用) |
| region | String | 地域code |
| regionName | String | 地域名称(需要支持国际化) |
| internetIp | String | 公网IP |
| intranetIp | String | 内网IP |
| databaseType | String | 数据库类型 |
| saleCycle | String | month 包年包月 week 按周** |
| spec | String | 产品规格 |
| renewPeriod | String | 续费周期 |
| renewalDuration | int | 续费时长 ** |
| renewalCycUnit | int | 自动续费周期 ** |
| validTime | Long | 开始时间(unix时间戳,单位毫秒) |
| expireTime | Long | 到期时间(unix时间戳,单位毫秒) |
| expireProcess | String | 到期处理方式 |
- renewalStatusCount的结构
| 属性 | 类型 | 说明 |
| --- | --- | --- |
| normal | Integer | 手动续费的实例数 |
| auto_renewal | Integer | 自动续费的实例数 |
| not_renewal | Integer | 到期不续费的实例数 |
注1: renewalStatus; 续费状态标识(可选) "normal - 手动 auto_renewal -- 自动续费 not_renewal -- 不续费"。
{ “successResponse”: true, “code”: “200”, “requestId”: “daec5c97-9acb-480a-bae8-a6646814d654”, “data”: { “list”: [ { commodityCode: ‘vm’, commodityName: ‘云服务器ECS1 地域不同22’, instanceId: ‘i-m5e0vs1fc9lb4tjq8c1j1’, instanceName: ‘iZm5e0vs1fc9lb4tjq8c1jZ1’, region: ‘cn-qingdao’, regionName: ‘qingdao’, internetIp: ‘118.190.209.23’, intranetIp: ‘172.31.134.169’, databaseType: ‘’, saleCycle: ‘week’, spec: ‘ecs.g5.large’, renewPeriod: ‘1’, orderId: ‘’, validTime: 1547012520000, expireTime: 1589012520000, expireProcess: ‘deleteAfterReserved’ },] }, “renewalStatusCount”: { “not_renewal”:1, “normal”: 0, “auto_renewal”: 0 }, “pageInfo”: { “total”: 0, “pageSize”: 20, “currentPage”: 1 } }
<a name="GBb1j"></a>
# 例2.消费总览接口定义
<a name="tedNz"></a>
#### 接口地址
1. POST consume/consumeOverview/queryMonthProductConsumeOverview.json
<a name="J0z6R"></a>
#### 接口说明
- 每次只查询一个用户的数据。趋势图也使用这个接口。
<a name="2zbYv"></a>
#### 请求参数说明
| 字段 | 必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| resourceUserId | 是 | Number | 资源所有者账号UID。 |
| startMonth | 是 | Number | 起始月 |
| endMonth | 是 | Number | 结束月 |
| pipCode | 否 | String | 产品线code |
| commodityCode | 否 | String | 规格code,产品明细code |
| chargeType | 否 | String | 付费类型:postpay、prepay;<br />不传查所有 |
<a name="HPY1q"></a>
#### 请求参数
{ “resourceUserId”: 12345, “startMonth”:201803, “endMonth”:201804, “pipCode”: “oss”, “commodityCode”: “oss”, “chargeType”:”postpay” }
<a name="lORid"></a>
#### 返回参数说明
- 非必选字段前端不展示,但是导出时会用到
- 返回结果
| 字段 | 必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| data | 是 | List | |
| month | 是 | String | 账期 |
| resourceUserId | 是 | Long | 资源拥有者阿里云ID |
| chargeType | 是 | String | 付费类型 |
| chargeName | 是 | String | 付费类型名称 |
| pipCode | 是 | String | 产品code |
| pipName | 是 | String | 产品名称 |
| commodityCode | 是 | String | 产品明细Code,同规格code |
| commodityName | 是 | String | 产品明细名称 |
| requireAmount | 是 | BigDecimal | 应付金额 |
| currency | 是 | String | 定价货币符号, CNY/USD |
| settleCurrency | 是 | String | 结算货币符号, CNY/USD |
<a name="o1lyx"></a>
#### 返回数据
- **default**
{
“code”: “200”,
“data”: [{
“month”: 201807,
“unclearAmount”: 0,
“cashPayAmount”: 0,
“chargeType”: “后付费”,
“pipCode”: “oss”,
“pipName”: “对象存储OSS(按量付费)”,
“commodityCode”: “oss”,
“commodityName”: “对象存储OSS(按量付费)”,
“voucherPayAmount”: 0,
“discountAmount”: 0,
“requireAmount”: 0,
“productCode”: “oss”,
“resourceUserId”: 1990699401005016,
“resourceUsernId”:”aoe@n.com”,
}],
“requestId”: “@guid”,
“success”: true
}
<a name="0e7f91a7"></a>
# 例2.1 获取当前子账号列表
<a name="4haS9"></a>
#### 接口描述
| 地址 | /enterriseRelation/getEnterpriseRelationList.json |
| --- | --- |
| 请求方法 | POST |
| 描述 | 通过主账号查询当前所有的子账号 |
<a name="Fhubn"></a>
#### 请求参数
| 字段 | 必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| targetID | 否 | Long | 子账号id |
| relationTypeCode | 否 | String | 关联类型 |
| userNick | 否 | String | 用户昵称 |
| uyId | 否 | String | 子账号id |
| status | 否 | String | 关联状态 |
| statusList | 否 | List | 状态列表['related', 'released','rejected', 'confirming', 'bmps_approving', 'change_confirming', 'bpms_denied','change_bpms_approving'(变更审批中)] |
| key | 否 | String | 搜索关键字 |
示例1:
{ “targetID”:”子账号id”, “relationTypeCode”:”关联类型”, “userNick”:”用户昵称”, “uyId”:”子账号云id”, “status”:”关联状态”, “statusList”:”状态列表”, “key”:”搜索关键字” }
<a name="WjPxD"></a>
#### 响应参数
| 字段 | 必选 | 类型 | 说明 |
| --- | --- | --- | --- |
| code | 是 | String | |
| requestId | 是 | String | |
| successResponse | 是 | boolean | |
| pageInfo | 是 | Object | 分页信息(以下接口类似) |
| data | 是 | List | 数据实体(以下接口类似) |
| relationId | 是 | Long | 关联id |
| userId | 是 | String | uid |
| gmtCreated | 是 | String | 关联时间 |
| relationState | 是 | String | 关联状态 |
| relationType | 是 | String | 关联类型 |
| nickName | 是 | String | 昵称 |
| accountType | 是 | String | 账号类型master/child |
| applicationId | 是 | String | |
| roleList | 是 | List | 角色列表[trusteeship] |
示例:
{ “code”: “200”, “pageInfo”: { “total”: 1, “currentPage”: 1, “pageSize”: 10 }, “data”: [ { “relationId”: “关联id”, “uyyunId”: “用户登录名id”, “userId”: “uid”, “gmtCreated”:”关联时间”, “relationState”:”关联状态”, “relationType”:”关联类型”, “nickName”:”昵称”, “accountType”:”账号类型master/child”, “applicationId”:””, “hasFinanceIdentity”:”是否有信控权限”, “roleList”:”角色列表” “privList”:”权限列表” } ], “requestId”: “9bcc88dc-59e9-a13e-6d8d7f0e2ae7”, “message”: “successful”, “successResponse”: true }
<a name="gtvE6"></a>
# 例3.提交导出任务
<a name="6a1b8300"></a>
## 3.1 获取验证码图片链接接口
<a name="dadb267d"></a>
#### 接口描述(用户中心统一导出能力前端接入)
| 地址 | /api/captcha/getCaptcha.json |
| --- | --- |
| 请求方法 | POST |
| 描述 | 获取验证码图片链接 |
| 域名 | |
<a name="527466ff"></a>
#### 请求参数
- 无
<a name="aef1f359"></a>
#### 响应参数
| 名称 | 类型 | 含义 |
| --- | --- | --- |
| imgLink | String | 验证码图片链接 |
示例:
```json
{
"code": "200",
"data": {
"imgLink": "http://afad.com"
},
"requestId": "9bcc88dc-5998-4fe9-a13e-6d8d7f0e2ae7",
"message": "successful",
"success": true
}
3.2 提交异步导出任务接口
接口描述
地址 | /api/export/submitAsyncTask.json |
---|---|
请求方法 | POST |
描述 | 提交异步导出任务 |
域名 |
请求参数
名称 | 类型 | 是否必填 | 含义 |
---|---|---|---|
verifyCode | String | 是 | 验证码 |
fromApp | String | 是 | 来源业务系统 |
fileType | String | 否 | 导出文件类型。不填,默认csv |
tableType | String | 是 | 导出报表类型 |
bizParamMap | Map |
是 | 导出业务参数,供业务方导出时使用,建议与查询类接口形式一致 |
- 说明:
- fromApp、tableType、bizParam对每个导出场景都不一样,请与具体的业务开发确认。如代金券的导出请和代金券开发确认。
- bizParam中不需要添加当前用户的ID。用户ID费用中心的统一提交任务接口会自动获取,后台填到任务的属性中。业务后端,在实现导出SPI时以exportParam.userId为准。
示例:
{
"verifyCode": "ABDF",
"fromApp": "ucv2-service-uyId-comcomcom",
"fileType": "csv",
"tableType": "FUND_FLOW",
"bizParamMap": {
"month": 201901,
"commodityCode": "rds"
}
}
响应参数
名称 | 类型 | 含义 |
---|---|---|
code | String | 结果码 |
data | Long | 任务ID,提交失败,返回null |
message | String | 结果信息 |
示例:
{
"code": "200",
"data": 1233,
"requestId": "9bcc88dc-5998-4fe9-a13e-6d8d7f0e2ae7",
"message": "successful",
"success": true
}