Creation of a VPC via REST API is a two-stage process:
PATCH https://<nsx-manager-IP>/policy/api/v1/orgs/<org>/projects/<project>/vpcs/<vpc>
{
"display_name": "<vpc_display_name>",
"private_ips": [
"<IP_CIDR>"
]
}GET https://<nsx-manager-IP>/policy/api/v1/orgs/<org>/projects/<project>/vpc-connectivity-profiles/default
PATCH https://<nsx-manager-IP>/policy/api/v1/orgs/<org>/projects/<project>/vpcs/<project-name>/attachments/1{
"vpc_connectivity_profile": "/orgs/<org>/projects/<project>/vpc-connectivity-profiles/default"
}Alternatively, you can create a VPC using Hierarchical API:
PATCH https://<nsx-manager-IP>/policy/api/v1/orgs/<org>/projects/<project>/infra?enforce_revision_check=trueRef. PATCH /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra
{
"resource_type": "OrgRoot",
"children": [
{
"resource_type": "ChildResourceReference",
"id": "default",
"target_type": "Org",
"children": [
{
"resource_type": "ChildResourceReference",
"id": "<project>",
"target_type": "Project",
"children": [
{
"Vpc": {
"vpc_service_profile": "/orgs/<org>/projects/<project_id>/vpc-service-profiles/default",
"private_ips": [
"<IP_CIDR>"
],
"description": null,
"tags": null,
"load_balancer_vpc_endpoint": {
"enabled": false
},
"resource_type": "Vpc",
"id": "<vpc-name>",
"children": [
{
"VpcAttachment": {
"vpc_connectivity_profile": "/orgs/<org>/projects/<project>/vpc-connectivity-profiles/default",
"resource_type": "VpcAttachment",
"id": "default"
},
"resource_type": "ChildVpcAttachment"
}
]
},
"resource_type": "ChildVpc"
}
]
}
]
}
]
}