{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/flopsindex-com/json-schema/flopsindex-com-fleet-submission-schema.json",
  "title": "FleetSubmission",
  "description": "FleetSubmission per Submission Guide v7 Part 2.\n\nPhase H P0 #1 (2026-06-01): switched from extra=\"ignore\" to \"allow\"\nto stop the SILENT data-drop class. Partners submitting valid Tier 2\ninfra_context (or other documented extensions) previously got 200 OK\nwhile the extras were silently discarded at the Pydantic boundary —\nworst-class trust-eroding bug. With \"allow\", extras land in\nmodel_extra AND flow through .model_dump() into the persistence\nrecord, so the downstream JSONB writes preserve them. Phase H proper\n(H-1) will schematize the Tier 2/3 fields and convert this back to\n\"forbid\" with a curated allow-list. Until then \"allow\" + visibility\nlogging is the operator-safe path (no breaking change to partners,\nextras preserved, surface visible for audit).",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/flopsindex-com-openapi.json#/components/schemas/FleetSubmission",
  "properties": {
    "operator_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Operator Id",
      "description": "Optional stable operator key for salted hash (body or use connection metadata)."
    },
    "sku": {
      "type": "string",
      "title": "Sku"
    },
    "gpu_count": {
      "type": "integer",
      "maximum": 500000.0,
      "minimum": 1.0,
      "title": "Gpu Count"
    },
    "utilization": {
      "type": "number",
      "maximum": 1.0,
      "minimum": 0.0,
      "title": "Utilization"
    },
    "power_kw": {
      "type": "number",
      "maximum": 50000.0,
      "minimum": 0.0,
      "title": "Power Kw"
    },
    "workload_dist": {
      "additionalProperties": {
        "type": "number"
      },
      "propertyNames": {
        "enum": [
          "train",
          "infer",
          "finetune"
        ]
      },
      "type": "object",
      "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"
    },
    "submission_source": {
      "$ref": "#/$defs/SubmissionSource",
      "default": "manual"
    },
    "monthly_ops_budget": {
      "anyOf": [
        {
          "type": "number",
          "minimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Monthly Ops Budget"
    },
    "lifetime_months": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 120.0,
          "minimum": 1.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Lifetime Months"
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "sku",
    "gpu_count",
    "utilization",
    "power_kw",
    "workload_dist",
    "region",
    "period_start",
    "period_end",
    "source_type"
  ],
  "$defs": {
    "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."
    }
  }
}