eqixiacEquinix Infrastructure as Code

Installation

Maven and Gradle coordinates, the artifacts in a release, and building from source.

Maven#

XML
<dependency>
    <groupId>com.eqixiac.equinix</groupId>
    <artifactId>equinix-sdk-java</artifactId>
    <version>3.0.0</version>
</dependency>

Gradle#

Kotlin
dependencies {
    implementation("com.eqixiac.equinix:equinix-sdk-java:3.0.0")
}

Version 3.0.0 is the current release on Maven Central. Sections of this site labelled New in 4.0 describe the 4.0 development tree, which has to be built from source until 4.0.0 is published.

Release artifacts#

Each GitHub release carries four jars.

ArtifactContent
equinix-sdk-java-X.Y.Z.jarThe library
equinix-sdk-java-X.Y.Z-sources.jarSources
equinix-sdk-java-X.Y.Z-javadoc.jarJavadoc
equinix-sdk-java-X.Y.Z-mcp-server.jarThe self-contained MCP server, started with java -jar

The MCP Java SDK and the slf4j-simple binding are declared <optional> in the POM, so a project that depends on the library does not inherit them. The architecture test DependencyHygieneTest fails the SDK build if either dependency loses that declaration.

Logging#

The SDK logs through the SLF4J API and ships no binding, so the application supplies the binding it already uses. At DEBUG the HTTP client logs request and response bodies with client_secret, passwords and access, refresh and subject tokens masked. Every request carries an X-Correlation-Id header, and the same identifier appears in the log lines and on any exception raised for that request.

Build from source#

Shell
git clone https://github.com/iantjones/equinix-java-sdk.git
cd equinix-java-sdk
mvn clean package -DskipTests

The build writes the library jar, the sources and Javadoc jars and the -mcp-server.jar to target/. mvn install -DskipTests puts the snapshot in the local Maven repository. The build requires JDK 21: Lombok 1.18.42, which the build uses as an annotation processor, did not run on JDK 27 when this page was written on 2026-11-12.

A first request#

Java
import com.eqixiac.equinix.Fabric;
import com.eqixiac.equinix.core.auth.BasicEquinixCredentials;
import com.eqixiac.equinix.fabric.model.Metro;

Fabric fabric = new Fabric(new BasicEquinixCredentials("CLIENT_ID", "CLIENT_SECRET"));
for (Metro metro : fabric.metros().list()) {
    System.out.println(metro.metroId() + " " + metro.getName());
}

The client requests an OAuth token on the first call. Authentication covers the credential options.