无特殊说明,所有接口具有如下统一约定
{ “code”: “200”, //code非200,会被统一拦截报错,弹窗提示取值 message “message”: “错误信息”, // 只有code非200时,前端才会调用这个message “requestId”: “xxx”, // 一般用于定位报错和日志问题用 “data”: { “gmtCreated”: “关联时间”, “relationState”: “关联状态”, “relationType”: “关联类型”, “list”: [] }, // pageInfo不一定需要,但如果有请一定是这几个字段,不能是其他字段名称 “pageInfo”: { “currentPage”: 1, “pageSize”: 10, “total”: 100 } }
<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}
