---
title: "Update VPC Virtualization"
method: PATCH
path: "/v2/org/{org}/nico/vpc/{vpcId}/virtualization"
tags: ["VPC"]
---

# Update VPC Virtualization

`PATCH /v2/org/{org}/nico/vpc/{vpcId}/virtualization`

Update network virtualization type for a VPC

Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix

Tenant must own the VPC
Request is rejected if the VPC already has Subnets or Instances.

## Request body

- VpcVirtualizationUpdateRequest — Request data to update network virtualization type for VPC. Requests are rejected if the VPC already has Subnets or Instances.
  - `networkVirtualizationType` 'FNN' — Network virtualization type of the VPC. Can only be updated to `FNN`

## Response `200`

OK

- VPC — VPCs are grouping constructs that bind resources together
  - `id` string, uuid — ID of the VPC
  - `name` string — Name of the VPC
  - `description` string, nullable — Description of the VPC, can be empty
  - `org` string — Organization the VPC belongs to
  - `tenantId` string, uuid — ID of the Tenant the VPC belongs to
  - `siteId` string, uuid — ID of the Site the VPC belongs to
  - `controllerVpcId` string, uuid, nullable — Legacy attribute, contains the same value as ID
  - `networkVirtualizationType` 'ETHERNET_VIRTUALIZER' | 'FNN' | 'FLAT', nullable — Network virtualization type of the VPC. Flat VPCs hold instances on zero-DPU hosts (or hosts with their DPU in NIC mode); their interfaces are bound to underlay (HostInband) network segments and NICo does not drive their data plane.
  - `slaacEnabled` boolean — Whether this VPC uses SLAAC allocation mode for instance IPv6 interfaces. When true, Core allocates a `/64` to each interface that includes IPv6 and retains the prefix without assigning a concrete IPv6 host address. This value is fixed when the VPC is created. NICo does not yet configure router advertisements (RAs); that support is tracked by https://github.com/NVIDIA/infra-controller/issues/2398.
  - `routingProfile` string, nullable — Routing profile type for the VPC. Populated when Site has Native Networking enabled and network virtualization type is `FNN`.
  - `powerResourceGroup` string, nullable — External power provisioning resource group associated with the VPC.
  - `routingProfileOverrides` VpcRoutingProfileOverrides — Presence-aware routing-profile properties set directly on a VPC. Each present property replaces the corresponding named-profile value; omitted properties inherit from that profile.
    - `routeTargetImports` VpcRouteTarget[], nullable — Route targets imported into the VPC. An empty array overrides the named profile with no imports.
      - `asn` integer — Autonomous system number.
      - `vni` integer — Route-target VNI.
    - `routeTargetsOnExports` VpcRouteTarget[], nullable — Route targets attached to VPC exports. An empty array overrides the named profile with no export targets.
      - `asn` integer — Autonomous system number.
      - `vni` integer — Route-target VNI.
    - `leakDefaultRouteFromUnderlay` boolean, nullable — Whether the underlay default route is leaked into the VPC.
    - `leakTenantHostRoutesToUnderlay` boolean, nullable — Whether tenant host routes are leaked into the underlay.
    - `tenantLeakCommunitiesAccepted` boolean, nullable — Whether tenant-supplied route-leak communities are honored.
    - `acceptedLeaksFromUnderlay` string[], nullable — IPv4 or IPv6 CIDR prefixes allowed to leak from the underlay. An empty array disables explicitly accepted leaks.
    - `allowedAnycastPrefixes` string[], nullable — IPv4 or IPv6 CIDR prefixes tenant hosts may announce as anycast routes. An empty array disables anycast announcements.
  - `effectiveRoutingProfile` VpcEffectiveRoutingProfile — Fully resolved routing profile computed by Core from the named profile and the VPC overrides.
    - `routeTargetImports` VpcRouteTarget[], required
      - `asn` integer — Autonomous system number.
      - `vni` integer — Route-target VNI.
    - `routeTargetsOnExports` VpcRouteTarget[], required
      - `asn` integer — Autonomous system number.
      - `vni` integer — Route-target VNI.
    - `leakDefaultRouteFromUnderlay` boolean, required
    - `leakTenantHostRoutesToUnderlay` boolean, required
    - `tenantLeakCommunitiesAccepted` boolean, required
    - `acceptedLeaksFromUnderlay` string[], required
    - `allowedAnycastPrefixes` string[], required
    - `internal` boolean, required — Operator-controlled internal-routing classification inherited from the named profile.
    - `accessTier` integer, required — Operator-controlled access tier inherited from the named profile.
  - `requestedVni` integer, nullable — Explicitly requested VNI for the VPC if one was requested at creation time
  - `vni` integer, nullable — Active VNI assigned to the VPC
  - `networkSecurityGroupId` string, nullable — ID of the Network Security Group attached to the VPC
  - `networkSecurityGroupPropagationDetails` NetworkSecurityGroupPropagationDetails — The Network Security Group propagation details for a VPC or Instance
    - `objectId` string, uuid — The ID of the object (VPC/Instance etc.)
    - `detailedStatus` 'None' | 'Partial' | 'Full' | 'Unknown' | 'Error' — The detailed propagation status that was actually returned from NICo
    - `status` 'Synchronizing' | 'Synchronized' | 'Error' — Status values for Network Security Group propagation
    - `details` string, nullable — Additional details for the status
    - `unpropagatedInstanceIds` string[] — IDs of Instances associated with the object that have not yet updated their Network Security Group rules
    - `relatedInstanceIds` string[] — IDs of the instances involved in determining the propagation status
    - `deprecations` Deprecation[] — Deprecations active for this resource. Returned only if there are active deprecations.
      - `attribute` string, nullable — Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.
      - `queryParam` string, nullable — Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.
      - `endpoint` string, nullable — API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.
      - `replacedBy` string, nullable — Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.
      - `takeActionBy` string, date-time — Date/time by which clients should migrate away from the deprecated API surface
      - `notice` string — Message describing the deprecation
  - `nvLinkLogicalPartitionId` string, uuid, nullable — ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to
  - `labels` Labels
  - `status` 'Pending' | 'Provisioning' | 'Ready' | 'Configuring' | 'Deleting' | 'Error' — Status values for VPC objects
  - `statusHistory` StatusDetail[] — History of status changes for the VPC
    - `status` string — State of the associated entity at a particular time
    - `message` string, nullable — Description of the state and cause/remedy in case of error
    - `created` string, date-time — Date/time when the associated entity assumed the status
    - `updated` string, date-time — Date/time when the associated entity was last observed with this status
  - `created` string, date-time — Date/time when VPC was created
  - `updated` string, date-time — Date/time when VPC was last updated

