{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/gpucloud-ca/json-schema/gpucloud-ca-gpu-plan-schema.json",
  "title": "GpuPlan",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/gpucloud-ca-openapi.json#/components/schemas/GpuPlan",
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "gpu": {
      "type": "string"
    },
    "gpuModel": {
      "type": "string"
    },
    "gpuCount": {
      "type": "integer",
      "description": "GPUs of the server (1, 2, 4 or 8)"
    },
    "spot": {
      "type": "boolean",
      "description": "Spot server: interruptible without notice, hourly billing only"
    },
    "hourlyOnly": {
      "type": "boolean",
      "description": "True when only hourly billing is offered (monthly and annual are refused with CYCLE_NOT_AVAILABLE)"
    },
    "specs": {
      "type": "object",
      "properties": {
        "vcores": {
          "type": "integer"
        },
        "ram": {
          "type": "integer",
          "description": "RAM in GB"
        },
        "storage": {
          "type": "integer",
          "description": "System disk in GB"
        },
        "storageType": {
          "type": "string"
        },
        "localStorage": {
          "type": "integer",
          "description": "Local (ephemeral) work disk in GB, 0 when none"
        }
      }
    },
    "pricing": {
      "type": [
        "object",
        "null"
      ],
      "description": "Prices billed to the caller, per server (all its GPUs). null when priceOnRequest is true: the plan has no public price and is not sold online (contact us for a quote).",
      "properties": {
        "hourly": {
          "type": "number",
          "description": "On-demand hourly rate in CAD"
        },
        "monthly": {
          "type": [
            "number",
            "null"
          ],
          "description": "Monthly committed rate in CAD (null: hourly only)"
        },
        "annual": {
          "type": [
            "number",
            "null"
          ],
          "description": "Annual committed monthly rate in CAD (null: hourly only)"
        },
        "currency": {
          "type": "string"
        }
      }
    },
    "priceOnRequest": {
      "type": "boolean",
      "description": "True when the plan is sold on request only (no public price, pricing is null, never purchasable online)"
    },
    "available": {
      "type": "boolean",
      "description": "Whether this server size is currently in stock"
    },
    "purchasable": {
      "type": "boolean",
      "description": "Whether this GPU plan can be purchased (may be false if plan is visible but not yet offered)"
    },
    "autoProvisioning": {
      "type": "boolean",
      "description": "Whether this GPU can be auto-deployed via API"
    },
    "eligibility": {
      "type": "string",
      "enum": [
        "deployable",
        "contact",
        "out_of_stock",
        "disabled"
      ],
      "description": "Plan deployment eligibility status"
    }
  }
}