products[0] and oss[0] are not placeholders for “the cheapest one” or “a sensible default.” They mean exactly what they say: whatever item the Biznet GIO API happens to return first, today. This page explains why that matters, how to look at what you would actually get before you order it, and how to select a specific package or OS on purpose instead of trusting index 0.
Why [0] is a real hazard, not just an unclear example
The catalog data sources (biznetgio_neolite_products, biznetgio_neolite_pro_products, biznetgio_baremetal_products, biznetgio_gpu_products) call a GET /.../products endpoint on the Biznet GIO API and append whatever comes back, in the order it comes back, with no sorting applied by the provider. Nothing about that order is documented as stable. If Biznet GIO adds a package, retires one, or the API simply returns results in a different order on a different day, products[0] can silently become a different product.
That would just be annoying if picking the wrong one were free to undo. It usually is not:
None of these are dry runs. A
terraform plan that looks like a no-op change because “the catalog happened to reorder” can become a paid package change or a destroyed storage tenant the moment you apply. See the billing guide for what “real paid order” means in practice.
The fix is simple: never let [0] decide which real-world product you get. Decide yourself, then write the filter that finds it.
Step 1: look at your own catalog before you filter anything
The pricelist and the package names in this section come from Biznet GIO’s public pricelist page. That page is marketing copy - it is a close, human-friendly description of what the API sells, but it is not the API response. Before you hardcode a filter, print what your own account’s catalog actually contains. Both catalog reads are free: they do not place an order.- Terraform
- Pulumi (TypeScript)
terraform plan (no apply needed - data sources are read during plan, and reading a catalog places no order). The output prints every real product on your account: its id, its exact name string, its core count, and its memory in megabytes.name and options values Biznet GIO returns for your account, and only then write the filter in the next step. Do not assume the pricelist’s package name (for example "XS 1.1") is character-for-character what the name field contains - it is very likely close, but confirm it yourself rather than hardcoding a guess.
Step 2: filter on purpose
There are two ways to pick a specific item out of a catalog list. Prefer the first.Match on specs (recommended)
options.cores and options.memory are typed integers, not free-text labels, so a spec filter cannot be broken by a marketing copy change. options.memory is reported in megabytes - Biznet GIO’s own display (1 GB, 2 GB, and so on) is a rounded, human-friendly view of that number. Use the exact figure you saw in Step 1, not an assumed round number.
- Terraform
- Pulumi (TypeScript)
Match on name (secondary)
Matching on the exactname string is fine once you have confirmed that string against your own catalog output in Step 1. Do not skip Step 1 and guess.
- Terraform
- Pulumi (TypeScript)
- Pulumi (YAML)
Two different prices, two different jobs
You will see prices in two places that can legitimately disagree:- The public pricelist (
biznetgio.com/pricelist) is Biznet GIO’s list price. It is the fastest way to compare tiers before you decide what to order, and it is what every pricing table in this Product Catalog section is sourced from. - The
billingfield on a catalog data source item (for examplebiznetgio_neolite_products.all.products[0].billing) is what the API says your account will actually be charged for that product. It can differ from the public list price if your account has a promo, a contract rate, or Biznet GIO has changed pricing since this documentation was written.
billing is a list, one entry per supported cycle (m, a, and so on for the product lines that support more than monthly/annual) - it is not a single price. Filter it by the cycle you are actually ordering at to get one authoritative number, the same way you filter products by name or spec instead of taking [0].
Treat the pricelist as a way to understand and compare products. Treat the matching entry in billing as the authoritative number for what you will actually pay - read it from your own account’s catalog output before you place an order you care about the cost of.
What each product line gives you
Not every product has a full catalog data source. Some only expose a bareproduct_id and name with no typed specs; a few expose no catalog lookup at all, because the provider has not wrapped that endpoint yet.
Where “none” or “not exposed” appears above, the underlying Biznet GIO API usually still has a real
/products endpoint - the provider has simply not wrapped it as a data source yet. Each catalog page below shows the exact authenticated HTTP request that gets you the same information manually. Wrapping one of those endpoints as a proper data source is a good, contained first contribution - see the Terraform and Pulumi provider deep dives and the contribution guide.