## Other responses

- `400` — Error response when request data cannot be validated
- `403` — Error response when user is not authorized to call an endpoint or retrieve/modify objects

## Changes

- **2026-08-24** `9c78a8936b34` — 1 info
  - added the optional property `powerResourceGroup` to the response with the `200` status
- **2026-08-20** `a482c2d8f5e2` — 1 info
  - added the optional property `slaacEnabled` to the response with the `200` status
- **2026-08-19** `484497856a94` — 9 breaking
  - the `effectiveRoutingProfile/accessTier` response's property type/format changed from `integer`/`int64` to `integer`/`uint32` for status `200`
  - the `effectiveRoutingProfile/routeTargetImports/items/asn` response's property type/format changed from `integer`/`int64` to `integer`/`uint32` for status `200`
  - the `effectiveRoutingProfile/routeTargetImports/items/vni` response's property type/format changed from `integer`/`int64` to `integer`/`uint32` for status `200`
  - the `effectiveRoutingProfile/routeTargetsOnExports/items/asn` response's property type/format changed from `integer`/`int64` to `integer`/`uint32` for status `200`
  - …5 more
- **2026-08-04** `d9f587ccd19a` — 2 info
  - added the optional property `effectiveRoutingProfile` to the response with the `200` status
  - added the optional property `routingProfileOverrides` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api/changes/v2/org/:org/nico/vpc/:vpcId/virtualization/patch.md)

---

[API](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api.md) · [All operations](https://skmtc.dev/nvidia/apis/nvidia-infra-controller-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nvidia/nvidia-infra-controller-rest-api/revisions/2096eb1db2c1/schema)
