{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/flopsindex-com/json-schema/flopsindex-com-cpufleet-submission-schema.json",
  "title": "CPUFleetSubmission",
  "description": "vCPU allocation + utilization for one region-month — annex §3, FLCI-CPU.",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/flopsindex-com-openapi.json#/components/schemas/CPUFleetSubmission",
  "properties": {
    "asset_ownership": {
      "anyOf": [
        {
          "$ref": "#/$defs/AssetOwnership"
        },
        {
          "type": "null"
        }
      ],
      "description": "Who owns the silicon. 'owner' = primary observation. Omitted is treated as 'orchestrator' (fail-closed) and the row is held out of published index math."
    },
    "underlying_provider": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 128
        },
        {
          "type": "null"
        }
      ],
      "title": "Underlying Provider",
      "description": "Whose hardware this actually is, when asset_ownership != owner. Use 'undisclosed' if contractually unnameable."
    },
    "operator_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Operator Id"
    },
    "sku": {
      "type": "string",
      "title": "Sku",
      "description": "x86_mixed for most abstraction-layer infrastructure."
    },
    "cpu_model_raw": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 256
        },
        {
          "type": "null"
        }
      ],
      "title": "Cpu Model Raw"
    },
    "vcpu_count": {
      "type": "integer",
      "maximum": 2000000.0,
      "minimum": 1.0,
      "title": "Vcpu Count",
      "description": "Total vCPUs allocated across the active fleet for this region/period."
    },
    "physical_core_count": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 1000000.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Physical Core Count",
      "description": "Optional; an abstraction layer usually cannot see this."
    },
    "server_count": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Server Count"
    },
    "utilization": {
      "type": "number",
      "maximum": 1.0,
      "minimum": 0.0,
      "title": "Utilization"
    },
    "memory_tb": {
      "anyOf": [
        {
          "type": "number",
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Memory Tb",
      "description": "Total RAM provisioned across the fleet, TB."
    },
    "workload_dist": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "number"
          },
          "propertyNames": {
            "enum": [
              "web_app",
              "database",
              "batch_compute",
              "ai_inference",
              "storage_io",
              "general"
            ]
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Workload Dist"
    },
    "region": {
      "$ref": "#/$defs/Region"
    },
    "period_start": {
      "type": "string",
      "title": "Period Start"
    },
    "period_end": {
      "type": "string",
      "title": "Period End"
    },
    "facility_type": {
      "$ref": "#/$defs/FacilityType",
      "default": "colo"
    },
    "source_type": {
      "$ref": "#/$defs/SourceType",
      "default": "b2b"
    },
    "submission_source": {
      "$ref": "#/$defs/SubmissionSource",
      "default": "manual"
    },
    "power_kw": {
      "anyOf": [
        {
          "type": "number",
          "maximum": 50000.0,
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Power Kw",
      "description": "Optional: annex §1 states hardware telemetry is not accessible."
    },
    "monthly_ops_budget": {
      "anyOf": [
        {
          "type": "number",
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Monthly Ops Budget"
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "sku",
    "vcpu_count",
    "utilization",
    "region",
    "period_start",
    "period_end"
  ],
  "$defs": {
    "AssetOwnership": {
      "type": "string",
      "enum": [
        "owner",
        "orchestrator",
        "reseller",
        "broker"
      ],
      "title": "AssetOwnership",
      "description": "Who actually owns the silicon behind a submitted row.\n\nThis exists because the first CPU contributor (Lyrid) is an\nORCHESTRATOR — it manages capacity it does not own. That distinction\nis not cosmetic: if an orchestrator reports cores that physically sit\nin a cloud FLOPS already collects directly, naive aggregation\ndouble-counts the same hardware, and a price row from an orchestrator\nis a resale margin on top of an underlying rate, not a primary rate.\n\nOnly ``OWNER`` rows are primary observations. Everything else carries\n``attribution_risk`` and is held out of published index math until an\nexplicit de-duplication rule exists (see docs/methodology)."
    },
    "FacilityType": {
      "type": "string",
      "enum": [
        "colo",
        "owned",
        "hyperscaler",
        "orchestration",
        "neocloud"
      ],
      "title": "FacilityType"
    },
    "Region": {
      "type": "string",
      "enum": [
        "us_east",
        "us_west",
        "eu_west",
        "ap_southeast",
        "africa",
        "global"
      ],
      "title": "Region"
    },
    "SourceType": {
      "type": "string",
      "enum": [
        "public",
        "b2b",
        "corporate"
      ],
      "title": "SourceType",
      "description": "Determines weight in FLCI/CLRI weighted median calculation."
    },
    "SubmissionSource": {
      "type": "string",
      "enum": [
        "manual",
        "agent_v1",
        "sdk"
      ],
      "title": "SubmissionSource",
      "description": "Tracks how a fleet submission was generated for validation tuning."
    }
  }
}