{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/owlsinsight-com/json-schema/owlsinsight-com-player-averages-response-schema.json",
  "title": "PlayerAveragesResponse",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/owlsinsight-com-openapi.json#/components/schemas/PlayerAveragesResponse",
  "properties": {
    "data": {
      "properties": {
        "averages": {
          "description": "L5/L10/L20 rolling windows (computed by Owls Insight)",
          "properties": {
            "last10": {
              "anyOf": [
                {
                  "$ref": "#/$defs/ComputedAverages"
                },
                {
                  "type": "null"
                }
              ]
            },
            "last20": {
              "anyOf": [
                {
                  "$ref": "#/$defs/ComputedAverages"
                },
                {
                  "type": "null"
                }
              ]
            },
            "last5": {
              "anyOf": [
                {
                  "$ref": "#/$defs/ComputedAverages"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "type": "object",
          "x-owls-required": [
            "last5",
            "last10",
            "last20"
          ]
        },
        "gameLogs": {
          "items": {
            "$ref": "#/$defs/GameLogEntry"
          },
          "type": "array"
        },
        "monthly": {
          "description": "Per-month averages from ESPN",
          "items": {
            "properties": {
              "averages": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              "month": {
                "type": "string"
              }
            },
            "type": "object",
            "x-owls-required": [
              "month",
              "averages"
            ]
          },
          "type": [
            "array",
            "null"
          ]
        },
        "opponent": {
          "type": [
            "string",
            "null"
          ]
        },
        "player": {
          "properties": {
            "name": {
              "type": "string"
            },
            "position": {
              "type": "string"
            },
            "team": {
              "type": "string"
            }
          },
          "type": "object",
          "x-owls-required": [
            "name",
            "team",
            "position"
          ]
        },
        "seasonAverages": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "ESPN's pre-computed season averages (label → value, e.g. \"PTS\" → \"17.6\")",
          "type": [
            "object",
            "null"
          ]
        },
        "seasonTotals": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "ESPN's pre-computed season totals (label → value, e.g. \"PTS\" → \"704\")",
          "type": [
            "object",
            "null"
          ]
        }
      },
      "type": "object",
      "x-owls-required": [
        "player",
        "opponent",
        "seasonAverages",
        "seasonTotals",
        "monthly",
        "averages",
        "gameLogs"
      ]
    },
    "success": {
      "type": "boolean"
    }
  },
  "type": "object",
  "x-owls-required": [
    "success",
    "data"
  ],
  "$defs": {
    "ComputedAverages": {
      "properties": {
        "apg": {
          "format": "double",
          "type": "number"
        },
        "bpg": {
          "format": "double",
          "type": "number"
        },
        "fgPct": {
          "format": "double",
          "type": "number"
        },
        "ftPct": {
          "format": "double",
          "type": "number"
        },
        "gamesPlayed": {
          "format": "double",
          "type": "number"
        },
        "minutesAvg": {
          "format": "double",
          "type": "number"
        },
        "plusMinusAvg": {
          "format": "double",
          "type": "number"
        },
        "ppg": {
          "format": "double",
          "type": "number"
        },
        "rpg": {
          "format": "double",
          "type": "number"
        },
        "spg": {
          "format": "double",
          "type": "number"
        },
        "threePct": {
          "format": "double",
          "type": "number"
        },
        "topg": {
          "format": "double",
          "type": "number"
        }
      },
      "type": "object",
      "x-owls-required": [
        "gamesPlayed",
        "ppg",
        "rpg",
        "apg",
        "spg",
        "bpg",
        "topg",
        "fgPct",
        "threePct",
        "ftPct",
        "minutesAvg",
        "plusMinusAvg"
      ]
    },
    "GameLogEntry": {
      "properties": {
        "gameDate": {
          "type": "string"
        },
        "homeAway": {
          "type": "string",
          "x-extensible-enum": [
            "away",
            "home"
          ]
        },
        "opponent": {
          "type": [
            "string",
            "null"
          ]
        },
        "stats": {
          "properties": {
            "assists": {
              "format": "double",
              "type": "number"
            },
            "blocks": {
              "format": "double",
              "type": "number"
            },
            "fg": {
              "properties": {
                "attempted": {
                  "format": "double",
                  "type": "number"
                },
                "made": {
                  "format": "double",
                  "type": "number"
                }
              },
              "type": "object",
              "x-owls-required": [
                "made",
                "attempted"
              ]
            },
            "fouls": {
              "format": "double",
              "type": "number"
            },
            "freeThrow": {
              "properties": {
                "attempted": {
                  "format": "double",
                  "type": "number"
                },
                "made": {
                  "format": "double",
                  "type": "number"
                }
              },
              "type": "object",
              "x-owls-required": [
                "made",
                "attempted"
              ]
            },
            "minutes": {
              "type": [
                "string",
                "null"
              ]
            },
            "plusMinus": {
              "format": "double",
              "type": "number"
            },
            "points": {
              "format": "double",
              "type": "number"
            },
            "rebounds": {
              "format": "double",
              "type": "number"
            },
            "steals": {
              "format": "double",
              "type": "number"
            },
            "threePoint": {
              "properties": {
                "attempted": {
                  "format": "double",
                  "type": "number"
                },
                "made": {
                  "format": "double",
                  "type": "number"
                }
              },
              "type": "object",
              "x-owls-required": [
                "made",
                "attempted"
              ]
            },
            "turnovers": {
              "format": "double",
              "type": "number"
            }
          },
          "type": "object",
          "x-owls-required": [
            "minutes",
            "points",
            "rebounds",
            "assists",
            "steals",
            "blocks",
            "turnovers",
            "fouls",
            "plusMinus",
            "fg",
            "threePoint",
            "freeThrow"
          ]
        },
        "teamScore": {
          "format": "double",
          "type": "number"
        }
      },
      "type": "object",
      "x-owls-required": [
        "gameDate",
        "opponent",
        "homeAway",
        "teamScore",
        "stats"
      ]
    }
  }
}