Cross connects and Digital LOA
Ordering and reading cross connects and Letters of Authorization through the operational APIs and the Fabric v4 Beta families.
Entry points#
Equinix publishes two API families for cross connects and for Letters of Authorization. The SDK has a client for each, and the session has one entry point per product that returns both.
import com.eqixiac.equinix.CrossConnectApis;
import com.eqixiac.equinix.DigitalLoaApis;
CrossConnectApis crossConnects = eq.crossConnects();
crossConnects.orderApi(); // crossconnects v2: order, update, deinstall. Same client as eq.operations().crossConnects()
crossConnects.fabricApi(); // Fabric v4 Beta. Same client as eq.fabric().beta().crossConnects()
DigitalLoaApis loas = eq.digitalLoas();
loas.diloaApi(); // Digital LOA v1. Same client as eq.operations().digitalLoas()
loas.fabricApi(); // Fabric v4 Beta. Same client as eq.fabric().beta().loas()The entry points add no behaviour. The four clients stay where their APIs live, and the Beta family can change without affecting the other.
Two API families#
| Product | Operational API | Fabric v4 family Beta |
|---|---|---|
| Cross Connect | eq.crossConnects().orderApi(): crossconnects v2. Order, update, deinstall. Returns an order number. | eq.crossConnects().fabricApi(): the cross connect as a resource with a UUID, a state, schedules, services, attachments, notes and actions |
| Digital LOA | eq.digitalLoas().diloaApi(): diloa v1 | eq.digitalLoas().fabricApi(): create, search, get, update, actions, notes, consumers |
| Use | Choose |
|---|---|
| An account without the Fabric Beta entitlement | The operational API |
| Ordering only, with status read from order history | The operational API |
| The cross connect or LOA as a readable resource with state and history | The Fabric v4 family |
The Fabric v4 families are Beta. Equinix can change or withdraw them without the usual deprecation period, the account needs an entitlement for each, and the SDK types can change in a minor release (Beta families, Versioning).
A cross connect order is a physical order in both families. Neither defines a dry run.
Cross connect orders#
ops.crossConnects() has three operations, each returning an OrderResponse with the order number.
| Method | Request | Effect |
|---|---|---|
order(CrossConnectOrderRequest) | A-side and Z-side locations and patch panels, media and connector types, contacts | Orders one or more cross connects |
update(orderId, CrossConnectUpdateRequest) | Changes to an open order | Updates the order |
deinstall(CrossConnectDeinstallRequest) | The cross connects to remove | Orders the deinstallation |
The A-side and Z-side locations and the available patch panel ports come from ops.lookups(). The status of an order is read from order history with product type CROSS_CONNECT. Put your change number in customerReferenceId, so that a duplicate order is visible there.
Cross connects as resources Beta#
import com.eqixiac.equinix.fabric.beta.client.FabricBeta;
import com.eqixiac.equinix.fabric.beta.model.CrossConnectResponse;
import com.eqixiac.equinix.fabric.model.implementation.filter.FilterPropertyList;
import com.eqixiac.equinix.fabric.model.implementation.filter.FilterType;
FabricBeta beta = fabric.beta();
FilterPropertyList inProject = new FilterPropertyList(FilterType.AND).equals("/project/projectId", projectId);
for (CrossConnectResponse xc : beta.crossConnects().search(inProject)) {
System.out.println(xc.getUuid() + " " + xc.getName() + " " + xc.getState() + " circuit " + xc.getCircuitId());
beta.crossConnects().getSchedules(xc.getUuid()); // install schedules
beta.crossConnects().getServices(xc.getUuid());
}| Method | Returns |
|---|---|
create(CreateCrossConnect), createDiverse(DiverseCrossConnectRequest) | The cross connect, or a diverse pair |
search(...), getByUuid(uuid) | Cross connects |
getSchedules(uuid), searchSchedules(...) | Install schedules and schedule availability |
getServices(uuid), getAttachments(uuid), listNotes(uuid) | Services, attachments, notes |
performAction(uuid, request), getAction(...), searchActions(uuid) | Actions on a cross connect |
Digital LOA#
A Digital Letter of Authorization authorises another party to connect to your patch panel port. ops.digitalLoas() is the diloa v1 client.
import com.eqixiac.equinix.operations.model.DigitalLoa;
DigitalLoa loa = ops.digitalLoas().findByUuid("loa-uuid");
System.out.println(loa.getUuid() + " " + loa.getState() + " expires " + loa.getExpiryDateTime());
ops.digitalLoas().listOrganizations("DC6").forEach(org -> System.out.println(org)); // organisations in one IBX| Method | Effect |
|---|---|
create(DigitalLoaCreateRequest) | Creates an LOA |
search(DigitalLoaSearchRequest) | Searches LOAs. The typed builder requires a non-empty filter.and, which the live service demands. |
findByUuid(uuid), update(uuid, operations), cancel(uuid), performAction(uuid, body) | Read, change, cancel, act |
findChangesByLoaUuid(uuid), findChangeByUuid(loaUuid, changeUuid) | Change history |
listOrganizations(ibx) | Customer organisations in an IBX |
The privateBetaAccess and betaTermsAgreement endpoints of diloa v1 answered 404 on 2026-11-11.
LOAs in the Fabric v4 family Beta#
import com.eqixiac.equinix.fabric.beta.model.LoaResponse;
for (LoaResponse beta2 : fabric.beta().loas().search()) {
System.out.println(beta2.getUuid() + " " + beta2.getState());
fabric.beta().loas().getConsumers(beta2.getUuid());
}fabric.beta().loas() also has create(CreateLoa), update(uuid, patchOperations), performAction(...), searchActions(uuid), getNotes(uuid) and createNote(...).