Class ReferenceRateCard
- All Implemented Interfaces:
RateCard
RateCard backed by a bundled, dated table of indicative reference
figures - published cloud-provider egress rates, interconnect port fees, and
on-prem/colocation midpoints - compiled so the value-realization models work out
of the box without a live connection or caller-supplied rates.
Every value it returns is tagged PriceSource.REFERENCE and the card
carries a disclaimer() making clear these are estimates, not quotes:
cloud egress rates are standard-tier US/North-America headline prices, and
Equinix-side figures are indicative fallbacks that should be superseded by the
live Fabric Pricing API (use a LayeredRateCard with
EquinixRateCard ahead of this one).
Because the bundled table is deliberately coarse, the lookups are coarse too:
connection(...) matches on bandwidth alone - the smallest
tabulated tier at or above the request, linearly extrapolated (with an
EXTRAPOLATED note) above the top tier - and ignores connection type,
metro, and term; cloudRouter(...) ignores metro and term, and
substitutes the STANDARD figure for an unlisted package with a note naming the
substitution; egress(...) matches provider + path, ignoring region and
term. The emitted notes identify the tier or substitution; the data vintage is
available via asOf() (the engines surface it in their reports'
"as of" line).
The bundled data set is loaded once from
/json/ratecard_reference_2026_11.json and cached.
Provider interconnect fees
providerConnection(CloudProviderType, ConnectionModel, int) prices the cloud provider's
own side of a connection, keyed by provider, ConnectionModel (a dedicated port versus the
hosted/partner connection a Fabric cloud connection is) and bandwidth. Every row is a public list
price with its source URL and retrieval date; hourly rates are converted at
730 h/month. A look-up returns the exact tabulated tier, or the next tier up
with a note "rounded up from X to Y Mbps", or is unpriced with the reason (no row for the provider
and model, or a bandwidth above the largest tier). It never extrapolates and never substitutes a
dedicated-port fee for a hosted connection. There is no term axis: none of the four providers
publishes a term discount for these items.
Native multicloud links
Beta. multicloudLink(...) and the
EgressPath.MULTICLOUD_INTERCONNECT egress rates come from a second, separately dated
bundle, /json/ratecard_multicloud_reference_2026_09.json
(multicloudAsOf()). It holds only figures copied from the providers' public pricing
pages on 2026-09-21; each row records its source URL and retrieval date, and each quote's note
repeats them together with the hourly-to-monthly conversion
(MulticloudLinkQuote.HOURS_PER_MONTH = 730 h).
| Side | Priced | Unpriced (side returned empty with a reason) |
|---|---|---|
| AWS Interconnect - multicloud | 10000 Mbps at path tier 1 (12.33 USD/h) and tier 4 (51.78 USD/h) | every other size and tier, including 1000 Mbps: AWS publishes no such rate and third-party reports conflict |
| Google Partner Cross-Cloud Interconnect transport | 1000, 5000, 10000 and 100000 Mbps in North America, Europe, APAC and South America | other sizes; regions outside the four transport locations |
| Oracle Cloud, Microsoft Azure | nothing | always |
The lookup is an exact match on bandwidth (and on path tier or transport location where the
provider uses one). It does not round up, interpolate or extrapolate, unlike
connection(...): both providers sell sizes whose prices they do not publish, so a
larger published size says nothing reliable about a smaller link. A Google Cloud side with no
region is priced at the North America transport location and its note says so. The AWS free
tier (one 500 Mbps tier-1 interconnect per Region per generally-available provider) is applied
only when the request sets useAwsFreeTier; it is never a default.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intHours per month every hourly reference rate is converted at (the SDK-wide convention). -
Method Summary
Modifier and TypeMethodDescriptionasOf()The vintage of the bundled figures, e.g.cloudRouter(String packageCode, MetroCode metro, Term term) Resolves the price of a single Fabric Cloud Router instance.cloudRouterLookup(String packageCode, MetroCode metro, Term term) RateCard.cloudRouter(String, MetroCode, Term)with the reason when it cannot be priced.colocationLookup(ColocationItem item, MetroCode metro, Term term) RateCard.colocation(ColocationItem, MetroCode, Term)with the reason when it cannot be priced.connection(ConnectionType type, int bandwidthMbps, MetroCode metro, Term term) Resolves the price of a single Fabric connection / virtual connection.connectionLookup(ConnectionType type, int bandwidthMbps, MetroCode metro, Term term) RateCard.connection(ConnectionType, int, MetroCode, Term)with the reason when it cannot be priced.cspInterconnectPortMonthlyQuote(CloudProviderType provider, int bandwidthMbps) The provider-side fee of a Fabric cloud connection: shorthand forproviderConnection(provider, ConnectionModel.HOSTED, bandwidthMbps).toOptional().The ISO 4217 code of the currency every bundled figure is expressed in ("USD"for the standard bundle).The bundled data set's own disclaimer text - what the figures are, what they exclude, and why they are estimates rather than quotes.egress(CloudProviderType provider, String region, EgressPath path, Term term) Resolves the per-GB data-egress rate for a cloud provider over a given path.egressLookup(CloudProviderType provider, String region, EgressPath path, Term term) RateCard.egress(CloudProviderType, String, EgressPath, Term)with the reason when it cannot be priced.The indicative monthly fee for one Equinix cross-connect (per physical cross-connect, in the reference currency) - the fallback the TCO model uses when the caller supplies noColocationItem.CROSS_CONNECTrate.The vintage of the bundled native-multicloud-link figures, e.g.The multicloud bundle's own disclaimer: what the figures are, that unpublished figures are reported unpriced, and the hourly-to-monthly conversion.multicloudLink(MulticloudLinkRequest request) Resolves the two-sided price of a native provider-to-provider multicloud link (for example AWS Interconnect - multicloud paired with a Google Partner Cross-Cloud Interconnect transport).multicloudPublishedSizes(CloudProviderType provider) The link sizes, in Mbps, for which the multicloud bundle holds at least one published rate for the provider (across every path tier and transport location).The date (ISO 8601) the bundled native-multicloud-link figures were read from the providers' pricing pages.An indicative on-premises cost midpoint by key.providerConnection(CloudProviderType provider, ConnectionModel model, int bandwidthMbps) The cloud provider's own fee for one connection: exact tier, next tier up (the note says "rounded up from X to Y Mbps"), or unpriced with the reason.providerConnectionTiers(CloudProviderType provider, ConnectionModel model) The bandwidths, in Mbps, the card tabulates for a provider and model, ascending.The date (ISO 8601) the provider interconnect rows were read from the providers' pricing pages; each row also carries its own date in its quote note.source()The dominant provenance of prices this card produces.static ReferenceRateCardstandard()Returns the bundled standard reference rate card (2026-11 figures), loading and caching it on first use.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface RateCard
cardName, colocationModifier and TypeMethodDescriptiondefault StringcardName()A short name for this card in provenance trails and unpriced reasons; the simple class name by default.default Optional<PriceQuote> colocation(ColocationItem item, MetroCode metro, Term term) Resolves the price of an Equinix colocation primitive - a cabinet, a kW of power, or a cross-connect (seeColocationItemfor the per-unit semantics).
-
Field Details
-
HOURS_PER_MONTH
public static final int HOURS_PER_MONTHHours per month every hourly reference rate is converted at (the SDK-wide convention).- See Also:
-
-
Method Details
-
standard
Returns the bundled standard reference rate card (2026-11 figures), loading and caching it on first use.- Returns:
- the shared reference rate card
-
connection
public Optional<PriceQuote> connection(ConnectionType type, int bandwidthMbps, MetroCode metro, Term term) Description copied from interface:RateCardResolves the price of a single Fabric connection / virtual connection.Implementation contract. The matching strategy is implementation-specific, and a card whose data lacks an axis (metro, term, type) still returns its best figure - or empty - rather than failing; callers must not assume every card is sensitive to every parameter. Of the bundled cards:
CustomRateCardresolves the most specific declared entry (exact metro+term down to metro/term-agnostic, then a declared default);EquinixRateCardmatches bandwidth and type against the live catalogue, honours a requested metro strictly (a wrong-metro row is never returned), and prefers a term-matched row - a different-term row is only ever returned with a note naming the substitution;ReferenceRateCardmatches on bandwidth alone (smallest tabulated tier at or above the request, linearly extrapolated with anEXTRAPOLATEDnote above the top tier) and ignores type, metro, and term entirely.- Specified by:
connectionin interfaceRateCard- Parameters:
type- the connection type (e.g.EVPL_VC); may benullfor any typebandwidthMbps- the provisioned bandwidth in Mbpsmetro- the metro the connection originates in (may benullif metro-agnostic)term- the commitment term (may benullif term-agnostic)- Returns:
- the resolved quote, or
Optional.empty()if this card cannot price the connection
-
cloudRouter
Description copied from interface:RateCardResolves the price of a single Fabric Cloud Router instance.Implementation contract. As with
RateCard.connection(ConnectionType, int, MetroCode, Term), matching is implementation-specific and cards without a metro/term axis return their best figure regardless. Of the bundled cards:CustomRateCardresolves the most specific declared(packageCode, metro, term)entry;EquinixRateCardmatches the package code and metro structurally against the row's own descriptor (exact package equality, the row's own metro code) and prefers a term-matched row, labelling any term substitution;ReferenceRateCardignores metro and term, and substitutes its STANDARD figure for an unlisted package with a note naming the substitution.- Specified by:
cloudRouterin interfaceRateCard- Parameters:
packageCode- the router package / tier code (e.g."STANDARD"); may benullfor anymetro- the metro the router is deployed in (may benullif metro-agnostic)term- the commitment term (may benullif term-agnostic)- Returns:
- the resolved quote, or
Optional.empty()if this card cannot price the router
-
egress
public Optional<EgressRate> egress(CloudProviderType provider, String region, EgressPath path, Term term) Description copied from interface:RateCardResolves the per-GB data-egress rate for a cloud provider over a given path.Equinix does not sell cloud egress, so
EquinixRateCardreturnsOptional.empty()here (the default); egress rates come from aCustomRateCard(your figures), aReferenceRateCard(bundled indicative figures), or a provider-pricing-API card. The default returns empty so cards that do not model egress need not override it. Cards whose data has no region or term axis ignore those parameters - the custom and reference cards match on provider + path alone; only the provider-API adapters are region-sensitive.- Specified by:
egressin interfaceRateCard- Parameters:
provider- the cloud provider the data is leavingregion- the provider region (may benullfor a provider-wide rate)path- internet vs. private interconnectterm- the commitment term (may benull; ignored by term-agnostic cards)- Returns:
- the resolved egress rate, or
Optional.empty()if this card cannot price it
-
multicloudLink
Resolves the two-sided price of a native provider-to-provider multicloud link (for example AWS Interconnect - multicloud paired with a Google Partner Cross-Cloud Interconnect transport). No Equinix resource is part of such a link. Each provider bills its own side, so the result is aMulticloudLinkQuotewith onePriceQuoteper side rather than a single figure.Beta: the products this models reached general availability in 2026 and their public price lists are incomplete.
Implementation contract. The default returns
Optional.empty(), so a card that does not model native links needs no change. An empty result means the card has no data for the provider pair. A present result may still have one or both sides unpriced: a side is priced only from a figure the card holds, and is otherwise left empty with a reason; callers must checkMulticloudLinkQuote.isFullyPriced()before treating the quote as a link price. Cards convert hourly rates to monthly atMulticloudLinkQuote.HOURS_PER_MONTHhours and state the conversion in the side's note. The per-GB charge on the link is a separate lookup:egress(provider, region, EgressPath.MULTICLOUD_INTERCONNECT, term).Of the bundled cards:
ReferenceRateCardprices only the figures published on the providers' pricing pages (each note carries the source URL and retrieval date) and applies the AWS free tier only when the request opts in;CustomRateCardprices the sides the caller declared; aRateCard.layered(...)chain resolves each side independently, the earliest card that prices a side winning;EquinixRateCardand the provider-API adapters return empty.Beta. Prices each side from the bundled 2026-09 multicloud data by exact match; see the class documentation for coverage and the no-rounding rule. Returns empty when neither provider appears in the bundle. A provider the bundle lists as unpriced (Oracle Cloud, Microsoft Azure) yields a present quote whose side is empty with the reason.
- Specified by:
multicloudLinkin interfaceRateCard- Parameters:
request- the link to price: both providers and regions, bandwidth in Mbps, the AWS path tier (1-5), the term, and the AWS free-tier opt-in- Returns:
- the two-sided quote, or
Optional.empty()if this card has no data for the provider pair (orrequestisnull)
-
source
Description copied from interface:RateCardThe dominant provenance of prices this card produces. Aggregating cards reportPriceSource.COMPOSITE. -
asOf
The vintage of the bundled figures, e.g."2026-11". Reports should surface this next to any reference-derived number so its age is visible.- Returns:
- the data set's as-of stamp, or
nullif the bundle omits it
-
disclaimer
The bundled data set's own disclaimer text - what the figures are, what they exclude, and why they are estimates rather than quotes. Engines append it to their report output.- Returns:
- the disclaimer, or
nullif the bundle omits it
-
multicloudAsOf
-
multicloudRetrieved
The date (ISO 8601) the bundled native-multicloud-link figures were read from the providers' pricing pages.- Returns:
- the retrieval date, e.g.
"2026-09-21", ornullif the bundle omits it
-
multicloudDisclaimer
The multicloud bundle's own disclaimer: what the figures are, that unpublished figures are reported unpriced, and the hourly-to-monthly conversion.- Returns:
- the disclaimer, or
nullif the bundle omits it
-
multicloudPublishedSizes
The link sizes, in Mbps, for which the multicloud bundle holds at least one published rate for the provider (across every path tier and transport location).- Parameters:
provider- the cloud provider- Returns:
- the published sizes; an empty tier set when the provider's side is never priced
-
currencyCode
The ISO 4217 code of the currency every bundled figure is expressed in ("USD"for the standard bundle). The engines compare it against their comparison currency before folding reference figures into a total - reference numbers are never mixed into a differently-denominated sum.- Returns:
- the reference data's currency code
-
onPrem
An indicative on-premises cost midpoint by key. The bundled keys are:"transitPerMbpsMonth"- carrier IP transit, per Mbps per month;"crossConnectMonthly"- a carrier-hotel cross-connect, per month;"hardwareMonthly"- amortized network hardware, per month;"powerPerKwMonth"- power/space, per kW per month.
TcoCalculator.Builder.onPrem*methods.- Parameters:
key- one of the keys above- Returns:
- the midpoint in the reference currency, or empty for an unknown key or an entry missing from the bundle
-
equinixCrossConnectMonthly
The indicative monthly fee for one Equinix cross-connect (per physical cross-connect, in the reference currency) - the fallback the TCO model uses when the caller supplies noColocationItem.CROSS_CONNECTrate.- Returns:
- the per-unit monthly fee, or empty if the bundle omits it
-
retrieved
The date (ISO 8601) the provider interconnect rows were read from the providers' pricing pages; each row also carries its own date in its quote note.- Returns:
- the retrieval date, e.g.
"2026-11-12", ornullif the bundle omits it
-
providerConnection
public PriceLookup<PriceQuote> providerConnection(CloudProviderType provider, ConnectionModel model, int bandwidthMbps) The cloud provider's own fee for one connection: exact tier, next tier up (the note says "rounded up from X to Y Mbps"), or unpriced with the reason. The quote isPriceSource.REFERENCE; its note states the product, the hourly rate and the 730 h conversion where the provider publishes hourly, the source URL and the retrieval date.- Parameters:
provider- the cloud providermodel- dedicated port or hosted/partner connection (a Fabric cloud connection isConnectionModel.HOSTED)bandwidthMbps- the connection bandwidth- Returns:
- the monthly fee, or the reason it is unpriced
-
providerConnectionTiers
The bandwidths, in Mbps, the card tabulates for a provider and model, ascending. The growth projection uses them to find when traffic forces the next tier.- Parameters:
provider- the cloud providermodel- the connection model- Returns:
- the tabulated tiers; empty when the card holds no row
-
cspInterconnectPortMonthlyQuote
public Optional<PriceQuote> cspInterconnectPortMonthlyQuote(CloudProviderType provider, int bandwidthMbps) The provider-side fee of a Fabric cloud connection: shorthand forproviderConnection(provider, ConnectionModel.HOSTED, bandwidthMbps).toOptional(). Exact tier or the next tier up (noted); empty above the largest hosted tier or for a provider with no hosted row.- Parameters:
provider- the cloud providerbandwidthMbps- the connection bandwidth- Returns:
- the reference monthly fee as a noted quote, or empty
-
egressLookup
public PriceLookup<EgressRate> egressLookup(CloudProviderType provider, String region, EgressPath path, Term term) Description copied from interface:RateCardRateCard.egress(CloudProviderType, String, EgressPath, Term)with the reason when it cannot be priced.- Specified by:
egressLookupin interfaceRateCard- Parameters:
provider- the provider; may benullregion- the region; may benullpath- the path; may benullterm- the term; may benull- Returns:
- the rate, or the reason there is none
-
colocationLookup
Description copied from interface:RateCardRateCard.colocation(ColocationItem, MetroCode, Term)with the reason when it cannot be priced.- Specified by:
colocationLookupin interfaceRateCard- Parameters:
item- the colocation primitivemetro- the metro; may benullterm- the term; may benull- Returns:
- the figure, or the reason there is none
-
connectionLookup
public PriceLookup<PriceQuote> connectionLookup(ConnectionType type, int bandwidthMbps, MetroCode metro, Term term) Description copied from interface:RateCardRateCard.connection(ConnectionType, int, MetroCode, Term)with the reason when it cannot be priced. Cards override this to say exactly why (no metro, no live row, no declared rate); the default states that this card holds no figure.- Specified by:
connectionLookupin interfaceRateCard- Parameters:
type- the connection type; may benullbandwidthMbps- the bandwidth in Mbpsmetro- the metro; may benullterm- the term; may benull- Returns:
- the figure, or the reason there is none
-
cloudRouterLookup
Description copied from interface:RateCardRateCard.cloudRouter(String, MetroCode, Term)with the reason when it cannot be priced.- Specified by:
cloudRouterLookupin interfaceRateCard- Parameters:
packageCode- the router package; may benullmetro- the metro; may benullterm- the term; may benull- Returns:
- the figure, or the reason there is none
-