4.0.0 is in development. This page reflects the working tree on 2026-11-12 and will gain entries until the release. The authoritative list is the [Unreleased] section of CHANGELOG.md.
Release 3.0.0 renamed every package from api.equinix.javasdk to com.eqixiac.equinix and changed the Maven coordinates to com.eqixiac.equinix:equinix-sdk-java. A project on 2.x applies that rename before the changes on this page.
BearerTokenProvider constructors added on Equinix and every domain client. Additive.
No replay after 401
One replay after a 401 with a new token. Behaviour change: a call that used to fail with EquinixAuthenticationException after token revocation can now succeed.
The Metro Optimizer was rebuilt around the DesignSpec document and a portfolio solver. The fluent builder remains, with the following changes to its methods.
3.0.0
4.0
.scoringWeights(ScoringWeights.builder()...)
.weights(Map<String, Double>) keyed by objective id, or a named profile through .strategy(...)
.constraints().monthlyBudget(min, max)
.monthlyBudget(max) or .monthlyBudget(BigDecimal max, String currency)
The following fixes change behaviour and leave the method signatures as they were. Code that worked around one of these defects no longer needs the workaround.
Area
3.0.0 behaviour
4.0 behaviour
IAM and STS host
Requests to api.equinix.com, answered 404
access.eqix.equinix.com and sts.eqix.equinix.com
STS token exchange
camelCase form fields, rejected by the service
RFC 8693 field names; snake_case responses read
STS public operations
Triggered an Equinix login
Sent without credentials
Customer Portal paging
Attachments, finance accounts, reports and asset search stopped after page one
page envelope read
Timestamps
Only 1, 2, 3 or 6 fractional digits accepted; a 9-digit value failed the whole response
0 to 9 digits and Z, +HH, +HHMM, +HH:MM offsets
Unknown response fields
Failed the read on models without an ignore annotation
Ignored on every model
Service-profile replace
No If-Match header
Sends the ETag of the preceding read
Stream alert-rule update
PATCH
PUT
ServiceToken.getChangeLog()
Always null
Populated
Network Edge license upload
JSON body
multipart/form-data
Order history
Account and contact fields null
Live field names read
Metrics calls
Sent a limit the service rejects
No limit
Live rate card
Every lookup failed with 400 and fell back to reference prices silently
Targeted queries; live prices used
Peering Intelligence
No presence found for any network
Queries PeeringDB by network id; resolves facilities through live metro codes
Savings calculator
Omitted the cloud provider's port fee
Nets it out; AWS 1 Gbps in DC is USD 3081 per month net, not 3300
MCP portal_list_open_tickets
Always failed with 400
Works; reports truncation
Debug logging
Could write client_secret and tokens
Masked
Live test credentials
-D system properties, copied into Surefire reports