Skip to content

fix(linode-types): documented transfer unit conflicts with Shared CPU allowance #22

Open

Description

@coygeek

Summary

The Linode type OpenAPI schema and generated API reference describe transfer as the monthly outbound allowance in MB. The public API returns transfer: 4000 for the Shared CPU type g6-standard-2 (Linode 4GB), while the official Shared CPU documentation gives an outbound allowance range of 1 TB–20 TB. Reading this type's value as 4000 MB puts it below the published range. API consumers cannot consistently normalize the included allowance from these official sources.

This report concerns the unit contract for the Linode type transfer field, covering the get-type and list-types descriptions of the same field. It does not establish the correct replacement unit or request any change to API numeric values.

Steps to reproduce

No account, API token, or provisioned resource is required. The following public GET requests were executed successfully; the schema baseline was OpenAPI version 4.229.1 at repository commit 0d4115515880ddf2836dd26ec2de267df162f4a4.

  1. Request https://api.linode.com/v4/linode/types/g6-standard-2 and inspect id, label, class, and transfer.
  2. Read the transfer response property in Get a type and List types, or inspect the corresponding two paths in the pinned openapi.json linked below.
  3. Read the Outbound Network Transfer row of Shared CPU Linodes.
  4. Compare the allowance implied by the API field's documented MB unit with the published Shared CPU allowance range. The returned type has class: standard; the get-type reference's class description explicitly says that a standard class is listed as a Shared Linode in Cloud Manager.

A read-only check for the API response is:

curl --fail --silent --show-error https://api.linode.com/v4/linode/types/g6-standard-2

The reproduction is complete for the documentation contradiction. No resource was created, no traffic was generated, and no billing measurement was made; the authoritative intended unit and its decimal/binary convention remain unestablished.

Expected behavior

The published unit for the Linode type transfer field should let a consumer interpret the public API's allowance consistently with the official plan documentation for the same Shared CPU family. The get-type reference identifies standard as a Shared Linode in Cloud Manager, making the Shared CPU plan contract applicable to this returned type. The schema and generated get-type/list-types references should state the intended unit precisely enough to normalize a value such as 4000, including a decimal or binary convention where necessary.

Actual behavior

The unauthenticated get-type request returned HTTP 200 with these relevant fields:

{
  "id": "g6-standard-2",
  "label": "Linode 4GB",
  "class": "standard",
  "transfer": 4000
}

Both Linode type schema descriptions and both generated reference pages say:

Filterable, Read-only The monthly outbound transfer amount in MB.

The Shared CPU documentation says:

Resource Available Plans
Outbound Network Transfer 1 TB - 20 TB

Interpreting 4000 as MB produces approximately 4 GB, below the documented 1 TB minimum for this family. The discrepancy persists regardless of whether a consumer considers decimal or binary units. The API, both generated references, the pinned source schema, and the Shared CPU page were retrieved successfully with HTTP 200 during this investigation.

Evidence

All quoted API fields, schema descriptions, and documentation rows were retrieved directly from public Akamai/Linode sources through unauthenticated read-only HTTP GET requests. This verification reproduced the documented contradiction, not a billing or traffic measurement.

Restoration check

Recheck g6-standard-2 through the public API and compare its transfer value with the official plan allowance. The failing state is a published unit that makes the response fall below the documented Shared CPU allowance range. The passing state is an authoritative, explicit unit contract that makes the type allowance consistent across the source OpenAPI description, generated get-type/list-types references, and applicable plan documentation. Confirm the chosen convention against an authoritative plan-specific allowance rather than merely deleting the unit from the schema or weakening the plan documentation. No particular replacement unit or implementation is prescribed by this report.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions