:original_name: vpc_api01_0003.html
.. _vpc_api01_0003:
Querying VPCs
=============
Function
--------
This API is used to query VPCs using search criteria and to display the VPCs in a list.
URI
---
GET /v1/{project_id}/vpcs
Example:
.. code-block:: text
GET https://{Endpoint}/v1/{project_id}/vpcs?limit=10&marker=13551d6b-755d-4757-b956-536f674975c0
:ref:`Table 1 ` describes the parameters.
.. _vpc_api01_0003__table39337169:
.. table:: **Table 1** Parameter description
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Name | Mandatory | Type | Description |
+=======================+=================+=================+=============================================================================================================================================================================================================================================================+
| project_id | Yes | String | Specifies the project ID. |
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| marker | No | String | Specifies a resource ID for pagination query, indicating that the query starts from the next record of the specified resource ID. |
| | | | |
| | | | This parameter can work together with the parameter **limit**. |
| | | | |
| | | | - If parameters **marker** and **limit** are not passed, resource records on the first page will be returned. |
| | | | - If the parameter **marker** is not passed and the value of parameter **limit** is set to **10**, the first 10 resource records will be returned. |
| | | | - If the value of the parameter **marker** is set to the resource ID of the 10th record and the value of parameter **limit** is set to **10**, the 11th to 20th resource records will be returned. |
| | | | - If the value of the parameter **marker** is set to the resource ID of the 10th record and the parameter **limit** is not passed, resource records starting from the 11th records (including 11th) will be returned. |
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| limit | No | Integer | Specifies the number of records that will be returned on each page. The value is from 0 to intmax (2^31-1). The default value is 2000. |
| | | | |
| | | | **limit** can be used together with **marker**. For details, see the parameter description of **marker**. |
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| enterprise_project_id | No | String | - Specifies the enterprise project ID. This field can be used to filter out the VPCs associated with a specified enterprise project. |
| | | | - 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. To obtain the VPCs bound to all enterprise projects of the user, set **all_granted_eps**. |
| | | | - If this parameter is not specified, VPCs in the default enterprise project are queried and are authenticated based on the default enterprise project. |
+-----------------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Request Parameters
------------------
None
Example Request
---------------
.. code-block:: text
GET https://{Endpoint}/v1/{project_id}/vpcs
Response Parameters
-------------------
.. table:: **Table 2** Response parameter
+------+--------------------------------------------------------------+---------------------+
| Name | Type | Description |
+======+==============================================================+=====================+
| vpcs | Array of :ref:`vpcs ` objects | Specifies the VPCs. |
+------+--------------------------------------------------------------+---------------------+
.. _vpc_api01_0003__table65129753:
.. table:: **Table 3** Description of the **vpcs** field
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| routes | Array of :ref:`route ` objects | - Specifies the route information. |
| | | - For details, see :ref:`Table 4 `. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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. |
+-----------------------+--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. _vpc_api01_0003__table3576833291556:
.. table:: **Table 4** **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
----------------
.. code-block::
{
"vpcs": [
{
"id": "13551d6b-755d-4757-b956-536f674975c0",
"name": "default",
"description": "test",
"cidr": "172.16.0.0/16",
"status": "OK",
"enterprise_project_id": "0",
"routes": [],
"enable_shared_snat": false
},
{
"id": "3ec3b33f-ac1c-4630-ad1c-7dba1ed79d85",
"name": "222",
"description": "test",
"cidr": "192.168.0.0/16",
"status": "OK",
"enterprise_project_id": "0635d733-c12d-4308-ba5a-4dc27ec21038",
"routes": [],
"enable_shared_snat": false
},
{
"id": "99d9d709-8478-4b46-9f3f-2206b1023fd3",
"name": "vpc",
"description": "test",
"cidr": "192.168.0.0/16",
"status": "OK",
"enterprise_project_id": "0",
"routes": [],
"enable_shared_snat": false
}
]
}
Status Code
-----------
See :ref:`Status Codes `.
Error Code
----------
See :ref:`Error Codes `.