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.
| Accessor | Resource |
|---|---|
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#
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#
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(...)andwithLicenseToken(...)supply a bring-your-own license.postLicenseFile(metro, deviceTypeCode, licenseType, path)uploads the file asmultipart/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.
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.
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.
Device links#
A device link group is a private layer 2 segment between Network Edge devices, in one metro or across metros.
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#
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#
| Field | Specification | Live service, 2026-11-11 | SDK |
|---|---|---|---|
GET /publicKeys | data envelope | Bare array | Reads both |
DeviceCore.tier | Integer | Array for some device types | getTier() returns the first value, getTiers() all |
| License options key | Not documented | "SUB", "BYOL" keys | Mapped explicitly |
updateLicenseToken response | Body | Empty 202 Accepted | Returns null |