stormgate_world 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Gemfile.lock +73 -0
 - data/README.md +20 -5
 - data/docs/ActivityStatistics.md +24 -0
 - data/docs/ActivityStatisticsActivity.md +20 -0
 - data/docs/ActivityStatisticsEntry.md +24 -0
 - data/docs/Aggregation.md +15 -0
 - data/docs/CountriesStatistics.md +24 -0
 - data/docs/CountriesStatisticsEntry.md +22 -0
 - data/docs/DumpFormat.md +15 -0
 - data/docs/LeaderboardEntriesApi.md +10 -4
 - data/docs/LeaderboardEntryHistory.md +7 -1
 - data/docs/LeaderboardEntryHistoryRow.md +22 -0
 - data/docs/LeaderboardEntryResponse.md +3 -1
 - data/docs/LeaderboardsApi.md +10 -5
 - data/docs/League.md +15 -0
 - data/docs/MatchParticipantPlayerLeaderboardEntryResponse.md +1 -1
 - data/docs/PlayerMatchesResponse.md +2 -0
 - data/docs/PlayerResponse.md +5 -1
 - data/docs/PlayersApi.md +14 -146
 - data/docs/Resolution.md +15 -0
 - data/docs/ServersStatistics.md +24 -0
 - data/docs/ServersStatisticsEntry.md +22 -0
 - data/docs/StatisticsApi.md +205 -2
 - data/docs/StatsByTime.md +1 -1
 - data/lib/stormgate_world/api/leaderboard_entries_api.rb +6 -0
 - data/lib/stormgate_world/api/leaderboards_api.rb +3 -0
 - data/lib/stormgate_world/api/players_api.rb +20 -129
 - data/lib/stormgate_world/api/statistics_api.rb +186 -2
 - data/lib/stormgate_world/models/activity_statistics.rb +269 -0
 - data/lib/stormgate_world/models/activity_statistics_activity.rb +239 -0
 - data/lib/stormgate_world/models/activity_statistics_entry.rb +263 -0
 - data/lib/stormgate_world/models/aggregation.rb +41 -0
 - data/lib/stormgate_world/models/countries_statistics.rb +271 -0
 - data/lib/stormgate_world/models/countries_statistics_entry.rb +241 -0
 - data/lib/stormgate_world/models/dump_format.rb +40 -0
 - data/lib/stormgate_world/models/leaderboard_entry_history.rb +72 -2
 - data/lib/stormgate_world/models/leaderboard_entry_history_row.rb +241 -0
 - data/lib/stormgate_world/models/leaderboard_entry_response.rb +12 -2
 - data/lib/stormgate_world/models/league.rb +45 -0
 - data/lib/stormgate_world/models/match_participant_player_leaderboard_entry_response.rb +23 -1
 - data/lib/stormgate_world/models/player_matches_response.rb +36 -1
 - data/lib/stormgate_world/models/player_response.rb +25 -5
 - data/lib/stormgate_world/models/race.rb +1 -2
 - data/lib/stormgate_world/models/resolution.rb +42 -0
 - data/lib/stormgate_world/models/servers_statistics.rb +271 -0
 - data/lib/stormgate_world/models/servers_statistics_entry.rb +253 -0
 - data/lib/stormgate_world/models/stats_by_time.rb +23 -1
 - data/lib/stormgate_world/version.rb +1 -1
 - data/lib/stormgate_world.rb +12 -2
 - data/pkg/stormgate_world-1.0.0.gem +0 -0
 - data/spec/models/activity_statistics_activity_spec.rb +42 -0
 - data/spec/models/activity_statistics_entry_spec.rb +54 -0
 - data/spec/models/activity_statistics_spec.rb +54 -0
 - data/spec/models/aggregation_spec.rb +30 -0
 - data/spec/models/countries_statistics_entry_spec.rb +48 -0
 - data/spec/models/countries_statistics_spec.rb +54 -0
 - data/spec/models/dump_format_spec.rb +30 -0
 - data/spec/models/leaderboard_entry_history_row_spec.rb +48 -0
 - data/spec/models/league_spec.rb +30 -0
 - data/spec/models/resolution_spec.rb +30 -0
 - data/spec/models/servers_statistics_entry_spec.rb +48 -0
 - data/spec/models/servers_statistics_spec.rb +54 -0
 - data/stormgate_world.json +1 -1
 - metadata +52 -2
 
    
        data/stormgate_world.json
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"openapi":"3.0.3","info":{"title":"api","description":"","license":{"name":""},"version":"0.1.1"},"servers":[{"url":"https://api.stormgateworld.com/"}],"paths":{"/v0/leaderboard-entries/{leaderboard_entry_id}/history":{"get":{"tags":["Leaderboard Entries"],"operationId":"getLeaderboardEntryHistory","parameters":[{"name":"leaderboard_entry_id","in":"path","description":"Player Leaderboard Entry ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player leaderboard entry found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardEntryHistory"}}}},"404":{"description":"Player leaderboard entry was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/leaderboards/ranked_1v1":{"get":{"tags":["Leaderboards"],"operationId":"getLeaderboard","parameters":[{"name":"race","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Race"}],"nullable":true}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"order","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/LeaderboardOrder"}],"nullable":true}},{"name":"query","in":"query","required":false,"schema":{"type":"string","nullable":true}}],"responses":{"200":{"description":"Leaderboard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/leaderboards/ranked_1v1/dump":{"get":{"tags":["Leaderboards"],"operationId":"getLeaderboardDump","responses":{"200":{"description":"Leaderboard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardDumpResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/matches":{"get":{"tags":["Matches"],"operationId":"getMatches","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"state","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/MatchState"}],"nullable":true}}],"responses":{"200":{"description":"Matches found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchesResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}":{"get":{"tags":["Players"],"operationId":"getPlayer","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerResponse"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/matches":{"get":{"tags":["Players"],"operationId":"getPlayerMatches","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerMatchesResponse"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/matches/last":{"get":{"tags":["Players"],"operationId":"getPlayerLastMatch","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchResponse"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/preferences":{"get":{"tags":["Players"],"operationId":"getPlayerPreferences","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerPreferences"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"api_key":[]}]},"put":{"tags":["Players"],"operationId":"updatePlayerPreferences","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerPreferences"}}},"required":true},"responses":{"201":{"description":"Player preferences updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerPreferences"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"api_key":[]}]}},"/v0/players/{player_id}/statistics/activity":{"get":{"tags":["Players"],"operationId":"getPlayerStatisticsActivity","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerActivityStats"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/statistics/matchups":{"get":{"tags":["Players"],"operationId":"getPlayerStatisticsMatchups","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerMatchupsStats"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/statistics/opponents":{"get":{"tags":["Players"],"operationId":"getPlayerStatisticsOpponents","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerOpponentsStats"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/statistics/ranked_1v1":{"get":{"tags":["Statistics"],"operationId":"getStatistics","parameters":[{"name":"league","in":"query","required":false,"schema":{"type":"string","nullable":true}}],"responses":{"200":{"description":"Stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsByTime"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"ErrorResponse":{"type":"object","required":["code","error"],"properties":{"code":{"type":"integer","format":"int32","minimum":0},"error":{"type":"string"},"full_error":{"type":"array","items":{"type":"string"}},"backtrace":{"type":"array","items":{"type":"string"}},"full_backtrace":{"type":"array","items":{"type":"string"}}}},"Leaderboard":{"type":"string","enum":["ranked_1v1","unranked_1v1","custom"]},"LeaderboardDumpResponse":{"type":"object","required":["count","cached_at","entries"],"properties":{"count":{"type":"integer","minimum":0},"cached_at":{"type":"string","format":"date-time"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntryResponse"}}}},"LeaderboardEntryHistory":{"type":"object","required":["history"],"properties":{"history":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntryHistoryEntry"}}}},"LeaderboardEntryHistoryEntry":{"type":"object","required":["time","mmr"],"properties":{"time":{"type":"string","format":"date-time"},"mmr":{"type":"number","format":"float"},"max_confirmed_mmr":{"type":"number","format":"float","nullable":true},"points":{"type":"number","format":"float","nullable":true}}},"LeaderboardEntryResponse":{"type":"object","required":["leaderboard_entry_id","leaderboard","anonymous","race","mmr","wins","losses","matches","win_rate"],"properties":{"leaderboard_entry_id":{"type":"string"},"leaderboard":{"$ref":"#/components/schemas/Leaderboard"},"player_id":{"type":"string","nullable":true},"anonymous":{"type":"boolean"},"nickname":{"type":"string","nullable":true},"nickname_discriminator":{"type":"string","nullable":true},"rank":{"type":"integer","format":"int32","nullable":true},"race":{"$ref":"#/components/schemas/Race"},"league":{"type":"string","nullable":true},"tier":{"type":"integer","format":"int32","nullable":true},"mmr":{"type":"number","format":"float"},"max_confirmed_mmr":{"type":"number","format":"float","nullable":true},"points":{"type":"number","format":"float","nullable":true},"wins":{"type":"integer","format":"int32"},"losses":{"type":"integer","format":"int32"},"ties":{"type":"integer","format":"int32","nullable":true},"matches":{"type":"integer","format":"int32"},"win_rate":{"type":"number","format":"float"}}},"LeaderboardOrder":{"type":"string","enum":["points","mmr"]},"LeaderboardResponse":{"type":"object","required":["page","count","total","entries"],"properties":{"page":{"type":"integer","format":"int64","minimum":0},"count":{"type":"integer","minimum":0},"total":{"type":"integer","format":"int64","minimum":0},"entries":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntryResponse"}}}},"MatchParticipantPlayerLeaderboardEntryResponse":{"type":"object","required":["leaderboard_entry_id","wins","losses","win_rate"],"properties":{"leaderboard_entry_id":{"type":"string"},"league":{"type":"string","nullable":true},"tier":{"type":"integer","format":"int32","nullable":true},"rank":{"type":"integer","format":"int32","nullable":true},"wins":{"type":"integer","format":"int32"},"losses":{"type":"integer","format":"int32"},"ties":{"type":"integer","format":"int32","nullable":true},"win_rate":{"type":"number","format":"float"}}},"MatchParticipantPlayerResponse":{"type":"object","required":["player_id"],"properties":{"player_id":{"type":"string"},"nickname":{"type":"string","nullable":true},"nickname_discriminator":{"type":"string","nullable":true}}},"MatchParticipantResponse":{"type":"object","required":["race","team","party","mmr"],"properties":{"player":{"allOf":[{"$ref":"#/components/schemas/MatchParticipantPlayerResponse"}],"nullable":true},"player_leaderboard_entry":{"allOf":[{"$ref":"#/components/schemas/MatchParticipantPlayerLeaderboardEntryResponse"}],"nullable":true},"race":{"$ref":"#/components/schemas/Race"},"team":{"type":"integer","format":"int32"},"party":{"type":"integer","format":"int32"},"mmr":{"type":"number","format":"float"},"mmr_updated":{"type":"number","format":"float","nullable":true},"mmr_diff":{"type":"number","format":"float","nullable":true},"result":{"allOf":[{"$ref":"#/components/schemas/MatchResult"}],"nullable":true},"ping":{"type":"integer","format":"int32","nullable":true},"scores":{"nullable":true}}},"MatchResponse":{"type":"object","required":["cached_at","match_id","leaderboard","server","players","created_at"],"properties":{"cached_at":{"type":"string","format":"date-time"},"match_id":{"type":"string"},"state":{"allOf":[{"$ref":"#/components/schemas/MatchState"}],"nullable":true},"leaderboard":{"$ref":"#/components/schemas/Leaderboard"},"server":{"type":"string"},"players":{"type":"array","items":{"$ref":"#/components/schemas/MatchParticipantResponse"}},"created_at":{"type":"string","format":"date-time"},"ended_at":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","format":"int64","nullable":true}}},"MatchResult":{"type":"string","enum":["win","loss","undecided"]},"MatchState":{"type":"string","enum":["ongoing","finished"]},"MatchesResponse":{"type":"object","required":["count","page","total","matches"],"properties":{"count":{"type":"integer","minimum":0},"page":{"type":"integer","format":"int64","minimum":0},"total":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"array","items":{"$ref":"#/components/schemas/MatchResponse"}}}},"PlayerActivityStats":{"type":"object","required":["cached_at","history","races"],"properties":{"cached_at":{"type":"string","format":"date-time"},"aggregated":{"allOf":[{"$ref":"#/components/schemas/PlayerStatsEntryAggregated"}],"nullable":true},"history":{"type":"array","items":{"$ref":"#/components/schemas/PlayerStatsEntry"}},"races":{"type":"array","items":{"$ref":"#/components/schemas/PlayerActivityStatsRace"}}}},"PlayerActivityStatsRace":{"type":"object","required":["history"],"properties":{"aggregated":{"allOf":[{"$ref":"#/components/schemas/PlayerStatsEntry"}],"nullable":true},"history":{"type":"array","items":{"$ref":"#/components/schemas/PlayerStatsEntry"}}}},"PlayerMatchesResponse":{"type":"object","required":["count","page","matches"],"properties":{"count":{"type":"integer","minimum":0},"page":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"array","items":{"$ref":"#/components/schemas/MatchResponse"}}}},"PlayerMatchupsStats":{"type":"object","required":["cached_at","matchups"],"properties":{"cached_at":{"type":"string","format":"date-time"},"matchups":{"type":"array","items":{"$ref":"#/components/schemas/PlayerMatchupsStatsMatchup"}}}},"PlayerMatchupsStatsEntry":{"type":"object","required":["matches_count","wins_count","losses_count","wins","losses","ties","match_length"],"properties":{"match_length_range":{"type":"string","nullable":true},"matches_count":{"type":"integer","format":"int64"},"wins_count":{"type":"integer","format":"int64"},"losses_count":{"type":"integer","format":"int64"},"wins":{"type":"integer","format":"int64"},"losses":{"type":"integer","format":"int64"},"ties":{"type":"integer","format":"int64"},"win_rate":{"type":"number","format":"double","nullable":true},"match_length":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"}}},"PlayerMatchupsStatsMatchup":{"type":"object","required":["race","opponent_race","aggregated","match_length"],"properties":{"race":{"$ref":"#/components/schemas/Race"},"opponent_race":{"$ref":"#/components/schemas/Race"},"aggregated":{"$ref":"#/components/schemas/PlayerMatchupsStatsEntry"},"match_length":{"type":"array","items":{"$ref":"#/components/schemas/PlayerMatchupsStatsEntry"}}}},"PlayerOpponentsStats":{"type":"object","required":["cached_at","count","opponents"],"properties":{"cached_at":{"type":"string","format":"date-time"},"count":{"type":"integer","minimum":0},"opponents":{"type":"array","items":{"$ref":"#/components/schemas/PlayerOpponentsStatsOpponent"}}}},"PlayerOpponentsStatsOpponent":{"type":"object","required":["player","matches_count","wins_count","losses_count","wins","losses","ties","match_length"],"properties":{"player":{"$ref":"#/components/schemas/MatchParticipantPlayerResponse"},"matches_count":{"type":"integer","format":"int64"},"wins_count":{"type":"integer","format":"int64"},"losses_count":{"type":"integer","format":"int64"},"wins":{"type":"integer","format":"int64"},"losses":{"type":"integer","format":"int64"},"ties":{"type":"integer","format":"int64"},"win_rate":{"type":"number","format":"double","nullable":true},"match_length":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"}}},"PlayerPreferences":{"type":"object","properties":{"privacy_profile":{"allOf":[{"$ref":"#/components/schemas/ProfilePrivacy"}],"nullable":true}}},"PlayerResponse":{"type":"object","required":["id","anonymous","leaderboard_entries"],"properties":{"id":{"type":"string"},"anonymous":{"type":"boolean"},"nickname":{"type":"string","nullable":true},"nickname_discriminator":{"type":"string","nullable":true},"leaderboard_entries":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntryResponse"}},"last_match_ended_at":{"type":"string","format":"date-time","nullable":true}}},"PlayerStatsEntry":{"type":"object","required":["matches","wins","losses","ties","mmr","points","match_length"],"properties":{"date":{"type":"string","format":"date","nullable":true},"race":{"allOf":[{"$ref":"#/components/schemas/Race"}],"nullable":true},"matches":{"type":"integer","format":"int64"},"wins":{"type":"integer","format":"int64"},"losses":{"type":"integer","format":"int64"},"ties":{"type":"integer","format":"int64"},"win_rate":{"type":"number","format":"double","nullable":true},"mmr":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"points":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"match_length":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"}}},"PlayerStatsEntryAggregated":{"type":"object","required":["matches","matches_per_day","wins","losses","ties","mmr","points","match_length"],"properties":{"matches":{"type":"integer","format":"int64"},"matches_per_day":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"wins":{"type":"integer","format":"int64"},"losses":{"type":"integer","format":"int64"},"ties":{"type":"integer","format":"int64"},"win_rate":{"type":"number","format":"double","nullable":true},"mmr":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"points":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"match_length":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"}}},"PlayerStatsEntryNumBreakdown":{"type":"object","properties":{"max":{"type":"number","format":"double","nullable":true},"min":{"type":"number","format":"double","nullable":true},"median":{"type":"number","format":"double","nullable":true},"average":{"type":"number","format":"double","nullable":true}}},"ProfilePrivacy":{"type":"string","enum":["public","private"]},"Race":{"type":"string","enum":["infernals","vanguard","random"]},"StatsByTime":{"type":"object","required":["cached_at","updated_at","period","count","races","match_length"],"properties":{"cached_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"period":{"type":"string"},"count":{"type":"integer","minimum":0},"league":{"type":"string","nullable":true},"races":{"type":"array","items":{"$ref":"#/components/schemas/StatsByTimeEntry"}},"match_length":{"$ref":"#/components/schemas/StatsByTimeMatchLength"}}},"StatsByTimeEntry":{"type":"object","required":["race","aggregated","history"],"properties":{"race":{"$ref":"#/components/schemas/Race"},"aggregated":{"$ref":"#/components/schemas/StatsByTimeHistoryPoint"},"history":{"type":"array","items":{"$ref":"#/components/schemas/StatsByTimeHistoryPoint"}}}},"StatsByTimeHistoryPoint":{"type":"object","required":["win_rate_by_match_length"],"properties":{"date":{"type":"string","format":"date","nullable":true},"win_rate":{"type":"number","format":"double","nullable":true},"win_rate_by_match_length":{"type":"object","additionalProperties":{"type":"number","format":"double","nullable":true}},"pick_rate":{"type":"number","format":"double","nullable":true},"players_count":{"type":"integer","format":"int64","nullable":true},"matches_count":{"type":"integer","format":"int64","nullable":true},"wins_count":{"type":"integer","format":"int64","nullable":true},"losses_count":{"type":"integer","format":"int64","nullable":true},"matches_count_with_mirror":{"type":"integer","format":"int64","nullable":true}}},"StatsByTimeMatchLength":{"type":"object","required":["aggregated","history"],"properties":{"aggregated":{"$ref":"#/components/schemas/StatsByTimeMatchLengthEntry"},"history":{"type":"array","items":{"$ref":"#/components/schemas/StatsByTimeMatchLengthEntry"}}}},"StatsByTimeMatchLengthEntry":{"type":"object","properties":{"date":{"type":"string","format":"date","nullable":true},"average":{"type":"integer","format":"int32","nullable":true},"median":{"type":"integer","format":"int32","nullable":true},"p70":{"type":"integer","format":"int32","nullable":true},"p90":{"type":"integer","format":"int32","nullable":true},"p95":{"type":"integer","format":"int32","nullable":true}}}},"securitySchemes":{"api_key":{"type":"apiKey","in":"header","name":"api-key"}}}}
         
     | 
| 
      
 1 
     | 
    
         
            +
            {"openapi":"3.0.3","info":{"title":"api","description":"","license":{"name":""},"version":"0.1.1"},"servers":[{"url":"https://api.stormgateworld.com/"}],"paths":{"/v0/leaderboard-entries/{leaderboard_entry_id}/history":{"get":{"tags":["Leaderboard Entries"],"operationId":"getLeaderboardEntryHistory","parameters":[{"name":"leaderboard_entry_id","in":"path","description":"Player Leaderboard Entry ID","required":true,"schema":{"type":"string"}},{"name":"resolution","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Resolution"}],"nullable":true}},{"name":"aggregation","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Aggregation"}],"nullable":true}}],"responses":{"200":{"description":"Player leaderboard entry found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardEntryHistory"}}}},"404":{"description":"Player leaderboard entry was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/leaderboards/ranked_1v1":{"get":{"tags":["Leaderboards"],"operationId":"getLeaderboard","parameters":[{"name":"race","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Race"}],"nullable":true}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"order","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/LeaderboardOrder"}],"nullable":true}},{"name":"query","in":"query","required":false,"schema":{"type":"string","nullable":true}}],"responses":{"200":{"description":"Leaderboard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/leaderboards/ranked_1v1/dump":{"get":{"tags":["Leaderboards"],"operationId":"getLeaderboardDump","parameters":[{"name":"format","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/DumpFormat"}],"nullable":true}}],"responses":{"200":{"description":"Leaderboard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaderboardDumpResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/matches":{"get":{"tags":["Matches"],"operationId":"getMatches","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"state","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/MatchState"}],"nullable":true}}],"responses":{"200":{"description":"Matches found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchesResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}":{"get":{"tags":["Players"],"operationId":"getPlayer","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerResponse"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/matches":{"get":{"tags":["Players"],"operationId":"getPlayerMatches","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}},{"name":"race","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Race"}],"nullable":true}},{"name":"opponent_player_id","in":"query","required":false,"schema":{"type":"string","nullable":true}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerMatchesResponse"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/matches/last":{"get":{"tags":["Players"],"operationId":"getPlayerLastMatch","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchResponse"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/statistics/activity":{"get":{"tags":["Players"],"operationId":"getPlayerStatisticsActivity","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerActivityStats"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/statistics/matchups":{"get":{"tags":["Players"],"operationId":"getPlayerStatisticsMatchups","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerMatchupsStats"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/players/{player_id}/statistics/opponents":{"get":{"tags":["Players"],"operationId":"getPlayerStatisticsOpponents","parameters":[{"name":"player_id","in":"path","description":"Player ID","required":true,"schema":{"type":"string"}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","format":"int64","nullable":true,"minimum":0}}],"responses":{"200":{"description":"Player found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerOpponentsStats"}}}},"404":{"description":"Player was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/statistics/activity":{"get":{"tags":["Statistics"],"operationId":"getStatisticsActivity","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date","nullable":true}},{"name":"until","in":"query","required":false,"schema":{"type":"string","format":"date","nullable":true}}],"responses":{"200":{"description":"Stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityStatistics"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/statistics/countries":{"get":{"tags":["Statistics"],"operationId":"getStatisticsCountries","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date","nullable":true}},{"name":"until","in":"query","required":false,"schema":{"type":"string","format":"date","nullable":true}}],"responses":{"200":{"description":"Stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountriesStatistics"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/statistics/ranked_1v1":{"get":{"tags":["Statistics"],"operationId":"getStatistics","parameters":[{"name":"league","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/League"}],"nullable":true}},{"name":"count","in":"query","required":false,"schema":{"type":"integer","nullable":true,"minimum":0}}],"responses":{"200":{"description":"Stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsByTime"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v0/statistics/servers":{"get":{"tags":["Statistics"],"operationId":"getStatisticsServers","parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","format":"date","nullable":true}},{"name":"until","in":"query","required":false,"schema":{"type":"string","format":"date","nullable":true}}],"responses":{"200":{"description":"Stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServersStatistics"}}}},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"ActivityStatistics":{"type":"object","required":["cached_at","since","until","activity"],"properties":{"cached_at":{"type":"string","format":"date-time"},"since":{"type":"string","format":"date"},"until":{"type":"string","format":"date"},"activity":{"$ref":"#/components/schemas/ActivityStatisticsActivity"}}},"ActivityStatisticsActivity":{"type":"object","required":["aggregated","history"],"properties":{"aggregated":{"$ref":"#/components/schemas/ActivityStatisticsEntry"},"history":{"type":"array","items":{"$ref":"#/components/schemas/ActivityStatisticsEntry"}}}},"ActivityStatisticsEntry":{"type":"object","required":["matches","players","match_length_average"],"properties":{"date":{"type":"string","format":"date","nullable":true},"matches":{"type":"integer","format":"int64"},"players":{"type":"integer","format":"int64"},"match_length_average":{"type":"number","format":"double"}}},"Aggregation":{"type":"string","enum":["last","max_mmr","max_points"]},"CountriesStatistics":{"type":"object","required":["cached_at","since","until","countries"],"properties":{"cached_at":{"type":"string","format":"date-time"},"since":{"type":"string","format":"date"},"until":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/components/schemas/CountriesStatisticsEntry"}}}},"CountriesStatisticsEntry":{"type":"object","required":["players"],"properties":{"name":{"type":"string","nullable":true},"code":{"type":"string","nullable":true},"players":{"type":"integer","format":"int64"}}},"DumpFormat":{"type":"string","enum":["json","gzip"]},"ErrorResponse":{"type":"object","required":["code","error"],"properties":{"code":{"type":"integer","format":"int32","minimum":0},"error":{"type":"string"},"full_error":{"type":"array","items":{"type":"string"}},"backtrace":{"type":"array","items":{"type":"string"}},"full_backtrace":{"type":"array","items":{"type":"string"}}}},"Leaderboard":{"type":"string","enum":["ranked_1v1","unranked_1v1","custom"]},"LeaderboardDumpResponse":{"type":"object","required":["count","cached_at","entries"],"properties":{"count":{"type":"integer","minimum":0},"cached_at":{"type":"string","format":"date-time"},"entries":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntryResponse"}}}},"LeaderboardEntryHistory":{"type":"object","required":["cached_at","resolution","aggregation","history"],"properties":{"cached_at":{"type":"string","format":"date-time"},"resolution":{"$ref":"#/components/schemas/Resolution"},"aggregation":{"$ref":"#/components/schemas/Aggregation"},"history":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntryHistoryRow"}}}},"LeaderboardEntryHistoryRow":{"type":"object","required":["time"],"properties":{"time":{"type":"string","format":"date-time"},"mmr":{"type":"number","format":"float","nullable":true},"points":{"type":"number","format":"float","nullable":true}}},"LeaderboardEntryResponse":{"type":"object","required":["leaderboard_entry_id","leaderboard","anonymous","race","mmr","wins","losses","matches","win_rate"],"properties":{"leaderboard_entry_id":{"type":"string"},"leaderboard":{"$ref":"#/components/schemas/Leaderboard"},"player_id":{"type":"string","nullable":true},"anonymous":{"type":"boolean"},"nickname":{"type":"string","nullable":true},"nickname_discriminator":{"type":"string","nullable":true},"avatar_url":{"type":"string","nullable":true},"rank":{"type":"integer","format":"int32","nullable":true},"race":{"$ref":"#/components/schemas/Race"},"league":{"allOf":[{"$ref":"#/components/schemas/League"}],"nullable":true},"tier":{"type":"integer","format":"int32","nullable":true},"mmr":{"type":"number","format":"float"},"max_confirmed_mmr":{"type":"number","format":"float","nullable":true},"points":{"type":"number","format":"float","nullable":true},"wins":{"type":"integer","format":"int32"},"losses":{"type":"integer","format":"int32"},"ties":{"type":"integer","format":"int32","nullable":true},"matches":{"type":"integer","format":"int32"},"win_rate":{"type":"number","format":"float"}}},"LeaderboardOrder":{"type":"string","enum":["points","mmr"]},"LeaderboardResponse":{"type":"object","required":["page","count","total","entries"],"properties":{"page":{"type":"integer","format":"int64","minimum":0},"count":{"type":"integer","minimum":0},"total":{"type":"integer","format":"int64","minimum":0},"entries":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntryResponse"}}}},"League":{"type":"string","enum":["aspirant","bronze","silver","gold","platinum","diamond","master"]},"MatchParticipantPlayerLeaderboardEntryResponse":{"type":"object","required":["leaderboard_entry_id","wins","losses","win_rate"],"properties":{"leaderboard_entry_id":{"type":"string"},"league":{"allOf":[{"$ref":"#/components/schemas/League"}],"nullable":true},"tier":{"type":"integer","format":"int32","nullable":true},"rank":{"type":"integer","format":"int32","nullable":true},"wins":{"type":"integer","format":"int32"},"losses":{"type":"integer","format":"int32"},"ties":{"type":"integer","format":"int32","nullable":true},"win_rate":{"type":"number","format":"float"}}},"MatchParticipantPlayerResponse":{"type":"object","required":["player_id"],"properties":{"player_id":{"type":"string"},"nickname":{"type":"string","nullable":true},"nickname_discriminator":{"type":"string","nullable":true}}},"MatchParticipantResponse":{"type":"object","required":["race","team","party","mmr"],"properties":{"player":{"allOf":[{"$ref":"#/components/schemas/MatchParticipantPlayerResponse"}],"nullable":true},"player_leaderboard_entry":{"allOf":[{"$ref":"#/components/schemas/MatchParticipantPlayerLeaderboardEntryResponse"}],"nullable":true},"race":{"$ref":"#/components/schemas/Race"},"team":{"type":"integer","format":"int32"},"party":{"type":"integer","format":"int32"},"mmr":{"type":"number","format":"float"},"mmr_updated":{"type":"number","format":"float","nullable":true},"mmr_diff":{"type":"number","format":"float","nullable":true},"result":{"allOf":[{"$ref":"#/components/schemas/MatchResult"}],"nullable":true},"ping":{"type":"integer","format":"int32","nullable":true},"scores":{"nullable":true}}},"MatchResponse":{"type":"object","required":["cached_at","match_id","leaderboard","server","players","created_at"],"properties":{"cached_at":{"type":"string","format":"date-time"},"match_id":{"type":"string"},"state":{"allOf":[{"$ref":"#/components/schemas/MatchState"}],"nullable":true},"leaderboard":{"$ref":"#/components/schemas/Leaderboard"},"server":{"type":"string"},"players":{"type":"array","items":{"$ref":"#/components/schemas/MatchParticipantResponse"}},"created_at":{"type":"string","format":"date-time"},"ended_at":{"type":"string","format":"date-time","nullable":true},"duration":{"type":"integer","format":"int64","nullable":true}}},"MatchResult":{"type":"string","enum":["win","loss","undecided"]},"MatchState":{"type":"string","enum":["ongoing","finished"]},"MatchesResponse":{"type":"object","required":["count","page","total","matches"],"properties":{"count":{"type":"integer","minimum":0},"page":{"type":"integer","format":"int64","minimum":0},"total":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"array","items":{"$ref":"#/components/schemas/MatchResponse"}}}},"PlayerActivityStats":{"type":"object","required":["cached_at","history","races"],"properties":{"cached_at":{"type":"string","format":"date-time"},"aggregated":{"allOf":[{"$ref":"#/components/schemas/PlayerStatsEntryAggregated"}],"nullable":true},"history":{"type":"array","items":{"$ref":"#/components/schemas/PlayerStatsEntry"}},"races":{"type":"array","items":{"$ref":"#/components/schemas/PlayerActivityStatsRace"}}}},"PlayerActivityStatsRace":{"type":"object","required":["history"],"properties":{"aggregated":{"allOf":[{"$ref":"#/components/schemas/PlayerStatsEntry"}],"nullable":true},"history":{"type":"array","items":{"$ref":"#/components/schemas/PlayerStatsEntry"}}}},"PlayerMatchesResponse":{"type":"object","required":["count","page","total","matches"],"properties":{"count":{"type":"integer","minimum":0},"page":{"type":"integer","format":"int64","minimum":0},"total":{"type":"integer","format":"int64","minimum":0},"matches":{"type":"array","items":{"$ref":"#/components/schemas/MatchResponse"}}}},"PlayerMatchupsStats":{"type":"object","required":["cached_at","matchups"],"properties":{"cached_at":{"type":"string","format":"date-time"},"matchups":{"type":"array","items":{"$ref":"#/components/schemas/PlayerMatchupsStatsMatchup"}}}},"PlayerMatchupsStatsEntry":{"type":"object","required":["matches_count","wins_count","losses_count","wins","losses","ties","match_length"],"properties":{"match_length_range":{"type":"string","nullable":true},"matches_count":{"type":"integer","format":"int64"},"wins_count":{"type":"integer","format":"int64"},"losses_count":{"type":"integer","format":"int64"},"wins":{"type":"integer","format":"int64"},"losses":{"type":"integer","format":"int64"},"ties":{"type":"integer","format":"int64"},"win_rate":{"type":"number","format":"double","nullable":true},"match_length":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"}}},"PlayerMatchupsStatsMatchup":{"type":"object","required":["race","opponent_race","aggregated","match_length"],"properties":{"race":{"$ref":"#/components/schemas/Race"},"opponent_race":{"$ref":"#/components/schemas/Race"},"aggregated":{"$ref":"#/components/schemas/PlayerMatchupsStatsEntry"},"match_length":{"type":"array","items":{"$ref":"#/components/schemas/PlayerMatchupsStatsEntry"}}}},"PlayerOpponentsStats":{"type":"object","required":["cached_at","count","opponents"],"properties":{"cached_at":{"type":"string","format":"date-time"},"count":{"type":"integer","minimum":0},"opponents":{"type":"array","items":{"$ref":"#/components/schemas/PlayerOpponentsStatsOpponent"}}}},"PlayerOpponentsStatsOpponent":{"type":"object","required":["player","matches_count","wins_count","losses_count","wins","losses","ties","match_length"],"properties":{"player":{"$ref":"#/components/schemas/MatchParticipantPlayerResponse"},"matches_count":{"type":"integer","format":"int64"},"wins_count":{"type":"integer","format":"int64"},"losses_count":{"type":"integer","format":"int64"},"wins":{"type":"integer","format":"int64"},"losses":{"type":"integer","format":"int64"},"ties":{"type":"integer","format":"int64"},"win_rate":{"type":"number","format":"double","nullable":true},"match_length":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"}}},"PlayerResponse":{"type":"object","required":["id","anonymous","leaderboard_entries"],"properties":{"id":{"type":"string"},"anonymous":{"type":"boolean"},"nickname":{"type":"string","nullable":true},"nickname_discriminator":{"type":"string","nullable":true},"avatar_url":{"type":"string","nullable":true},"leaderboard_entries":{"type":"array","items":{"$ref":"#/components/schemas/LeaderboardEntryResponse"}},"last_match_ended_at":{"type":"string","format":"date-time","nullable":true},"last_match_started_at":{"type":"string","format":"date-time","nullable":true}}},"PlayerStatsEntry":{"type":"object","required":["matches","wins","losses","ties","mmr","points","match_length"],"properties":{"date":{"type":"string","format":"date","nullable":true},"race":{"allOf":[{"$ref":"#/components/schemas/Race"}],"nullable":true},"matches":{"type":"integer","format":"int64"},"wins":{"type":"integer","format":"int64"},"losses":{"type":"integer","format":"int64"},"ties":{"type":"integer","format":"int64"},"win_rate":{"type":"number","format":"double","nullable":true},"mmr":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"points":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"match_length":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"}}},"PlayerStatsEntryAggregated":{"type":"object","required":["matches","matches_per_day","wins","losses","ties","mmr","points","match_length"],"properties":{"matches":{"type":"integer","format":"int64"},"matches_per_day":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"wins":{"type":"integer","format":"int64"},"losses":{"type":"integer","format":"int64"},"ties":{"type":"integer","format":"int64"},"win_rate":{"type":"number","format":"double","nullable":true},"mmr":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"points":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"},"match_length":{"$ref":"#/components/schemas/PlayerStatsEntryNumBreakdown"}}},"PlayerStatsEntryNumBreakdown":{"type":"object","properties":{"max":{"type":"number","format":"double","nullable":true},"min":{"type":"number","format":"double","nullable":true},"median":{"type":"number","format":"double","nullable":true},"average":{"type":"number","format":"double","nullable":true}}},"ProfilePrivacy":{"type":"string","enum":["public","private"]},"Race":{"type":"string","enum":["infernals","vanguard"]},"Resolution":{"type":"string","enum":["minute","hour","day","week"]},"ServersStatistics":{"type":"object","required":["cached_at","since","until","servers"],"properties":{"cached_at":{"type":"string","format":"date-time"},"since":{"type":"string","format":"date"},"until":{"type":"string","format":"date"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/ServersStatisticsEntry"}}}},"ServersStatisticsEntry":{"type":"object","required":["server","matches","players"],"properties":{"server":{"type":"string"},"matches":{"type":"integer","format":"int64"},"players":{"type":"integer","format":"int64"}}},"StatsByTime":{"type":"object","required":["cached_at","updated_at","period","count","races","match_length"],"properties":{"cached_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"period":{"type":"string"},"count":{"type":"integer","minimum":0},"league":{"allOf":[{"$ref":"#/components/schemas/League"}],"nullable":true},"races":{"type":"array","items":{"$ref":"#/components/schemas/StatsByTimeEntry"}},"match_length":{"$ref":"#/components/schemas/StatsByTimeMatchLength"}}},"StatsByTimeEntry":{"type":"object","required":["race","aggregated","history"],"properties":{"race":{"$ref":"#/components/schemas/Race"},"aggregated":{"$ref":"#/components/schemas/StatsByTimeHistoryPoint"},"history":{"type":"array","items":{"$ref":"#/components/schemas/StatsByTimeHistoryPoint"}}}},"StatsByTimeHistoryPoint":{"type":"object","required":["win_rate_by_match_length"],"properties":{"date":{"type":"string","format":"date","nullable":true},"win_rate":{"type":"number","format":"double","nullable":true},"win_rate_by_match_length":{"type":"object","additionalProperties":{"type":"number","format":"double","nullable":true}},"pick_rate":{"type":"number","format":"double","nullable":true},"players_count":{"type":"integer","format":"int64","nullable":true},"matches_count":{"type":"integer","format":"int64","nullable":true},"wins_count":{"type":"integer","format":"int64","nullable":true},"losses_count":{"type":"integer","format":"int64","nullable":true},"matches_count_with_mirror":{"type":"integer","format":"int64","nullable":true}}},"StatsByTimeMatchLength":{"type":"object","required":["aggregated","history"],"properties":{"aggregated":{"$ref":"#/components/schemas/StatsByTimeMatchLengthEntry"},"history":{"type":"array","items":{"$ref":"#/components/schemas/StatsByTimeMatchLengthEntry"}}}},"StatsByTimeMatchLengthEntry":{"type":"object","properties":{"date":{"type":"string","format":"date","nullable":true},"average":{"type":"integer","format":"int32","nullable":true},"median":{"type":"integer","format":"int32","nullable":true},"p70":{"type":"integer","format":"int32","nullable":true},"p90":{"type":"integer","format":"int32","nullable":true},"p95":{"type":"integer","format":"int32","nullable":true}}}},"securitySchemes":{"api_key":{"type":"apiKey","in":"header","name":"api-key"}}}}
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: stormgate_world
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - OpenAPI-Generator
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2024- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2024-03-10 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: typhoeus
         
     | 
| 
         @@ -58,18 +58,28 @@ extensions: [] 
     | 
|
| 
       58 
58 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       59 
59 
     | 
    
         
             
            files:
         
     | 
| 
       60 
60 
     | 
    
         
             
            - Gemfile
         
     | 
| 
      
 61 
     | 
    
         
            +
            - Gemfile.lock
         
     | 
| 
       61 
62 
     | 
    
         
             
            - README.md
         
     | 
| 
       62 
63 
     | 
    
         
             
            - Rakefile
         
     | 
| 
      
 64 
     | 
    
         
            +
            - docs/ActivityStatistics.md
         
     | 
| 
      
 65 
     | 
    
         
            +
            - docs/ActivityStatisticsActivity.md
         
     | 
| 
      
 66 
     | 
    
         
            +
            - docs/ActivityStatisticsEntry.md
         
     | 
| 
      
 67 
     | 
    
         
            +
            - docs/Aggregation.md
         
     | 
| 
      
 68 
     | 
    
         
            +
            - docs/CountriesStatistics.md
         
     | 
| 
      
 69 
     | 
    
         
            +
            - docs/CountriesStatisticsEntry.md
         
     | 
| 
      
 70 
     | 
    
         
            +
            - docs/DumpFormat.md
         
     | 
| 
       63 
71 
     | 
    
         
             
            - docs/ErrorResponse.md
         
     | 
| 
       64 
72 
     | 
    
         
             
            - docs/Leaderboard.md
         
     | 
| 
       65 
73 
     | 
    
         
             
            - docs/LeaderboardDumpResponse.md
         
     | 
| 
       66 
74 
     | 
    
         
             
            - docs/LeaderboardEntriesApi.md
         
     | 
| 
       67 
75 
     | 
    
         
             
            - docs/LeaderboardEntryHistory.md
         
     | 
| 
       68 
76 
     | 
    
         
             
            - docs/LeaderboardEntryHistoryEntry.md
         
     | 
| 
      
 77 
     | 
    
         
            +
            - docs/LeaderboardEntryHistoryRow.md
         
     | 
| 
       69 
78 
     | 
    
         
             
            - docs/LeaderboardEntryResponse.md
         
     | 
| 
       70 
79 
     | 
    
         
             
            - docs/LeaderboardOrder.md
         
     | 
| 
       71 
80 
     | 
    
         
             
            - docs/LeaderboardResponse.md
         
     | 
| 
       72 
81 
     | 
    
         
             
            - docs/LeaderboardsApi.md
         
     | 
| 
      
 82 
     | 
    
         
            +
            - docs/League.md
         
     | 
| 
       73 
83 
     | 
    
         
             
            - docs/MatchParticipantPlayerLeaderboardEntryResponse.md
         
     | 
| 
       74 
84 
     | 
    
         
             
            - docs/MatchParticipantPlayerResponse.md
         
     | 
| 
       75 
85 
     | 
    
         
             
            - docs/MatchParticipantResponse.md
         
     | 
| 
         @@ -94,6 +104,9 @@ files: 
     | 
|
| 
       94 
104 
     | 
    
         
             
            - docs/PlayersApi.md
         
     | 
| 
       95 
105 
     | 
    
         
             
            - docs/ProfilePrivacy.md
         
     | 
| 
       96 
106 
     | 
    
         
             
            - docs/Race.md
         
     | 
| 
      
 107 
     | 
    
         
            +
            - docs/Resolution.md
         
     | 
| 
      
 108 
     | 
    
         
            +
            - docs/ServersStatistics.md
         
     | 
| 
      
 109 
     | 
    
         
            +
            - docs/ServersStatisticsEntry.md
         
     | 
| 
       97 
110 
     | 
    
         
             
            - docs/StatisticsApi.md
         
     | 
| 
       98 
111 
     | 
    
         
             
            - docs/StatsByTime.md
         
     | 
| 
       99 
112 
     | 
    
         
             
            - docs/StatsByTimeEntry.md
         
     | 
| 
         @@ -110,14 +123,23 @@ files: 
     | 
|
| 
       110 
123 
     | 
    
         
             
            - lib/stormgate_world/api_client.rb
         
     | 
| 
       111 
124 
     | 
    
         
             
            - lib/stormgate_world/api_error.rb
         
     | 
| 
       112 
125 
     | 
    
         
             
            - lib/stormgate_world/configuration.rb
         
     | 
| 
      
 126 
     | 
    
         
            +
            - lib/stormgate_world/models/activity_statistics.rb
         
     | 
| 
      
 127 
     | 
    
         
            +
            - lib/stormgate_world/models/activity_statistics_activity.rb
         
     | 
| 
      
 128 
     | 
    
         
            +
            - lib/stormgate_world/models/activity_statistics_entry.rb
         
     | 
| 
      
 129 
     | 
    
         
            +
            - lib/stormgate_world/models/aggregation.rb
         
     | 
| 
      
 130 
     | 
    
         
            +
            - lib/stormgate_world/models/countries_statistics.rb
         
     | 
| 
      
 131 
     | 
    
         
            +
            - lib/stormgate_world/models/countries_statistics_entry.rb
         
     | 
| 
      
 132 
     | 
    
         
            +
            - lib/stormgate_world/models/dump_format.rb
         
     | 
| 
       113 
133 
     | 
    
         
             
            - lib/stormgate_world/models/error_response.rb
         
     | 
| 
       114 
134 
     | 
    
         
             
            - lib/stormgate_world/models/leaderboard.rb
         
     | 
| 
       115 
135 
     | 
    
         
             
            - lib/stormgate_world/models/leaderboard_dump_response.rb
         
     | 
| 
       116 
136 
     | 
    
         
             
            - lib/stormgate_world/models/leaderboard_entry_history.rb
         
     | 
| 
       117 
137 
     | 
    
         
             
            - lib/stormgate_world/models/leaderboard_entry_history_entry.rb
         
     | 
| 
      
 138 
     | 
    
         
            +
            - lib/stormgate_world/models/leaderboard_entry_history_row.rb
         
     | 
| 
       118 
139 
     | 
    
         
             
            - lib/stormgate_world/models/leaderboard_entry_response.rb
         
     | 
| 
       119 
140 
     | 
    
         
             
            - lib/stormgate_world/models/leaderboard_order.rb
         
     | 
| 
       120 
141 
     | 
    
         
             
            - lib/stormgate_world/models/leaderboard_response.rb
         
     | 
| 
      
 142 
     | 
    
         
            +
            - lib/stormgate_world/models/league.rb
         
     | 
| 
       121 
143 
     | 
    
         
             
            - lib/stormgate_world/models/match_participant_player_leaderboard_entry_response.rb
         
     | 
| 
       122 
144 
     | 
    
         
             
            - lib/stormgate_world/models/match_participant_player_response.rb
         
     | 
| 
       123 
145 
     | 
    
         
             
            - lib/stormgate_world/models/match_participant_response.rb
         
     | 
| 
         @@ -140,6 +162,9 @@ files: 
     | 
|
| 
       140 
162 
     | 
    
         
             
            - lib/stormgate_world/models/player_stats_entry_num_breakdown.rb
         
     | 
| 
       141 
163 
     | 
    
         
             
            - lib/stormgate_world/models/profile_privacy.rb
         
     | 
| 
       142 
164 
     | 
    
         
             
            - lib/stormgate_world/models/race.rb
         
     | 
| 
      
 165 
     | 
    
         
            +
            - lib/stormgate_world/models/resolution.rb
         
     | 
| 
      
 166 
     | 
    
         
            +
            - lib/stormgate_world/models/servers_statistics.rb
         
     | 
| 
      
 167 
     | 
    
         
            +
            - lib/stormgate_world/models/servers_statistics_entry.rb
         
     | 
| 
       143 
168 
     | 
    
         
             
            - lib/stormgate_world/models/stats_by_time.rb
         
     | 
| 
       144 
169 
     | 
    
         
             
            - lib/stormgate_world/models/stats_by_time_entry.rb
         
     | 
| 
       145 
170 
     | 
    
         
             
            - lib/stormgate_world/models/stats_by_time_history_point.rb
         
     | 
| 
         @@ -147,20 +172,30 @@ files: 
     | 
|
| 
       147 
172 
     | 
    
         
             
            - lib/stormgate_world/models/stats_by_time_match_length_entry.rb
         
     | 
| 
       148 
173 
     | 
    
         
             
            - lib/stormgate_world/version.rb
         
     | 
| 
       149 
174 
     | 
    
         
             
            - openapitools.json
         
     | 
| 
      
 175 
     | 
    
         
            +
            - pkg/stormgate_world-1.0.0.gem
         
     | 
| 
       150 
176 
     | 
    
         
             
            - pkg/stormgate_world_client-1.0.0.gem
         
     | 
| 
       151 
177 
     | 
    
         
             
            - spec/api/leaderboard_entries_api_spec.rb
         
     | 
| 
       152 
178 
     | 
    
         
             
            - spec/api/leaderboards_api_spec.rb
         
     | 
| 
       153 
179 
     | 
    
         
             
            - spec/api/matches_api_spec.rb
         
     | 
| 
       154 
180 
     | 
    
         
             
            - spec/api/players_api_spec.rb
         
     | 
| 
       155 
181 
     | 
    
         
             
            - spec/api/statistics_api_spec.rb
         
     | 
| 
      
 182 
     | 
    
         
            +
            - spec/models/activity_statistics_activity_spec.rb
         
     | 
| 
      
 183 
     | 
    
         
            +
            - spec/models/activity_statistics_entry_spec.rb
         
     | 
| 
      
 184 
     | 
    
         
            +
            - spec/models/activity_statistics_spec.rb
         
     | 
| 
      
 185 
     | 
    
         
            +
            - spec/models/aggregation_spec.rb
         
     | 
| 
      
 186 
     | 
    
         
            +
            - spec/models/countries_statistics_entry_spec.rb
         
     | 
| 
      
 187 
     | 
    
         
            +
            - spec/models/countries_statistics_spec.rb
         
     | 
| 
      
 188 
     | 
    
         
            +
            - spec/models/dump_format_spec.rb
         
     | 
| 
       156 
189 
     | 
    
         
             
            - spec/models/error_response_spec.rb
         
     | 
| 
       157 
190 
     | 
    
         
             
            - spec/models/leaderboard_dump_response_spec.rb
         
     | 
| 
       158 
191 
     | 
    
         
             
            - spec/models/leaderboard_entry_history_entry_spec.rb
         
     | 
| 
      
 192 
     | 
    
         
            +
            - spec/models/leaderboard_entry_history_row_spec.rb
         
     | 
| 
       159 
193 
     | 
    
         
             
            - spec/models/leaderboard_entry_history_spec.rb
         
     | 
| 
       160 
194 
     | 
    
         
             
            - spec/models/leaderboard_entry_response_spec.rb
         
     | 
| 
       161 
195 
     | 
    
         
             
            - spec/models/leaderboard_order_spec.rb
         
     | 
| 
       162 
196 
     | 
    
         
             
            - spec/models/leaderboard_response_spec.rb
         
     | 
| 
       163 
197 
     | 
    
         
             
            - spec/models/leaderboard_spec.rb
         
     | 
| 
      
 198 
     | 
    
         
            +
            - spec/models/league_spec.rb
         
     | 
| 
       164 
199 
     | 
    
         
             
            - spec/models/match_participant_player_leaderboard_entry_response_spec.rb
         
     | 
| 
       165 
200 
     | 
    
         
             
            - spec/models/match_participant_player_response_spec.rb
         
     | 
| 
       166 
201 
     | 
    
         
             
            - spec/models/match_participant_response_spec.rb
         
     | 
| 
         @@ -183,6 +218,9 @@ files: 
     | 
|
| 
       183 
218 
     | 
    
         
             
            - spec/models/player_stats_entry_spec.rb
         
     | 
| 
       184 
219 
     | 
    
         
             
            - spec/models/profile_privacy_spec.rb
         
     | 
| 
       185 
220 
     | 
    
         
             
            - spec/models/race_spec.rb
         
     | 
| 
      
 221 
     | 
    
         
            +
            - spec/models/resolution_spec.rb
         
     | 
| 
      
 222 
     | 
    
         
            +
            - spec/models/servers_statistics_entry_spec.rb
         
     | 
| 
      
 223 
     | 
    
         
            +
            - spec/models/servers_statistics_spec.rb
         
     | 
| 
       186 
224 
     | 
    
         
             
            - spec/models/stats_by_time_entry_spec.rb
         
     | 
| 
       187 
225 
     | 
    
         
             
            - spec/models/stats_by_time_history_point_spec.rb
         
     | 
| 
       188 
226 
     | 
    
         
             
            - spec/models/stats_by_time_match_length_entry_spec.rb
         
     | 
| 
         @@ -224,17 +262,22 @@ test_files: 
     | 
|
| 
       224 
262 
     | 
    
         
             
            - spec/api/matches_api_spec.rb
         
     | 
| 
       225 
263 
     | 
    
         
             
            - spec/models/stats_by_time_spec.rb
         
     | 
| 
       226 
264 
     | 
    
         
             
            - spec/models/stats_by_time_match_length_entry_spec.rb
         
     | 
| 
      
 265 
     | 
    
         
            +
            - spec/models/countries_statistics_entry_spec.rb
         
     | 
| 
      
 266 
     | 
    
         
            +
            - spec/models/activity_statistics_spec.rb
         
     | 
| 
       227 
267 
     | 
    
         
             
            - spec/models/player_response_spec.rb
         
     | 
| 
       228 
268 
     | 
    
         
             
            - spec/models/leaderboard_entry_response_spec.rb
         
     | 
| 
       229 
269 
     | 
    
         
             
            - spec/models/profile_privacy_spec.rb
         
     | 
| 
       230 
270 
     | 
    
         
             
            - spec/models/leaderboard_dump_response_spec.rb
         
     | 
| 
      
 271 
     | 
    
         
            +
            - spec/models/countries_statistics_spec.rb
         
     | 
| 
       231 
272 
     | 
    
         
             
            - spec/models/player_opponents_stats_opponent_spec.rb
         
     | 
| 
      
 273 
     | 
    
         
            +
            - spec/models/resolution_spec.rb
         
     | 
| 
       232 
274 
     | 
    
         
             
            - spec/models/leaderboard_order_spec.rb
         
     | 
| 
       233 
275 
     | 
    
         
             
            - spec/models/leaderboard_response_spec.rb
         
     | 
| 
       234 
276 
     | 
    
         
             
            - spec/models/error_response_spec.rb
         
     | 
| 
       235 
277 
     | 
    
         
             
            - spec/models/player_stats_entry_spec.rb
         
     | 
| 
       236 
278 
     | 
    
         
             
            - spec/models/player_stats_entry_num_breakdown_spec.rb
         
     | 
| 
       237 
279 
     | 
    
         
             
            - spec/models/race_spec.rb
         
     | 
| 
      
 280 
     | 
    
         
            +
            - spec/models/dump_format_spec.rb
         
     | 
| 
       238 
281 
     | 
    
         
             
            - spec/models/match_participant_player_leaderboard_entry_response_spec.rb
         
     | 
| 
       239 
282 
     | 
    
         
             
            - spec/models/player_stats_entry_aggregated_spec.rb
         
     | 
| 
       240 
283 
     | 
    
         
             
            - spec/models/leaderboard_spec.rb
         
     | 
| 
         @@ -242,19 +285,26 @@ test_files: 
     | 
|
| 
       242 
285 
     | 
    
         
             
            - spec/models/player_opponents_stats_spec.rb
         
     | 
| 
       243 
286 
     | 
    
         
             
            - spec/models/matches_response_spec.rb
         
     | 
| 
       244 
287 
     | 
    
         
             
            - spec/models/player_activity_stats_spec.rb
         
     | 
| 
      
 288 
     | 
    
         
            +
            - spec/models/league_spec.rb
         
     | 
| 
       245 
289 
     | 
    
         
             
            - spec/models/match_participant_response_spec.rb
         
     | 
| 
       246 
290 
     | 
    
         
             
            - spec/models/leaderboard_entry_history_entry_spec.rb
         
     | 
| 
      
 291 
     | 
    
         
            +
            - spec/models/servers_statistics_entry_spec.rb
         
     | 
| 
       247 
292 
     | 
    
         
             
            - spec/models/player_matchups_stats_matchup_spec.rb
         
     | 
| 
       248 
293 
     | 
    
         
             
            - spec/models/player_preferences_spec.rb
         
     | 
| 
       249 
294 
     | 
    
         
             
            - spec/models/player_matches_response_spec.rb
         
     | 
| 
       250 
295 
     | 
    
         
             
            - spec/models/match_result_spec.rb
         
     | 
| 
       251 
296 
     | 
    
         
             
            - spec/models/player_matchups_stats_spec.rb
         
     | 
| 
      
 297 
     | 
    
         
            +
            - spec/models/servers_statistics_spec.rb
         
     | 
| 
       252 
298 
     | 
    
         
             
            - spec/models/match_participant_player_response_spec.rb
         
     | 
| 
       253 
299 
     | 
    
         
             
            - spec/models/player_matchups_stats_entry_spec.rb
         
     | 
| 
      
 300 
     | 
    
         
            +
            - spec/models/activity_statistics_entry_spec.rb
         
     | 
| 
       254 
301 
     | 
    
         
             
            - spec/models/leaderboard_entry_history_spec.rb
         
     | 
| 
       255 
302 
     | 
    
         
             
            - spec/models/stats_by_time_entry_spec.rb
         
     | 
| 
       256 
303 
     | 
    
         
             
            - spec/models/match_response_spec.rb
         
     | 
| 
       257 
304 
     | 
    
         
             
            - spec/models/match_state_spec.rb
         
     | 
| 
       258 
305 
     | 
    
         
             
            - spec/models/player_activity_stats_race_spec.rb
         
     | 
| 
      
 306 
     | 
    
         
            +
            - spec/models/aggregation_spec.rb
         
     | 
| 
      
 307 
     | 
    
         
            +
            - spec/models/activity_statistics_activity_spec.rb
         
     | 
| 
       259 
308 
     | 
    
         
             
            - spec/models/stats_by_time_history_point_spec.rb
         
     | 
| 
      
 309 
     | 
    
         
            +
            - spec/models/leaderboard_entry_history_row_spec.rb
         
     | 
| 
       260 
310 
     | 
    
         
             
            - spec/spec_helper.rb
         
     |