
# 更换云服务器计费模式 - ChangeServerChargeMode
#### 功能介绍
更换云服务器的计费模式。
#### 接口约束
- 仅支持更换按需计费模式为包年/包月计费模式。
- 最大支持批量更换10个弹性云服务器计费模式。
- 更换计费模式的云服务器绑定的弹性公网IP类型必须是"独享"，"按带宽计费"。
- 挂载了共享云硬盘、DSS硬盘以及DESS硬盘的服务器不支持更改计费模式。
- 若想使用优惠券，请将prepaid_options中的字段auto_pay设置为false，参考"[支付包年/包月产品订单](https://support.huaweicloud.com/api-bpconsole/api_order_00016.html)"进行支付，或者在华为云控制台使用优惠券进行支付。
- 不支持专属主机、专属云以及边缘云下的云服务器更换计费模式。
- 不支持竞价实例更换计费模式。
 
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/ECS/doc?api=ChangeServerChargeMode)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-ecs/ecs_06_0000.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
 
| 授权项                               | 访问级别  | 资源类型（\*为必须） | 条件键                                                                                                                                                                                                            | 别名 | 依赖的授权项                                                                                                                                                                                                              |
|:---|:---|:---|:---|:---|:---|
| ecs:cloudServers:changeChargeMode | write | instance \* | - g:ResourceTag/\<tag-key\>  - g:EnterpriseProjectId   | -  | - billing:order:pay  - billing:subscription:renew   |
   
#### URI
POST /v1/{project_id}/cloudservers/actions/change-charge-mode
参数说明请参见[表1]。
 表1参数说明 
| 参数         | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| project_id | 是    | **参数解释：** 项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-ecs/ecs_01_0016.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
#### 请求消息
表2请求参数 
| 参数              | 是否必选 | 参数类型            | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| server_ids      | 是    | Array of String | **参数解释：** 按需转包年/包月的云服务器ID列表。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| charge_mode     | 是    | String          | **参数解释：** 更换后的计费模式。 **约束限制：** 不涉及 **取值范围：** prePaid: 将当前虚拟机计费方式改为包年/包月计费。 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| prepaid_options | 否    | Object          | **参数解释：** 包年/包月选项，当charge_mode为prePaid时必选。 详情请参见[表3]。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                     |
| dry_run         | 否    | Boolean         | **参数解释** **：** 是否预检此次请求。配置为预检时，此次请求不会更换云服务器计费模式。 **约束限制：** 不涉及 **取值范围：** - true：预检此次请求，检查项包括是否填写了必需参数、请求格式等。 - 如果检查不通过，则返回对应错误。  - 如果检查通过，则返回202状态码。      - false：发送正常请求，不对请求体做预检。   **默认取值：** false |
   
 表3prepaid_options数据结构说明 
| 参数                 | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|:---|
| include_data_disks | 否    | Boolean | **参数解释：** 是否连同所有的按需计费的数据盘一起转为包年/包月。 **约束限制：** 挂载了共享云硬盘、DSS硬盘以及DESS硬盘的的服务器不支持更改计费模式。 **取值范围：** - true：支持按需数据盘（包括非共享云硬盘）转包年/包月。  - false：不支持按需数据盘转包年/包月。   **默认取值：** false                                              |
| include_publicips  | 否    | Boolean | **参数解释：** 是否连同"独享"、"按带宽计费"的弹性公网IP一起转包年/包月。 转包年/包月计费模式后，弹性公网IP转包年/包月之后可以单独解绑，删除等，与云服务器不是一个整体。 **约束限制：** 不涉及 **取值范围：** - true：连同弹性公网IP一起转包年/包月。  - false：不连同弹性公网IP一起转包年/包月。   **默认取值：** false |
| period_type        | 是    | String  | **参数解释：** 订购周期类型。 **约束限制：** 不涉及 **取值范围:** - month：月  - year：年   **默认取值：** 不涉及                                                                                                                                                    |
| period_num         | 是    | String  | **参数解释：** 订购周期的周期数。 **约束限制：** 不涉及 **取值范围:** - period_type=month时，取值为\[1,9\]。  - period_type=year，取值为\[1,3\]。   **默认取值：** 不涉及                                                                                                  |
| auto_pay           | 否    | Boolean | **参数解释**： 是否自动支付。 **约束限制：** 不涉及 **取值范围：** - true: 自动支付，需要确保账户余额充足，如果余额不足则会生成异常订单，只能作废此订单。  - false: 只生成订单不扣费。   **默认取值：** false                                                                                        |
| auto_renew         | 否    | Boolean | **参数解释：** 是否自动续费。 **约束限制：** 不涉及 **取值范围：** - true: 自动续费  - false: 不开启自动续费   **默认取值：** false                                                                                                                           |
   
#### 响应消息
表4参数说明 
| 参数       | 参数类型   | 描述                                                                                                                                                                                                                                             |
|:---|:---|:---|
| order_id | String | **参数解释：** 转包年/包月的订单ID。 **取值范围：** 不涉及                                                                                                                      |
| job_id   | String | **参数解释：** 提交任务成功后返回的任务ID，用户可以使用该ID对任务执行情况进行查询。如何根据job_id来查询Job的执行状态，请参考[查询Job状态](https://support.huaweicloud.com/api-ecs/ecs_02_0900.html)。 **取值范围：** 不涉及 |
   
#### 请求示例
更换云服务器及其绑定的"独享"、"按带宽计费"的弹性公网IP的计费模式为包年/包月，订购周期1个月。
```
POST https://{endpoint}/v1/{project_id}/cloudservers/actions/change-charge-mode
{
    "server_ids": [
        "f631ee2c-1caf-4c4f-9cee-f3181b8e44ad"
    ],
    "charge_mode": "prePaid",
    "prepaid_options": {
        "include_publicips": true,
        "include_data_disks": false,
        "period_type": "month",
        "period_num": "1",
        "auto_pay": false,
        "auto_renew": false
    },
    "dry_run": false
}
```
#### 响应示例
```
{
    "order_id": "CS2102041657OL0EY",
    "job_id": "ff8080819f18f29d019f599da539261a"
}
```
#### 返回值
请参考[通用请求返回值](https://support.huaweicloud.com/api-ecs/ecs_07_0001.html)。
#### 错误码
请参考[错误码](https://support.huaweicloud.com/api-ecs/ecs_07_0002.html)。
