{
  "components" : {
    "schemas" : {
      "AdvancedStatsDTO" : {
        "properties" : {
          "blockedShots" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "faceoffPercentage" : {
            "format" : "double",
            "nullable" : true,
            "type" : "number"
          },
          "gameWinningGoals" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "hits" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "overtimeGoals" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "powerPlayAssists" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "powerPlayGoals" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "shootingPercentage" : {
            "format" : "double",
            "nullable" : true,
            "type" : "number"
          },
          "shortHandedAssists" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "shortHandedGoals" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "shotsOnGoal" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "timeOnIce" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          }
        },
        "type" : "object"
      },
      "AuthRequestDTO" : {
        "properties" : {
          "aiAvailability" : {
            "nullable" : true,
            "type" : "string"
          },
          "aiCapabilityTier" : {
            "nullable" : true,
            "type" : "string"
          },
          "appVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "deviceId" : {
            "type" : "string"
          },
          "deviceModel" : {
            "nullable" : true,
            "type" : "string"
          },
          "fallbackDeviceId" : {
            "nullable" : true,
            "type" : "string"
          },
          "iosVersion" : {
            "nullable" : true,
            "type" : "string"
          }
        },
        "required" : [
          "deviceId"
        ],
        "type" : "object"
      },
      "AuthResponseDTO" : {
        "properties" : {
          "expiresAt" : {
            "format" : "date-time",
            "type" : "string"
          },
          "token" : {
            "type" : "string"
          },
          "userId" : {
            "type" : "string"
          }
        },
        "required" : [
          "expiresAt",
          "token",
          "userId"
        ],
        "type" : "object"
      },
      "CreateMatchSubscriptionRequest" : {
        "properties" : {
          "deviceUUID" : {
            "type" : "string"
          },
          "environment" : {
            "nullable" : true,
            "type" : "string"
          },
          "token" : {
            "type" : "string"
          }
        },
        "required" : [
          "deviceUUID",
          "token"
        ],
        "type" : "object"
      },
      "DeviceDTO" : {
        "properties" : {
          "appVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "createdAt" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          },
          "deviceId" : {
            "type" : "string"
          },
          "deviceModel" : {
            "nullable" : true,
            "type" : "string"
          },
          "deviceName" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "iosVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "lastSeenAt" : {
            "format" : "date-time",
            "type" : "string"
          },
          "notificationsEnabled" : {
            "type" : "boolean"
          },
          "pushTokenCount" : {
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [
          "deviceId",
          "deviceName",
          "id",
          "lastSeenAt",
          "notificationsEnabled",
          "pushTokenCount"
        ],
        "type" : "object"
      },
      "DeviceDetailsDTO" : {
        "properties" : {
          "appVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "createdAt" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          },
          "deviceId" : {
            "type" : "string"
          },
          "deviceModel" : {
            "nullable" : true,
            "type" : "string"
          },
          "deviceName" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "iosVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "lastSeenAt" : {
            "format" : "date-time",
            "type" : "string"
          },
          "notificationsEnabled" : {
            "type" : "boolean"
          },
          "subscriptions" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/SubscriptionSummaryDTO"
            },
            "type" : "array"
          }
        },
        "required" : [
          "deviceId",
          "deviceName",
          "id",
          "lastSeenAt",
          "notificationsEnabled",
          "subscriptions"
        ],
        "type" : "object"
      },
      "DeviceExportDTO" : {
        "properties" : {
          "appVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "createdAt" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          },
          "deviceId" : {
            "type" : "string"
          },
          "deviceModel" : {
            "nullable" : true,
            "type" : "string"
          },
          "deviceName" : {
            "type" : "string"
          },
          "iosVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "lastSeenAt" : {
            "format" : "date-time",
            "type" : "string"
          },
          "subscriptionCount" : {
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [
          "deviceId",
          "deviceName",
          "lastSeenAt",
          "subscriptionCount"
        ],
        "type" : "object"
      },
      "DevicesResponseDTO" : {
        "properties" : {
          "devices" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/DeviceDTO"
            },
            "type" : "array"
          },
          "total" : {
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [
          "devices",
          "total"
        ],
        "type" : "object"
      },
      "GoalieStatsDTO" : {
        "properties" : {
          "gamesPlayedIn" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "goalsAgainst" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "goalsAgainstAverage" : {
            "format" : "double",
            "nullable" : true,
            "type" : "number"
          },
          "losses" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "savePercentage" : {
            "format" : "double",
            "nullable" : true,
            "type" : "number"
          },
          "saves" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "shutouts" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "ties" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "wins" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          }
        },
        "type" : "object"
      },
      "InterestedTeamLevelDTO" : {
        "properties" : {
          "level" : {
            "type" : "string"
          },
          "teamId" : {
            "type" : "string"
          }
        },
        "required" : [
          "level",
          "teamId"
        ],
        "type" : "object"
      },
      "InterestedTeamsResponseDTO" : {
        "properties" : {
          "levels" : {
            "additionalProperties" : {
              "type" : "string"
            },
            "type" : "object"
          },
          "teams" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/TeamDTO"
            },
            "type" : "array"
          },
          "total" : {
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [
          "levels",
          "teams",
          "total"
        ],
        "type" : "object"
      },
      "LiveMatchDTO" : {
        "properties" : {
          "awayScore" : {
            "format" : "int64",
            "type" : "integer"
          },
          "awayTeam" : {
            "$ref" : "#\/components\/schemas\/TeamDTO"
          },
          "externalId" : {
            "type" : "string"
          },
          "gameState" : {
            "$ref" : "#\/components\/schemas\/MatchStateDTO"
          },
          "homeScore" : {
            "format" : "int64",
            "type" : "integer"
          },
          "homeTeam" : {
            "$ref" : "#\/components\/schemas\/TeamDTO"
          },
          "id" : {
            "type" : "string"
          },
          "period" : {
            "format" : "int64",
            "type" : "integer"
          },
          "periodEnd" : {
            "format" : "date-time",
            "type" : "string"
          },
          "periodTime" : {
            "type" : "string"
          }
        },
        "required" : [
          "awayScore",
          "awayTeam",
          "externalId",
          "gameState",
          "homeScore",
          "homeTeam",
          "id",
          "period",
          "periodEnd",
          "periodTime"
        ],
        "type" : "object"
      },
      "MatchDTO" : {
        "properties" : {
          "awayScore" : {
            "format" : "int64",
            "type" : "integer"
          },
          "awayTeam" : {
            "$ref" : "#\/components\/schemas\/TeamDTO"
          },
          "date" : {
            "format" : "date-time",
            "type" : "string"
          },
          "externalUUID" : {
            "type" : "string"
          },
          "gameType" : {
            "type" : "string"
          },
          "homeScore" : {
            "format" : "int64",
            "type" : "integer"
          },
          "homeTeam" : {
            "$ref" : "#\/components\/schemas\/TeamDTO"
          },
          "id" : {
            "type" : "string"
          },
          "overtime" : {
            "type" : "boolean"
          },
          "period" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "seasonID" : {
            "type" : "string"
          },
          "shootout" : {
            "type" : "boolean"
          },
          "state" : {
            "$ref" : "#\/components\/schemas\/MatchStateDTO"
          },
          "venue" : {
            "type" : "string"
          }
        },
        "required" : [
          "awayScore",
          "awayTeam",
          "date",
          "externalUUID",
          "gameType",
          "homeScore",
          "homeTeam",
          "id",
          "overtime",
          "seasonID",
          "shootout",
          "state",
          "venue"
        ],
        "type" : "object"
      },
      "MatchHistoryDTO" : {
        "properties" : {
          "awayScore" : {
            "format" : "int64",
            "type" : "integer"
          },
          "gameDate" : {
            "format" : "date-time",
            "type" : "string"
          },
          "homeScore" : {
            "format" : "int64",
            "type" : "integer"
          },
          "matchId" : {
            "type" : "string"
          }
        },
        "required" : [
          "awayScore",
          "gameDate",
          "homeScore",
          "matchId"
        ],
        "type" : "object"
      },
      "MatchStateDTO" : {
        "enum" : [
          "scheduled",
          "ongoing",
          "paused",
          "played",
          "cancelled"
        ],
        "type" : "string"
      },
      "MatchStatsDTO" : {
        "properties" : {
          "blockedShots" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "extraStats" : {
            "additionalProperties" : {
              "format" : "int64",
              "type" : "integer"
            },
            "nullable" : true,
            "type" : "object"
          },
          "faceoffsLost" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "faceoffsWon" : {
            "format" : "int64",
            "type" : "integer"
          },
          "goals" : {
            "format" : "int64",
            "type" : "integer"
          },
          "hits" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "id" : {
            "type" : "string"
          },
          "matchID" : {
            "type" : "string"
          },
          "penaltyMinutes" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "powerplayGoals" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "powerplayOpportunities" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "saves" : {
            "format" : "int64",
            "type" : "integer"
          },
          "shotsOnGoal" : {
            "format" : "int64",
            "type" : "integer"
          },
          "teamID" : {
            "type" : "string"
          }
        },
        "required" : [
          "faceoffsWon",
          "goals",
          "id",
          "matchID",
          "saves",
          "shotsOnGoal",
          "teamID"
        ],
        "type" : "object"
      },
      "NotificationSettings" : {
        "properties" : {
          "autoStartLiveActivity" : {
            "nullable" : true,
            "type" : "boolean"
          },
          "enabled" : {
            "nullable" : true,
            "type" : "boolean"
          },
          "finalScore" : {
            "nullable" : true,
            "type" : "boolean"
          },
          "goals" : {
            "nullable" : true,
            "type" : "boolean"
          },
          "matchStart" : {
            "nullable" : true,
            "type" : "boolean"
          }
        },
        "type" : "object"
      },
      "NotificationSettingsResponseDTO" : {
        "properties" : {
          "settings" : {
            "$ref" : "#\/components\/schemas\/NotificationSettings"
          },
          "success" : {
            "type" : "boolean"
          }
        },
        "required" : [
          "settings",
          "success"
        ],
        "type" : "object"
      },
      "PBPEventDTO" : {
        "properties" : {
          "data" : {
            "nullable" : true,
            "type" : "string"
          },
          "description" : {
            "nullable" : true,
            "type" : "string"
          },
          "eventType" : {
            "type" : "string"
          },
          "gameTime" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "matchID" : {
            "type" : "string"
          },
          "period" : {
            "format" : "int64",
            "type" : "integer"
          },
          "playerID" : {
            "nullable" : true,
            "type" : "string"
          },
          "realWorldTime" : {
            "format" : "date-time",
            "type" : "string"
          },
          "teamID" : {
            "nullable" : true,
            "type" : "string"
          }
        },
        "required" : [
          "eventType",
          "gameTime",
          "id",
          "matchID",
          "period",
          "realWorldTime"
        ],
        "type" : "object"
      },
      "PaginatedResponseMatchDTO" : {
        "properties" : {
          "data" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/MatchDTO"
            },
            "type" : "array"
          },
          "limit" : {
            "format" : "int64",
            "type" : "integer"
          },
          "page" : {
            "format" : "int64",
            "type" : "integer"
          },
          "total" : {
            "format" : "int64",
            "type" : "integer"
          },
          "totalPages" : {
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [
          "data",
          "limit",
          "page",
          "total",
          "totalPages"
        ],
        "type" : "object"
      },
      "PlayerDTO" : {
        "properties" : {
          "birthDate" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          },
          "externalUUID" : {
            "type" : "string"
          },
          "firstName" : {
            "type" : "string"
          },
          "fullName" : {
            "type" : "string"
          },
          "height" : {
            "format" : "double",
            "nullable" : true,
            "type" : "number"
          },
          "id" : {
            "type" : "string"
          },
          "jerseyNumber" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "lastName" : {
            "type" : "string"
          },
          "nationality" : {
            "nullable" : true,
            "type" : "string"
          },
          "portraitURL" : {
            "nullable" : true,
            "type" : "string"
          },
          "position" : {
            "type" : "string"
          },
          "team" : {
            "$ref" : "#\/components\/schemas\/TeamDTO"
          },
          "teamID" : {
            "type" : "string"
          },
          "weight" : {
            "format" : "double",
            "nullable" : true,
            "type" : "number"
          }
        },
        "required" : [
          "externalUUID",
          "firstName",
          "fullName",
          "id",
          "lastName",
          "position",
          "teamID"
        ],
        "type" : "object"
      },
      "PlayerGameStatDTO" : {
        "properties" : {
          "assists" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "faceoffPercentage" : {
            "format" : "double",
            "nullable" : true,
            "type" : "number"
          },
          "faceoffsLost" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "faceoffsWon" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "goals" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "goalsAgainst" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "hits" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "id" : {
            "type" : "string"
          },
          "isGoalie" : {
            "type" : "boolean"
          },
          "jerseyNumber" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "line" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "match" : {
            "$ref" : "#\/components\/schemas\/MatchDTO"
          },
          "matchID" : {
            "type" : "string"
          },
          "penaltyMinutes" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "playerID" : {
            "type" : "string"
          },
          "plusMinus" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "points" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "position" : {
            "nullable" : true,
            "type" : "string"
          },
          "powerPlayGoals" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "powerPlaySOG" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "savePercentage" : {
            "format" : "double",
            "nullable" : true,
            "type" : "number"
          },
          "saves" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "shotsOnGoal" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "shotsOnGoalAgainst" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "shotsWide" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "spga" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "teamID" : {
            "nullable" : true,
            "type" : "string"
          },
          "timeOnIce" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          }
        },
        "required" : [
          "id",
          "isGoalie",
          "matchID",
          "playerID"
        ],
        "type" : "object"
      },
      "PlayerStatDTO" : {
        "properties" : {
          "advancedStats" : {
            "$ref" : "#\/components\/schemas\/AdvancedStatsDTO"
          },
          "assists" : {
            "format" : "int64",
            "type" : "integer"
          },
          "gameType" : {
            "type" : "string"
          },
          "gamesPlayed" : {
            "format" : "int64",
            "type" : "integer"
          },
          "goalieStats" : {
            "$ref" : "#\/components\/schemas\/GoalieStatsDTO"
          },
          "goals" : {
            "format" : "int64",
            "type" : "integer"
          },
          "id" : {
            "type" : "string"
          },
          "penaltyMinutes" : {
            "format" : "int64",
            "type" : "integer"
          },
          "playerID" : {
            "type" : "string"
          },
          "plusMinus" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "points" : {
            "format" : "int64",
            "type" : "integer"
          },
          "season" : {
            "$ref" : "#\/components\/schemas\/SeasonDTO"
          },
          "ssgtUUID" : {
            "nullable" : true,
            "type" : "string"
          },
          "team" : {
            "$ref" : "#\/components\/schemas\/TeamDTO"
          }
        },
        "required" : [
          "assists",
          "gameType",
          "gamesPlayed",
          "goals",
          "id",
          "penaltyMinutes",
          "playerID",
          "points",
          "season"
        ],
        "type" : "object"
      },
      "RecentMatchesResponse" : {
        "properties" : {
          "recent" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/MatchDTO"
            },
            "type" : "array"
          },
          "upcoming" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/MatchDTO"
            },
            "type" : "array"
          }
        },
        "required" : [
          "recent",
          "upcoming"
        ],
        "type" : "object"
      },
      "RegisterDeviceDTO" : {
        "properties" : {
          "appVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "deviceId" : {
            "type" : "string"
          },
          "deviceModel" : {
            "nullable" : true,
            "type" : "string"
          },
          "fallbackDeviceId" : {
            "nullable" : true,
            "type" : "string"
          },
          "iosVersion" : {
            "nullable" : true,
            "type" : "string"
          }
        },
        "required" : [
          "deviceId"
        ],
        "type" : "object"
      },
      "RegisterPushTokenRequest" : {
        "properties" : {
          "deviceId" : {
            "type" : "string"
          },
          "environment" : {
            "nullable" : true,
            "type" : "string"
          },
          "matchId" : {
            "nullable" : true,
            "type" : "string"
          },
          "token" : {
            "type" : "string"
          },
          "type" : {
            "$ref" : "#\/components\/schemas\/RegisterPushTokenRequestRequestTokenType"
          }
        },
        "required" : [
          "deviceId",
          "token",
          "type"
        ],
        "type" : "object"
      },
      "RegisterPushTokenRequestRequestTokenType" : {
        "description" : "• regular → regular\n• match → match\n• push_to_start → pushToStart",
        "enum" : [
          "regular",
          "match",
          "push_to_start"
        ],
        "type" : "string"
      },
      "SeasonDTO" : {
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "endDate" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          },
          "externalUUID" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "isCurrent" : {
            "type" : "boolean"
          },
          "name" : {
            "type" : "string"
          },
          "series" : {
            "$ref" : "#\/components\/schemas\/SeriesDTO"
          },
          "startDate" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          }
        },
        "required" : [
          "code",
          "externalUUID",
          "id",
          "isCurrent",
          "name",
          "series"
        ],
        "type" : "object"
      },
      "SeasonInfoResponse" : {
        "properties" : {
          "season" : {
            "$ref" : "#\/components\/schemas\/SeasonDTO"
          },
          "standings" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/StandingDTO"
            },
            "type" : "array"
          },
          "teams" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/TeamDTO"
            },
            "type" : "array"
          }
        },
        "required" : [
          "season",
          "standings",
          "teams"
        ],
        "type" : "object"
      },
      "SeriesDTO" : {
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "country" : {
            "type" : "string"
          },
          "externalUUID" : {
            "type" : "string"
          },
          "gender" : {
            "nullable" : true,
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "isActive" : {
            "type" : "boolean"
          },
          "name" : {
            "type" : "string"
          },
          "priority" : {
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [
          "code",
          "country",
          "externalUUID",
          "id",
          "isActive",
          "name",
          "priority"
        ],
        "type" : "object"
      },
      "SetInterestedTeamsDTO" : {
        "properties" : {
          "teamIds" : {
            "items" : {
              "type" : "string"
            },
            "nullable" : true,
            "type" : "array"
          },
          "teams" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/InterestedTeamLevelDTO"
            },
            "nullable" : true,
            "type" : "array"
          }
        },
        "type" : "object"
      },
      "StandingDTO" : {
        "properties" : {
          "gamesPlayed" : {
            "format" : "int64",
            "type" : "integer"
          },
          "goalDifference" : {
            "format" : "int64",
            "type" : "integer"
          },
          "goalsAgainst" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "goalsFor" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "id" : {
            "type" : "string"
          },
          "losses" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "overtimeLosses" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "overtimeWins" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "points" : {
            "format" : "int64",
            "type" : "integer"
          },
          "rank" : {
            "format" : "int64",
            "type" : "integer"
          },
          "seasonID" : {
            "type" : "string"
          },
          "team" : {
            "$ref" : "#\/components\/schemas\/TeamDTO"
          },
          "wins" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          }
        },
        "required" : [
          "gamesPlayed",
          "goalDifference",
          "id",
          "points",
          "rank",
          "seasonID",
          "team"
        ],
        "type" : "object"
      },
      "SubscriptionDTO" : {
        "properties" : {
          "id" : {
            "format" : "uuid",
            "nullable" : true,
            "type" : "string"
          },
          "subscriptionType" : {
            "type" : "string"
          }
        },
        "required" : [
          "subscriptionType"
        ],
        "type" : "object"
      },
      "SubscriptionSummaryDTO" : {
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "subscriptionType" : {
            "type" : "string"
          }
        },
        "required" : [
          "id",
          "subscriptionType"
        ],
        "type" : "object"
      },
      "SubscriptionsResponseDTO" : {
        "properties" : {
          "subscriptions" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/SubscriptionDTO"
            },
            "type" : "array"
          },
          "total" : {
            "format" : "int64",
            "type" : "integer"
          }
        },
        "required" : [
          "subscriptions",
          "total"
        ],
        "type" : "object"
      },
      "TeamDTO" : {
        "properties" : {
          "city" : {
            "nullable" : true,
            "type" : "string"
          },
          "code" : {
            "type" : "string"
          },
          "externalId" : {
            "nullable" : true,
            "type" : "string"
          },
          "finalYears" : {
            "items" : {
              "format" : "int64",
              "type" : "integer"
            },
            "nullable" : true,
            "type" : "array"
          },
          "finals" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "founded" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "goldYears" : {
            "items" : {
              "format" : "int64",
              "type" : "integer"
            },
            "nullable" : true,
            "type" : "array"
          },
          "golds" : {
            "format" : "int64",
            "nullable" : true,
            "type" : "integer"
          },
          "iconURL" : {
            "nullable" : true,
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "isActive" : {
            "type" : "boolean"
          },
          "name" : {
            "type" : "string"
          },
          "retiredNumbers" : {
            "items" : {
              "type" : "string"
            },
            "nullable" : true,
            "type" : "array"
          },
          "venue" : {
            "nullable" : true,
            "type" : "string"
          }
        },
        "required" : [
          "code",
          "id",
          "isActive",
          "name"
        ],
        "type" : "object"
      },
      "UpdateDeviceDTO" : {
        "properties" : {
          "deviceName" : {
            "nullable" : true,
            "type" : "string"
          },
          "notificationsEnabled" : {
            "nullable" : true,
            "type" : "boolean"
          }
        },
        "type" : "object"
      },
      "UpdateTeamLevelDTO" : {
        "properties" : {
          "level" : {
            "type" : "string"
          }
        },
        "required" : [
          "level"
        ],
        "type" : "object"
      },
      "UserDTO" : {
        "properties" : {
          "createdAt" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "interestedTeamLevels" : {
            "additionalProperties" : {
              "type" : "string"
            },
            "type" : "object"
          },
          "interestedTeams" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/TeamDTO"
            },
            "type" : "array"
          },
          "notificationSettings" : {
            "$ref" : "#\/components\/schemas\/NotificationSettings"
          }
        },
        "required" : [
          "id",
          "interestedTeamLevels",
          "interestedTeams",
          "notificationSettings"
        ],
        "type" : "object"
      },
      "UserDataExportDTO" : {
        "properties" : {
          "appVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "createdAt" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          },
          "deviceId" : {
            "type" : "string"
          },
          "deviceModel" : {
            "nullable" : true,
            "type" : "string"
          },
          "devices" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/DeviceExportDTO"
            },
            "type" : "array"
          },
          "interestedTeams" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/TeamDTO"
            },
            "type" : "array"
          },
          "iosVersion" : {
            "nullable" : true,
            "type" : "string"
          },
          "lastSeenAt" : {
            "format" : "date-time",
            "nullable" : true,
            "type" : "string"
          },
          "matchHistory" : {
            "items" : {
              "$ref" : "#\/components\/schemas\/MatchHistoryDTO"
            },
            "type" : "array"
          },
          "notificationSettings" : {
            "$ref" : "#\/components\/schemas\/NotificationSettings"
          },
          "userId" : {
            "type" : "string"
          }
        },
        "required" : [
          "deviceId",
          "devices",
          "interestedTeams",
          "matchHistory",
          "notificationSettings",
          "userId"
        ],
        "type" : "object"
      }
    },
    "securitySchemes" : {
      "bearerAuth" : {
        "bearerFormat" : "JWT",
        "description" : "JWT token obtained from `\/auth\/register` or `\/auth\/refresh`.\n\nToken contains:\n- `sub`: User ID (UUID)\n- `deviceId`: Device identifier (IDFV)\n- `platform`: Platform identifier (e.g., \"ios\")\n- `iat`: Issued at timestamp\n- `exp`: Expiration timestamp (90 days from issue)\n\nInclude in Authorization header as: `Bearer <token>`",
        "scheme" : "bearer",
        "type" : "http"
      }
    }
  },
  "info" : {
    "description" : "REST API for Swedish hockey league data including SHL, SDHL, and HA.\n\nProvides match schedules, live scores, team rosters, player statistics, \nstandings, and push notification management.\n\n## Authentication\n\nMost endpoints are public. Protected endpoints require a JWT Bearer token \nobtained from the `\/auth\/register` endpoint.\n\n## League Selection\n\nUse the `X-League-Code` header to select which league's data to access.\nIf omitted, defaults to `SHL`.\n\nSupported leagues:\n- `SHL` - Svenska Hockeyligan (Swedish Hockey League)\n- `SDHL` - Svenska Damhockeyligan (Swedish Women's Hockey League) \n- `HA` - HockeyAllsvenskan (Swedish second tier)",
    "title" : "HockeyKit API",
    "version" : "1.5.0"
  },
  "openapi" : "3.0.1",
  "paths" : {
    "\/api\/v1\/auth\/logout" : {
      "post" : {
        "description" : "Invalidate the current JWT token",
        "operationId" : "postApiV1AuthLogout",
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Logout",
        "tags" : [
          "Authentication"
        ]
      }
    },
    "\/api\/v1\/auth\/refresh" : {
      "post" : {
        "description" : "Get a new JWT token using current valid token",
        "operationId" : "postApiV1AuthRefresh",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/AuthResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Refresh token",
        "tags" : [
          "Authentication"
        ]
      }
    },
    "\/api\/v1\/auth\/register" : {
      "post" : {
        "description" : "Register a device and obtain a JWT token. Creates a new user account if device ID is not found.",
        "operationId" : "postApiV1AuthRegister",
        "requestBody" : {
          "content" : {
            "application\/json" : {
              "schema" : {
                "$ref" : "#\/components\/schemas\/AuthRequestDTO"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/AuthResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Register device",
        "tags" : [
          "Authentication"
        ]
      }
    },
    "\/api\/v1\/devices" : {
      "get" : {
        "description" : "List all devices registered to the user",
        "operationId" : "getApiV1Devices",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/DevicesResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "List devices",
        "tags" : [
          "Devices"
        ]
      }
    },
    "\/api\/v1\/devices\/current" : {
      "post" : {
        "description" : "Register or update the current device",
        "operationId" : "postApiV1DevicesCurrent",
        "requestBody" : {
          "content" : {
            "application\/json" : {
              "schema" : {
                "$ref" : "#\/components\/schemas\/RegisterDeviceDTO"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/DeviceDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Register device",
        "tags" : [
          "Devices"
        ]
      }
    },
    "\/api\/v1\/devices\/{deviceId}" : {
      "delete" : {
        "description" : "Delete a device and all its associated push tokens",
        "operationId" : "deleteApiV1DevicesByDeviceId",
        "parameters" : [
          {
            "in" : "path",
            "name" : "deviceId",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Delete device",
        "tags" : [
          "Devices"
        ]
      },
      "get" : {
        "description" : "Get detailed information for a specific device",
        "operationId" : "getApiV1DevicesByDeviceId",
        "parameters" : [
          {
            "in" : "path",
            "name" : "deviceId",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/DeviceDetailsDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Get device details",
        "tags" : [
          "Devices"
        ]
      },
      "put" : {
        "description" : "Update device settings like name and notification preferences",
        "operationId" : "putApiV1DevicesByDeviceId",
        "parameters" : [
          {
            "in" : "path",
            "name" : "deviceId",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "requestBody" : {
          "content" : {
            "application\/json" : {
              "schema" : {
                "$ref" : "#\/components\/schemas\/UpdateDeviceDTO"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/DeviceDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Update device",
        "tags" : [
          "Devices"
        ]
      }
    },
    "\/api\/v1\/live\/{liveUUID}" : {
      "get" : {
        "description" : "Get real-time data for a live match",
        "operationId" : "getApiV1LiveByLiveUUID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "liveUUID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/LiveMatchDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get live match data",
        "tags" : [
          "Live"
        ]
      },
      "post" : {
        "description" : "Register for push notifications for a live match",
        "operationId" : "postApiV1LiveByLiveUUID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "liveUUID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "requestBody" : {
          "content" : {
            "application\/json" : {
              "schema" : {
                "$ref" : "#\/components\/schemas\/CreateMatchSubscriptionRequest"
              }
            }
          },
          "required" : true
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Subscribe to live updates",
        "tags" : [
          "Live"
        ]
      }
    },
    "\/api\/v1\/live\/{liveUUID}\/external" : {
      "get" : {
        "description" : "Get raw HockeyKit GameData for a live match",
        "operationId" : "getApiV1LiveByLiveUUIDExternal",
        "parameters" : [
          {
            "in" : "path",
            "name" : "liveUUID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "summary" : "Get raw live data",
        "tags" : [
          "Live"
        ]
      }
    },
    "\/api\/v1\/matches" : {
      "get" : {
        "description" : "List all matches with optional filters and pagination",
        "operationId" : "getApiV1Matches",
        "parameters" : [
          {
            "in" : "query",
            "name" : "date",
            "schema" : {
              "type" : "string"
            }
          },
          {
            "in" : "query",
            "name" : "team",
            "schema" : {
              "type" : "string"
            }
          },
          {
            "in" : "query",
            "name" : "season",
            "schema" : {
              "type" : "string"
            }
          },
          {
            "in" : "query",
            "name" : "state",
            "schema" : {
              "type" : "string"
            }
          },
          {
            "in" : "query",
            "name" : "page",
            "schema" : {
              "format" : "int64",
              "type" : "integer"
            }
          },
          {
            "in" : "query",
            "name" : "limit",
            "schema" : {
              "format" : "int64",
              "type" : "integer"
            }
          },
          {
            "in" : "query",
            "name" : "sort",
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/PaginatedResponseMatchDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "List matches",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/matches\/external\/{externalUUID}" : {
      "get" : {
        "description" : "Find a match by its external HockeyKit UUID",
        "operationId" : "getApiV1MatchesExternalByExternalUUID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "externalUUID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/MatchDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get match by external UUID",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/matches\/live" : {
      "get" : {
        "description" : "Get all currently ongoing matches",
        "operationId" : "getApiV1MatchesLive",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/MatchDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get live matches",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/matches\/recent" : {
      "get" : {
        "description" : "Get recently played and upcoming matches",
        "operationId" : "getApiV1MatchesRecent",
        "parameters" : [
          {
            "in" : "query",
            "name" : "upcoming",
            "schema" : {
              "format" : "int64",
              "type" : "integer"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/RecentMatchesResponse"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get recent matches",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/matches\/season\/{seasonCode}" : {
      "get" : {
        "description" : "Get all matches for a specific season code (unpaginated)",
        "operationId" : "getApiV1MatchesSeasonBySeasonCode",
        "parameters" : [
          {
            "in" : "path",
            "name" : "seasonCode",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/MatchDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get matches by season",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/matches\/{matchID}" : {
      "get" : {
        "description" : "Get detailed information for a specific match",
        "operationId" : "getApiV1MatchesByMatchID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "matchID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/MatchDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get match details",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/matches\/{matchID}\/events" : {
      "get" : {
        "description" : "Get all play-by-play events for a match (goals, penalties, shots, etc.)",
        "operationId" : "getApiV1MatchesByMatchIDEvents",
        "parameters" : [
          {
            "in" : "path",
            "name" : "matchID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/PBPEventDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get play-by-play events",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/matches\/{matchID}\/player-stats" : {
      "get" : {
        "description" : "Get per-game (boxscore) statistics for every skater and goalie in a match.",
        "operationId" : "getApiV1MatchesByMatchIDPlayer-stats",
        "parameters" : [
          {
            "in" : "path",
            "name" : "matchID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/PlayerGameStatDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get per-game player stats",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/matches\/{matchID}\/stats" : {
      "get" : {
        "description" : "Get team statistics for a specific match",
        "operationId" : "getApiV1MatchesByMatchIDStats",
        "parameters" : [
          {
            "in" : "path",
            "name" : "matchID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/MatchStatsDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get match statistics",
        "tags" : [
          "Matches"
        ]
      }
    },
    "\/api\/v1\/players\/{playerID}" : {
      "get" : {
        "description" : "Get detailed information for a specific player",
        "operationId" : "getApiV1PlayersByPlayerID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "playerID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/PlayerDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get player details",
        "tags" : [
          "Players"
        ]
      }
    },
    "\/api\/v1\/players\/{playerID}\/game-log" : {
      "get" : {
        "description" : "Get real per-game statistics for a player (newest first), each with match context. This is the true game-by-game log, distinct from \/stats which returns per-season aggregates.",
        "operationId" : "getApiV1PlayersByPlayerIDGame-log",
        "parameters" : [
          {
            "in" : "query",
            "name" : "seasonID",
            "schema" : {
              "type" : "string"
            }
          },
          {
            "in" : "query",
            "name" : "limit",
            "schema" : {
              "format" : "int64",
              "type" : "integer"
            }
          },
          {
            "in" : "path",
            "name" : "playerID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/PlayerGameStatDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get player per-game log",
        "tags" : [
          "Players"
        ]
      }
    },
    "\/api\/v1\/players\/{playerID}\/stats" : {
      "get" : {
        "description" : "Get career statistics for a player with optional filters",
        "operationId" : "getApiV1PlayersByPlayerIDStats",
        "parameters" : [
          {
            "in" : "query",
            "name" : "gameType",
            "schema" : {
              "type" : "string"
            }
          },
          {
            "in" : "query",
            "name" : "seriesCode",
            "schema" : {
              "type" : "string"
            }
          },
          {
            "in" : "query",
            "name" : "seasonID",
            "schema" : {
              "type" : "string"
            }
          },
          {
            "in" : "path",
            "name" : "playerID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/PlayerStatDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get player statistics",
        "tags" : [
          "Players"
        ]
      }
    },
    "\/api\/v1\/push-tokens" : {
      "get" : {
        "description" : "List all push notification subscriptions for the user",
        "operationId" : "getApiV1Push-tokens",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/SubscriptionsResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "List subscriptions",
        "tags" : [
          "Push Notifications"
        ]
      }
    },
    "\/api\/v1\/push-tokens\/device\/{deviceId}" : {
      "delete" : {
        "description" : "Delete all push notification subscriptions for a device",
        "operationId" : "deleteApiV1Push-tokensDeviceByDeviceId",
        "parameters" : [
          {
            "in" : "path",
            "name" : "deviceId",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Delete device subscriptions",
        "tags" : [
          "Push Notifications"
        ]
      }
    },
    "\/api\/v1\/push-tokens\/register" : {
      "post" : {
        "description" : "Register a push token for notifications (regular, match, or push-to-start)",
        "operationId" : "postApiV1Push-tokensRegister",
        "requestBody" : {
          "content" : {
            "application\/json" : {
              "schema" : {
                "$ref" : "#\/components\/schemas\/RegisterPushTokenRequest"
              }
            }
          },
          "required" : true
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Register push token",
        "tags" : [
          "Push Notifications"
        ]
      }
    },
    "\/api\/v1\/push-tokens\/{tokenId}" : {
      "delete" : {
        "description" : "Delete a specific push notification subscription",
        "operationId" : "deleteApiV1Push-tokensByTokenId",
        "parameters" : [
          {
            "in" : "path",
            "name" : "tokenId",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Delete subscription",
        "tags" : [
          "Push Notifications"
        ]
      }
    },
    "\/api\/v1\/seasons" : {
      "get" : {
        "description" : "List all seasons for the current league",
        "operationId" : "getApiV1Seasons",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/SeasonDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "List seasons",
        "tags" : [
          "Seasons"
        ]
      }
    },
    "\/api\/v1\/seasons\/current" : {
      "get" : {
        "description" : "Get the current active season",
        "operationId" : "getApiV1SeasonsCurrent",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/SeasonDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get current season",
        "tags" : [
          "Seasons"
        ]
      }
    },
    "\/api\/v1\/seasons\/current\/info" : {
      "get" : {
        "description" : "Get comprehensive info for current season including teams and standings",
        "operationId" : "getApiV1SeasonsCurrentInfo",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/SeasonInfoResponse"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get current season info",
        "tags" : [
          "Seasons"
        ]
      }
    },
    "\/api\/v1\/seasons\/{seasonID}" : {
      "get" : {
        "description" : "Get detailed information for a specific season",
        "operationId" : "getApiV1SeasonsBySeasonID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "seasonID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/SeasonDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get season details",
        "tags" : [
          "Seasons"
        ]
      }
    },
    "\/api\/v1\/series" : {
      "get" : {
        "description" : "List all available hockey leagues\/series",
        "operationId" : "getApiV1Series",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/SeriesDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "List series",
        "tags" : [
          "Series"
        ]
      }
    },
    "\/api\/v1\/series\/{seriesID}" : {
      "get" : {
        "description" : "Get detailed information for a specific series",
        "operationId" : "getApiV1SeriesBySeriesID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "seriesID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/SeriesDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get series details",
        "tags" : [
          "Series"
        ]
      }
    },
    "\/api\/v1\/series\/{seriesID}\/seasons" : {
      "get" : {
        "description" : "Get all seasons for a specific series",
        "operationId" : "getApiV1SeriesBySeriesIDSeasons",
        "parameters" : [
          {
            "in" : "path",
            "name" : "seriesID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/SeasonDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get series seasons",
        "tags" : [
          "Series"
        ]
      }
    },
    "\/api\/v1\/standings" : {
      "get" : {
        "description" : "Get standings for the current season",
        "operationId" : "getApiV1Standings",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/StandingDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get current standings",
        "tags" : [
          "Standings"
        ]
      }
    },
    "\/api\/v1\/standings\/{seasonID}" : {
      "get" : {
        "description" : "Get standings for a specific season",
        "operationId" : "getApiV1StandingsBySeasonID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "seasonID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/StandingDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get standings by season",
        "tags" : [
          "Standings"
        ]
      }
    },
    "\/api\/v1\/teams" : {
      "get" : {
        "description" : "List all teams for the current league",
        "operationId" : "getApiV1Teams",
        "parameters" : [
          {
            "in" : "query",
            "name" : "includeInactive",
            "schema" : {
              "type" : "boolean"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/TeamDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "List teams",
        "tags" : [
          "Teams"
        ]
      }
    },
    "\/api\/v1\/teams\/{teamID}" : {
      "get" : {
        "description" : "Get detailed information for a specific team",
        "operationId" : "getApiV1TeamsByTeamID",
        "parameters" : [
          {
            "in" : "path",
            "name" : "teamID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/TeamDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get team details",
        "tags" : [
          "Teams"
        ]
      }
    },
    "\/api\/v1\/teams\/{teamID}\/matches" : {
      "get" : {
        "description" : "Get all matches for a specific team",
        "operationId" : "getApiV1TeamsByTeamIDMatches",
        "parameters" : [
          {
            "in" : "path",
            "name" : "teamID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/MatchDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get team matches",
        "tags" : [
          "Teams"
        ]
      }
    },
    "\/api\/v1\/teams\/{teamID}\/roster" : {
      "get" : {
        "description" : "Get all players on a team's roster",
        "operationId" : "getApiV1TeamsByTeamIDRoster",
        "parameters" : [
          {
            "in" : "path",
            "name" : "teamID",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "items" : {
                    "$ref" : "#\/components\/schemas\/PlayerDTO"
                  },
                  "type" : "array"
                }
              }
            },
            "description" : "OK"
          }
        },
        "summary" : "Get team roster",
        "tags" : [
          "Teams"
        ]
      }
    },
    "\/api\/v1\/user" : {
      "delete" : {
        "description" : "Permanently delete user account and all associated data",
        "operationId" : "deleteApiV1User",
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Delete account",
        "tags" : [
          "User"
        ]
      }
    },
    "\/api\/v1\/user\/export" : {
      "get" : {
        "description" : "Export all user data for GDPR compliance",
        "operationId" : "getApiV1UserExport",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/UserDataExportDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Export user data",
        "tags" : [
          "User"
        ]
      }
    },
    "\/api\/v1\/user\/interested-teams" : {
      "get" : {
        "description" : "Get the list of teams the user is interested in",
        "operationId" : "getApiV1UserInterested-teams",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/InterestedTeamsResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Get interested teams",
        "tags" : [
          "User"
        ]
      },
      "put" : {
        "description" : "Replace all interested teams with a new list",
        "operationId" : "putApiV1UserInterested-teams",
        "requestBody" : {
          "content" : {
            "application\/json" : {
              "schema" : {
                "$ref" : "#\/components\/schemas\/SetInterestedTeamsDTO"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/InterestedTeamsResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Set interested teams",
        "tags" : [
          "User"
        ]
      }
    },
    "\/api\/v1\/user\/interested-teams\/{teamId}" : {
      "delete" : {
        "description" : "Remove a team from the interested teams list",
        "operationId" : "deleteApiV1UserInterested-teamsByTeamId",
        "parameters" : [
          {
            "in" : "path",
            "name" : "teamId",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/InterestedTeamsResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Remove interested team",
        "tags" : [
          "User"
        ]
      },
      "patch" : {
        "description" : "Set the per-team notification level (off \/ final_only \/ all)",
        "operationId" : "patchApiV1UserInterested-teamsByTeamId",
        "parameters" : [
          {
            "in" : "path",
            "name" : "teamId",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "requestBody" : {
          "content" : {
            "application\/json" : {
              "schema" : {
                "$ref" : "#\/components\/schemas\/UpdateTeamLevelDTO"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/InterestedTeamsResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Update interested team notification level",
        "tags" : [
          "User"
        ]
      },
      "post" : {
        "description" : "Add a team to the interested teams list",
        "operationId" : "postApiV1UserInterested-teamsByTeamId",
        "parameters" : [
          {
            "in" : "path",
            "name" : "teamId",
            "required" : true,
            "schema" : {
              "type" : "string"
            }
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/InterestedTeamsResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Add interested team",
        "tags" : [
          "User"
        ]
      }
    },
    "\/api\/v1\/user\/notifications" : {
      "patch" : {
        "description" : "Update the user's notification preferences",
        "operationId" : "patchApiV1UserNotifications",
        "requestBody" : {
          "content" : {
            "application\/json" : {
              "schema" : {
                "$ref" : "#\/components\/schemas\/NotificationSettings"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/NotificationSettingsResponseDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Update notification settings",
        "tags" : [
          "User"
        ]
      }
    },
    "\/api\/v1\/user\/profile" : {
      "get" : {
        "description" : "Get the authenticated user's profile including notification settings",
        "operationId" : "getApiV1UserProfile",
        "responses" : {
          "200" : {
            "content" : {
              "application\/json" : {
                "schema" : {
                  "$ref" : "#\/components\/schemas\/UserDTO"
                }
              }
            },
            "description" : "OK"
          }
        },
        "security" : [
          {
            "bearerAuth" : [

            ]
          }
        ],
        "summary" : "Get user profile",
        "tags" : [
          "User"
        ]
      }
    },
    "\/docs" : {
      "get" : {
        "description" : "GET \/docs",
        "tags" : [
          "docs"
        ]
      }
    },
    "\/health" : {
      "get" : {
        "description" : "Check API health including database and cache connectivity",
        "operationId" : "getHealth",
        "summary" : "Health check",
        "tags" : [
          "Health"
        ]
      }
    }
  },
  "security" : [
    {
      "bearerAuth" : [

      ]
    }
  ],
  "servers" : [
    {
      "description" : "Production",
      "url" : "https:\/\/api.lrlnet.se\/api\/v1"
    }
  ],
  "tags" : [
    {
      "description" : "API health and status checks",
      "name" : "Health"
    },
    {
      "name" : "Matches"
    },
    {
      "name" : "Teams"
    },
    {
      "name" : "Players"
    },
    {
      "name" : "Standings"
    },
    {
      "name" : "Seasons"
    },
    {
      "name" : "Series"
    },
    {
      "name" : "Live"
    },
    {
      "name" : "Authentication"
    },
    {
      "name" : "User"
    },
    {
      "name" : "Devices"
    },
    {
      "name" : "Push Notifications"
    }
  ]
}