
# 购买DDM实例
#### 功能介绍
购买一个DDM实例。
#### 接口约束
DDM运行于虚拟私有云。申请DDM实例前，需保证有可用的虚拟私有云，并且已配置好子网与安全组。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/DDM/doc?api=CreateInstance)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
POST /v1/{project_id}/instances
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                                                   |
|:---|:---|:---|:---|
| project_id | 是    | String | 租户在某一region下的project ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-ddm/ddm_api_01_0063.html)。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                 |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。 通过调用IAM服务的"获取用户Token"接口来获取。 |
   
表3请求Body参数 
| 参数           | 是否必选 | 参数类型                                                                                | 描述                     |
|:---|:---|:---|:---|
| instance     | 是    | [CreateInstanceDetail] object           | 实例相关信息的集合。             |
| extend_param | 否    | [CreateInstanceExtendParam] object | 扩展参数，包年/包月类型实例相关信息的集合。 |
   
 表4CreateInstanceDetail 
| 参数                    | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| name                  | 是    | String           | DDM实例名称，命名要求如下。 - 长度为4-64个字符。  - 必须以字母开头。  - 可以包含字母、数字、中划线、下划线，不能包含其它特殊字符。                   |
| flavor_id             | 是    | String           | 规格ID。                                                                                                                                                                                                                                                                                                                                       |
| node_num              | 是    | Integer          | 节点个数。                                                                                                                                                                                                                                                                                                                                       |
| engine_id             | 是    | String           | 引擎ID。                                                                                                                                                                                                                                                                                                                                       |
| enterprise_project_id | 否    | String           | 企业项目ID。                                                                                                                                                                                                                                                                                                                                     |
| available_zones       | 是    | Array of strings | 可用区code。取值非空，请参见[地区和终端节点](https://console.huaweicloud.com/apiexplorer/#/endpoint/DDM)。                                                                                                                                                                                                                                                      |
| vpc_id                | 是    | String           | 虚拟私有云的ID。                                                                                                                                                                                                                                                                                                                                   |
| security_group_id     | 是    | String           | 安全组ID。                                                                                                                                                                                                                                                                                                                                      |
| subnet_id             | 是    | String           | 子网ID。                                                                                                                                                                                                                                                                                                                                       |
| param_group_id        | 否    | String           | 参数组ID。                                                                                                                                                                                                                                                                                                                                      |
| time_zone             | 否    | String           | UTC时区。默认为UTC。取值范围："UTC","UTC-12:00","UTC-11:00","UTC-10:00","UTC-09:00", "UTC-08:00", "UTC-07:00", "UTC-06:00", "UTC-05:00", "UTC-04:00", "UTC-03:00", "UTC-02:00", "UTC-01:00", "UTC+01:00", "UTC+02:00", "UTC+03:00", "UTC+04:00", "UTC+05:00", "UTC+06:00", "UTC+07:00", "UTC+08:00", "UTC+09:00", "UTC+10:00", "UTC+11:00", "UTC+12:00" |
| admin_user_name       | 否    | String           | 管理员账号用户名。 - 长度为1-32个字符。  - 必须以字母开头。  - 可以包含字母，数字、下划线，不能包含其它特殊字符。                              |
| admin_user_password   | 否    | String           | 管理员账号密码。 - 长度为8\~32位。  - 必须是大写字母（A\~Z）、小写字母（a\~z）、数字（0\~9）、特殊字符\~!@#%\^\*-_+?的组合。 建议您输入高强度密码，以提高安全性，防止出现密码被暴力破解等安全风险。                                         |
   
 表5CreateInstanceExtendParam 
| 参数            | 是否必选 | 参数类型    | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| charge_mode   | 否    | String  | 计费模式，取值范围： - prePaid：预付费，即包年/包月。  - postPaid：后付费，即按需付费。 默认值为postPaid。   缺省值：**postPaid** 枚举值： - **prePaid**  - **postPaid**         |
| period_type   | 否    | String  | 订购周期类型，取值范围： - month：月。  - year：年。 "charge_mode"参数配置为"prePaid"时该参数有效且为必选值。   枚举值： - **month**  - **year**                                                                |
| period_num    | 否    | Integer | 订购周期数，取值范围： - period_type=month（周期类型为月）时，取值为\[1，9\]。  - period_type=year（周期类型为年）时，取值为1。 "charge_mode"参数配置为"prePaid"时该参数有效且为必选值。                                                                                                                                                                                                                           |
| is_auto_renew | 否    | String  | 是否自动续订，取值范围： - "true"：自动续订。  - "false"：不自动续订。 "charge_mode"参数配置为"prePaid"时该参数有效，不传该字段时默认为不自动续订。   枚举值： - **true**  - **false**                                            |
| is_auto_pay   | 否    | String  | 下单订购后，是否自动从客户的账户的余额中支付，取值范围： - "true"：是（自动从客户账户的余额中支付）。  - "false"：否（需要客户手动支付）。 "charge_mode"参数配置为"prePaid"时该参数有效，不传该字段时默认为客户手动支付。   枚举值： - **true**  - **false**   |
   
#### 响应参数
**状态码： 200**
表6响应Body参数 
| 参数       | 参数类型   | 描述                                                        |
|:---|:---|:---|
| id       | String | 实例ID。创建按需付费实例时返回该参数。                                      |
| job_id   | String | 创建实例的任务ID。 仅创建按需实例时会返回该参数。 |
| order_id | String | 订单号，创建包年/包月实例时返回该参数。                                      |
   
**状态码： 400**
表7响应Body参数 
| 参数              | 参数类型   | 描述    |
|:---|:---|:---|
| errCode         | String | 业务错误码 |
| externalMessage | String | 错误信息  |
   
**状态码： 500**
表8响应Body参数 
| 参数              | 参数类型   | 描述    |
|:---|:---|:---|
| errCode         | String | 业务错误码 |
| externalMessage | String | 错误信息  |
   
#### 请求示例
- 创建按需付费实例，默认按照实际使用时长计费。
  ```
  POST https://{endpoint}/v1/{project_id}/instances
  {
    "instance" : {
      "name" : "ddm-test-001",
      "flavor_id" : "8f2e696c-a9c1-30bd-af90-25522bc67606",
      "node_num" : 4,
      "engine_id" : "2325a707-0361-8be6-dd01-13474bbac437",
      "enterprise_project_id" : "0",
      "available_zones" : [ "az1" ],
      "vpc_id" : "e1d886ec-cfe7-4cd4-b748-fc55a10b4172",
      "security_group_id" : "035b70ed-319b-4086-9fd7-62a2e8548b2e",
      "subnet_id" : "f942f970-1a02-4eee-8927-xxxxxxxx",
      "param_group_id" : "035b70ed-319b-4086-9fd7-xxxxxxxx"
    }
  }
  ```
  
- 创建包周期实例，订购周期为一个月，自动从账户余额中支付，到期自动续订。
  ```
  POST https://{endpoint}/v1/{project_id}/instances
  {
    "instance" : {
      "name" : "ddm-test-003",
      "flavor_id" : "8f2e696c-a9c1-30bd-af90-25522bc67606",
      "node_num" : 4,
      "engine_id" : "2325a707-0361-8be6-dd01-13474bbac437",
      "enterprise_project_id" : "0",
      "available_zones" : [ "az1" ],
      "vpc_id" : "e1d886ec-cfe7-4cd4-b748-fc55a10b4172",
      "security_group_id" : "035b70ed-319b-4086-9fd7-62a2e8548b2e",
      "subnet_id" : "f942f970-1a02-4eee-8927-xxxxxxxx",
      "param_group_id" : "035b70ed-319b-4086-9fd7-xxxxxxxx"
    },
    "extend_param" : {
      "charge_mode" : "prePaid",
      "period_type" : "month",
      "period_num" : 1,
      "is_auto_renew" : "true",
      "is_auto_pay" : "true"
    }
  }
  ```
  
 
#### 响应示例
**状态码： 200**
OK
按需：
```
{
  "id": "e90bc6739a3c4666a577c3fa1524dac2in09", 
  "job_id": "3ae783f3-844e-4051-abd5-b9cc65899785",
  "order_id": null 
}
```
包周期：
```
{
  "id" : null, 
  "job_id": null,
  "order_id" : "CS1810251738L8VVD" 
}
```
**状态码： 400**
bad request
```
{
  "externalMessage" : "Parameter error.",
  "errCode" : "DBS.280001"
}
```
**状态码： 500**
server error
```
{
  "externalMessage" : "Server failure.",
  "errCode" : "DBS.200412"
}
```
#### 状态码
| 状态码 | 描述           |
|:---|:---|
| 200 | OK           |
| 400 | bad request  |
| 500 | server error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-ddm/ddm_api_01_0061.html)。
