eqixiacEquinix Infrastructure as Code

Network Edge

Virtual network devices, device links, BGP peerings, VPNs, ACL templates, backups and setup data.

Scope#

Network Edge runs virtual network functions (routers, firewalls, SD-WAN gateways, load balancers) from third-party vendors on Equinix-operated hardware in a metro. A device attaches to Fabric like a port does, so it can be the A-side or Z-side of a virtual connection. The SDK covers the 66 endpoints of network-edgev1 1.0.0.

AccessorResource
devices()Virtual devices, device types, interfaces, images, ACLs, reboot, RMA, license files
deviceLinks()Device link groups between devices
bgpPeerings()BGP peering over a Fabric connection
vpns()IPsec VPN from a device
aclTemplates()ACL templates
publicKeys()SSH public keys
backups()Configuration backups and restore feasibility
setup()Accounts, metros, agreements, pricing, order summary, file upload

Catalog and prerequisites#

Java
import com.eqixiac.equinix.core.enums.MetroCode;
import com.eqixiac.equinix.networkedge.model.Account;
import com.eqixiac.equinix.networkedge.model.DeviceType;

for (DeviceType type : networkEdge.devices().listDeviceTypes()) {
    System.out.println(type.getDeviceTypeCode() + " " + type.getVendor() + " " + type.getName());
}
for (Account account : networkEdge.setup().listAccounts(MetroCode.DC)) {
    System.out.println(account.getAccountNumber() + " " + account.getAccountName());
}

A device type lists the valid combinations of core count, software package, version, license mode and throughput, and the service rejects a create with a combination that the type does not list.

Device create#

Java
import com.eqixiac.equinix.core.enums.BandwidthUnit;
import com.eqixiac.equinix.networkedge.enums.DeviceManagementType;
import com.eqixiac.equinix.networkedge.enums.LicenseType;
import com.eqixiac.equinix.networkedge.model.Device;

Device router = networkEdge.devices().define("c8000v-dc-01")
    .withDeviceTypeCode("C8000V")
    .withMetroCode(MetroCode.DC)
    .withAccountNumber("123456")
    .withDeviceManagementType(DeviceManagementType.SELF_CONFIGURED)
    .withLicenseMode(LicenseType.SUB)
    .withPackageCode("network-essentials")
    .withVersion("17.06.01a")
    .withCore(4)
    .withThroughput(500)
    .withThroughputUnit(BandwidthUnit.MBPS)
    .withInterfaceCount(10)
    .withNewSSHUser("netops", "change-me-at-first-login")
    .withAclTemplateUuid("acl-template-uuid")
    .withNotification("noc@example.com")
    .agreeToOrderTerms()
    .create();

System.out.println(router.getUuid() + " " + router.getStatus());

The package code, version and core count in the block are examples for one device type at one point in time. listDeviceTypes() returns the current values.

  • saveAsDraft() stores the device as a draft instead of ordering it.
  • withSecondary(name) turns the builder into a redundant pair. withDiverseFromDeviceUuid(...) asks for placement on different hardware from an existing device.
  • withLicenseFileId(...) and withLicenseToken(...) supply a bring-your-own license. postLicenseFile(metro, deviceTypeCode, licenseType, path) uploads the file as multipart/form-data, which is the only content type the specification accepts. Release 3.0.0 sent JSON.
  • SSH users are set on the device at creation, because the API has no separate SSH user resource.

Network Edge defines no dry run for a device create, which places a billable order. setup().getPricing(...) and setup().getOrderSummary(...) return the price and the order summary document before the order is placed.

Connect a device to Fabric#

A device connects to a cloud or another party through a Fabric connection, in which the device is an access point of type virtual device.

Java
import com.eqixiac.equinix.fabric.enums.ConnectionType;
import com.eqixiac.equinix.fabric.enums.InterfaceType;
import com.eqixiac.equinix.fabric.model.Connection;
import com.eqixiac.equinix.fabric.model.implementation.cloud.AwsDirectConnectAdapter;

Connection deviceToAws = fabric.connections()
    .define(ConnectionType.EVPL_VC)
    .name("c8000v-dc-01-to-aws")
    .bandwidth(500)
    .aSideAccessPoint(deviceUuid, null, InterfaceType.NETWORK, 5)      // device, link protocol, interface type, interface id
    .zSideCloudProvider(AwsDirectConnectAdapter.of("123456789012", "us-east-1", awsProfileUuid, "DC"))
    .notification("noc@example.com")
    .create();

BGP peering#

For an Equinix-configured device, bgpPeerings() configures BGP on the device side of a Fabric connection.

Java
import com.eqixiac.equinix.networkedge.model.BGPPeering;

BGPPeering peering = networkEdge.bgpPeerings().define()
    .forConnection(connectionUuid)
    .withLocalIpAddress("169.254.10.2/30")
    .withRemoteIpAddress("169.254.10.1")
    .withLocalAsn(65010L)
    .withRemoteAsn(64512L)
    .withAuthenticationKey("change-me")
    .save();

On a self-configured device the BGP configuration is done on the device itself, over SSH or the vendor's management plane. ne/v1/bgp answered 403 for the account used in live validation on 2026-11-11, so the request shape of this call was not verified live.

A device link group is a private layer 2 segment between Network Edge devices, in one metro or across metros.

Java
import com.eqixiac.equinix.networkedge.enums.RedundancyType;
import com.eqixiac.equinix.networkedge.model.DeviceLink;

DeviceLink link = networkEdge.deviceLinks().define("dc-sv-transit")
    .onSubnet("192.168.50.0/29")
    .withRedundancyType(RedundancyType.PRIMARY)
    .forDevice("device-uuid-dc", 65010L, 6)          // device, ASN, interface id
    .forDevice("device-uuid-sv", 65020L, 6)
    .save();

Operations#

Java
import com.eqixiac.equinix.networkedge.model.Backup;
import com.eqixiac.equinix.networkedge.model.RestoreFeasibility;

networkEdge.devices().listInterfaces(deviceUuid).forEach(i -> System.out.println(i.getId() + " " + i.getName()));
networkEdge.devices().softReboot(deviceUuid);

for (Backup backup : networkEdge.backups().list(deviceUuid)) {
    System.out.println(backup.getUuid() + " " + backup.getName());
}
RestoreFeasibility feasibility = networkEdge.backups().checkRestoreFeasibility("backup-uuid", deviceUuid);
System.out.println(feasibility.getRestoreAllowedAfterDeleteOrEdit());

checkRestoreFeasibility is the one validate-only operation in Network Edge, and the integration-dryrun tier exercises it. Some device types do not support ping and interface statistics, as the live tier found with a VyOS device.

Shapes that differ from the specification#

FieldSpecificationLive service, 2026-11-11SDK
GET /publicKeysdata envelopeBare arrayReads both
DeviceCore.tierIntegerArray for some device typesgetTier() returns the first value, getTiers() all
License options keyNot documented"SUB", "BYOL" keysMapped explicitly
updateLicenseToken responseBodyEmpty 202 AcceptedReturns null