# Creating a VPC

#### Function

This API is used to create a VPC.

#### URI

POST /v1/{project_id}/vpcs

Table 1 describes the parameters.

Table 1 Parameter description
Name | Mandatory | Description
--- | --- | ---
project_id | Yes | Specifies the project ID.

#### Request Message

- Request parameter

  Table 2 Request parameter
  Name | Mandatory | Type | Description
  --- | --- | --- | ---
  vpc | Yes | vpc object | Specifies the VPC objects.

  Table 3 VPC objects
  Name | Mandatory | Type | Description
  --- | --- | --- | ---

  name

  No

  String

  - Specifies the VPC name.
  - The value can contain no more than 64 characters, including letters, digits, underscores (_), hyphens (-), and periods (.).
  - Each VPC name of a tenant must be unique if the VPC name is not left blank.

  description

  No

  String

  - Provides supplementary information about the VPC.
  - The value can contain no more than 255 characters and cannot contain angle brackets (< or >).

  cidr

  No

  String

  - Specifies the available IP address ranges for subnets in the VPC.
  - Possible values are as follows:
    - 10.0.0.0/8-24
    - 172.16.0.0/12-24
    - 192.168.0.0/16-24
  - If cidr is not specified, the default value is left blank.
  - The value must be in CIDR format, for example, 192.168.0.0/16.

  enterprise_project_id

  No

  String

  - Specifies the enterprise project ID. When creating a VPC, you can associate an enterprise project ID with the VPC.
  - The value is 0 or a string that contains a maximum of 36 characters in UUID format with hyphens (-). Value 0 indicates the default enterprise project.
  NOTE:

  This parameter is unsupported. Do not use it.

- Example request

      POST https://{Endpoint}/v1/{project_id}/vpcs

      {
          "vpc": {
              "name": "vpc",
              "description": "test",
              "cidr": "192.168.0.0/16",
              "enterprise_project_id": "0aad99bc-f5f6-4f78-8404-c598d76b0ed2"
          }
      }

#### Response Message

- Response parameter

  Table 4 Response parameter
  Name | Type | Description
  --- | --- | ---
  vpc | vpc object | Specifies the VPC objects.

  Table 5 VPC objects
  Name | Type | Description
  --- | --- | ---
  id | String | Specifies a resource ID in UUID format.

  name

  String

  - Specifies the VPC name.
  - The value can contain no more than 64 characters, including letters, digits, underscores (_), hyphens (-), and periods (.).
  - Each VPC name of a tenant must be unique if the VPC name is not left blank.

  description

  String

  - Provides supplementary information about the VPC.
  - The value can contain no more than 255 characters and cannot contain angle brackets (< or >).

  cidr

  String

  - Specifies the available IP address ranges for subnets in the VPC.
  - Possible values are as follows:
    - 10.0.0.0/8-24
    - 172.16.0.0/12-24
    - 192.168.0.0/16-24
  - If cidr is not specified, the default value is left blank.
  - The value must be in CIDR format, for example, 192.168.0.0/16.

  status

  String

  - Specifies the VPC status.
  - Possible values are as follows:
    - CREATING: The VPC is being created.
    - OK: The VPC is created successfully.

  routes

  Array of route objects

  - Specifies the route information.
  - For details, see the description of the route objects.

  enable_shared_snat | Boolean | Specifies whether the shared SNAT function is enabled. The value true indicates that the function is enabled, and the value false indicates that the function is not enabled.

  enterprise_project_id

  String

  - Specifies the enterprise project ID.
  - The value is 0 or a string that contains a maximum of 36 characters in UUID format with hyphens (-). Value 0 indicates the default enterprise project.
  NOTE:

  This parameter is unsupported. Do not use it.

  Table 6 route objects
  Name | Type | Description
  --- | --- | ---

  destination

  String

  - Specifies the destination network segment of a route.
  - The value must be in the CIDR format. Currently, only the value 0.0.0.0/0 is supported.

  nexthop

  String

  - Specifies the next hop of a route.
  - The value must be an IP address and must belong to the subnet in the VPC. Otherwise, this value does not take effect.

- Example response

      {
       "vpc":
           {
           "id": "99d9d709-8478-4b46-9f3f-2206b1023fd3",
           "name": "vpc",
           "description": "test",
           "cidr": "192.168.0.0/16",
           "status": "CREATING",
           "enterprise_project_id": "0aad99bc-f5f6-4f78-8404-c598d76b0ed2",
           "routes": []
           }
      }

#### Status Code

See Status Codes.

#### Error Code

See Error Codes.

Parent topic: Virtual Private Cloud