opendota

package module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2024 License: MIT Imports: 4 Imported by: 0

README

go-opendota Build Status Go Report Card GoDoc

Go-OpenDota is a simple Go package for accessing the OpenDota API.

Successful queries return native Go structs.

Services
  • Benchmarks
  • Distributions
  • Explorer
  • Health
  • Hero Stats
  • Heroes
  • Leagues
  • Live
  • Matches
  • Metadata
  • Players
  • Pro Matches
  • Pro Players
  • Public Matches
  • Rankings
  • Records
  • Replays
  • Schema
  • Search
  • Status
  • Teams

Install

go get github.com/dezeg/go-opendota

Examples

Match
// OpenDota client
client := opendota.NewClient(httpClient)

// Get Match Data
match, res, err := client.MatchService.Match(3559037317)
fmt.Println(match.DireTeam.Name, "VS", match.RadiantTeam.Name)
Player
// OpenDota client
client := opendota.NewClient(httpClient)

// Get Player Data
player, res, err := client.PlayerService.Player(111620041)
fmt.Println(player.Profile.Name, player.SoloCompetitiveRank)

// Player Param
params := &opendota.PlayerParam{
	Win: 1,
}
// Get Won Matches For Player
wins, res, err := client.PlayerService.Matches(111620041, params)
for _, game := range wins {
	fmt.Println(game.MatchID, game.HeroID)
}

License

MIT License

Gopher

Thanks to Maria Ninfa for the Gopher!

Documentation

Overview

Package opendota provides a Client for accessing the OpenDota Api.

Here are some examples of requests:

// OpenDota client
client := opendota.NewClient(httpClient)

// Get Match Data
match, res, err := client.MatchService.Match(3559037317)
fmt.Println(match.DireTeam.Name, "VS", match.RadiantTeam.Name)

// Get Player Data
player, res, err := client.PlayerService.Player(111620041)
fmt.Println(player.Profile.Name, player.SoloCompetitiveRank)

// Player Param
params := &opendota.PlayerParam{
	Win: 0,
}

// Get Won Matches For Player
wins, res, err := client.PlayerService.Matches(111620041, params)
for _, game := range wins {
	fmt.Println(game.MatchID, game.HeroID)
}

All required parameters are passed as arguments to functions. Additional arguments can be passed via the param objects.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIError

type APIError struct {
	Status  string `json:"status"`
	Message string `json:"error"`
}

APIError ...

func (APIError) Empty

func (e APIError) Empty() bool

Empty ...

func (APIError) Error

func (e APIError) Error() string

type Benchmark

type Benchmark struct {
	HeroID int             `json:"hero_id"`
	Result BenchmarkResult `json:"result"`
}

Benchmark holds a collection of benchmarks for a hero.

type BenchmarkPercentile

type BenchmarkPercentile struct {
	Percentile float64 `json:"percentile"`
	Value      float64 `json:"value"`
}

type BenchmarkResult

type BenchmarkResult struct {
	GoldPerMin        []BenchmarkPercentile `json:"gold_per_min"`
	XpPerMin          []BenchmarkPercentile `json:"xp_per_min"`
	KillsPerMin       []BenchmarkPercentile `json:"kills_per_min"`
	LastHitsPerMin    []BenchmarkPercentile `json:"last_hits_per_min"`
	HeroDamagePerMin  []BenchmarkPercentile `json:"hero_damage_per_min"`
	HeroHealingPerMin []BenchmarkPercentile `json:"hero_healing_per_min"`
	TowerDamage       []BenchmarkPercentile `json:"tower_damage"`
}

type BenchmarkService

type BenchmarkService struct {
	// contains filtered or unexported fields
}

BenchmarkService provides a method for benchmark statistics in OpenDota.

func (*BenchmarkService) Benchmarks

func (s *BenchmarkService) Benchmarks(heroID int) (Benchmark, *http.Response, error)

Benchmarks takes a Hero ID and returns the corresponding benchmarks for that hero. https://docs.opendota.com/#tag/benchmarks%2Fpaths%2F~1benchmarks%2Fget

type Benchmarks

type Benchmarks struct {
	GoldPerMin        RawPCT `json:"gold_per_min"`
	XpPerMin          RawPCT `json:"xp_per_min"`
	KillsPerMin       RawPCT `json:"kills_per_min"`
	LastHitsPerMin    RawPCT `json:"last_hits_per_min"`
	HeroDamagePerMin  RawPCT `json:"hero_damage_per_min"`
	HeroHealingPerMin RawPCT `json:"hero_healing_per_min"`
	TowerDamage       RawPCT `json:"tower_damage"`
}

type BuybackLog

type BuybackLog struct {
	Time       int    `json:"time"`
	Slot       int    `json:"slot"`
	Type       string `json:"type"`
	PlayerSlot int    `json:"player_slot"`
}

type Chat

type Chat struct {
	Time       int    `json:"time"`
	Type       string `json:"type"`
	Unit       string `json:"unit,omitempty"`
	Key        string `json:"key"`
	Slot       int    `json:"slot"`
	PlayerSlot int    `json:"player_slot"`
}

type Cheese

type Cheese struct {
	Cheese string `json:"cheese"`
	Goal   string `json:"goal"`
}

type Client

type Client struct {
	BenchmarkService    *BenchmarkService
	DistributionService *DistributionService
	ExplorerService     *ExplorerService
	HealthService       *HealthService
	HeroService         *HeroService
	HeroStatService     *HeroStatService
	LeagueService       *LeagueService
	LiveService         *LiveService
	MatchService        *MatchService
	MetadataService     *MetadataService
	PlayerService       *PlayerService
	ProMatchService     *ProMatchService
	ProPlayerService    *ProPlayerService
	PublicMatchService  *PublicMatchService
	RankingService      *RankingService
	RecordService       *RecordService
	ReplayService       *ReplayService
	ScenariosService    *ScenariosService
	SchemaService       *SchemaService
	SearchService       *SearchService
	StatusService       *StatusService
	TeamService         *TeamService
	// contains filtered or unexported fields
}

Client for making Open Dota API requests

func NewClient

func NewClient(httpClient *http.Client) *Client

NewClient returns a new Client.

type Cosmetics

type Cosmetics struct {
	ItemID          int    `json:"item_id"`
	Name            string `json:"name"`
	Prefab          string `json:"prefab"`
	CreationDate    string `json:"creation_date"`
	ImageInventory  string `json:"image_inventory"`
	ImagePath       string `json:"image_path"`
	ItemDescription string `json:"item_description"`
	ItemName        string `json:"item_name"`
	ItemRarity      string `json:"item_rarity"`
	ItemTypeName    string `json:"item_type_name"`
	UsedByHeroes    string `json:"used_by_heroes"`
}

type CountryMmr

type CountryMmr struct {
	Command    string          `json:"command"`
	RowCount   int             `json:"rowCount"`
	Oid        int             `json:"oid"`
	Rows       []CountryMmrRow `json:"rows"`
	Fields     []Field         `json:"fields"`
	RowAsArray bool            `json:"rowAsArray"`
}

type CountryMmrRow

type CountryMmrRow struct {
	Loccountrycode string `json:"loccountrycode"`
	Count          int    `json:"count"`
	Avg            string `json:"avg"`
	Common         string `json:"common"`
}

type Distribution

type Distribution struct {
	Mmr        Mmr        `json:"mmr"`
	CountryMmr CountryMmr `json:"country_mmr"`
}

Distribution holds distributions of Matchmaking Ranking (MMR) data for each region.

type DistributionService

type DistributionService struct {
	// contains filtered or unexported fields
}

DistributionService provides a method for accesing distribution data for Matchmaking Ranking (MMR).

func (*DistributionService) Distributions

func (s *DistributionService) Distributions() (Distribution, *http.Response, error)

Distributions returns a collection of Matchmaking Ranking (MMR) distributions for each region. https://docs.opendota.com/#tag/distributions%2Fpaths%2F~1distributions%2Fget

type ExplorerService

type ExplorerService struct {
	// contains filtered or unexported fields
}

ExplorerService provides a method for exploring OpenDota's PostgreSQL database.

func (*ExplorerService) Explore

func (s *ExplorerService) Explore(query string) (QueryResult, *http.Response, error)

Explore takes a SQL query as an argument and returns query results. https://docs.opendota.com/#tag/explorer%2Fpaths%2F~1explorer%2Fget

type Field

type Field struct {
	Name             string `json:"name"`
	TableID          int    `json:"tableID"`
	ColumnID         int    `json:"columnID"`
	DataTypeID       int    `json:"dataTypeID"`
	DataTypeSize     int    `json:"dataTypeSize"`
	DataTypeModifier int    `json:"dataTypeModifier"`
	Format           string `json:"format"`
}

type GameWins

type GameWins struct {
	Games int `json:"games"`
	Win   int `json:"win"`
}

GameWins represents how many games are won for a player.

type Health

type Health struct {
	PostgresUsage  Usage      `json:"postgresUsage"`
	RedisUsage     RedisUsage `json:"redisUsage"`
	ParseDelay     Usage      `json:"parseDelay"`
	CassandraUsage Usage      `json:"cassandraUsage"`
	SeqNumDelay    Usage      `json:"seqNumDelay"`
	SteamAPI       Usage      `json:"steamApi"`
}

Health represents health stats for the OpenDota API.

type HealthService

type HealthService struct {
	// contains filtered or unexported fields
}

HealthService provides a method for accessing health stats about the OpenDota API.

func (*HealthService) Health

func (s *HealthService) Health() (Health, *http.Response, error)

Health returns health stats for the OpenDota API. https://docs.opendota.com/#tag/health%2Fpaths%2F~1health%2Fget

type Hero

type Hero struct {
	ID            int      `json:"id"`
	Name          string   `json:"name"`
	LocalizedName string   `json:"localized_name"`
	PrimaryAttr   string   `json:"primary_attr"`
	AttackType    string   `json:"attack_type"`
	Roles         []string `json:"roles"`
	Legs          int      `json:"legs"`
}

Hero holds a collection of data specific to a Dota 2 hero.

type HeroDuration

type HeroDuration struct {
	DurationBin int `json:"duration_bin"`
	GamesPlayed int `json:"games_played"`
	Wins        int `json:"wins"`
}

HeroDuration represents a heroes performance over a range of match durations.

type HeroMatch

type HeroMatch struct {
	MatchID    int64  `json:"match_id"`
	StartTime  int    `json:"start_time"`
	Duration   int    `json:"duration"`
	RadiantWin bool   `json:"radiant_win"`
	LeagueID   int    `json:"leagueid"`
	LeagueName string `json:"league_name"`
	Radiant    bool   `json:"radiant"`
	AccountID  int    `json:"account_id"`
	Kills      int    `json:"kills"`
	Deaths     int    `json:"deaths"`
	Assists    int    `json:"assists"`
}

HeroMatch represents data about a hero in a Dota 2 match.

type HeroMatchup

type HeroMatchup struct {
	HeroID      int `json:"hero_id"`
	GamesPlayed int `json:"games_played"`
	Wins        int `json:"wins"`
}

HeroMatchup represents data about how a hero matches up against another hero.

type HeroPlayer

type HeroPlayer struct {
	AccountID   int `json:"account_id"`
	GamesPlayed int `json:"games_played"`
	Wins        int `json:"wins"`
}

HeroPlayer represents data about how a player performs on a hero.

type HeroRanking

type HeroRanking struct {
	HeroID   int       `json:"hero_id"`
	Rankings []Ranking `json:"rankings"`
}

HeroRanking represents the top player rankings for a hero.

type HeroService

type HeroService struct {
	// contains filtered or unexported fields
}

HeroService provides methods for accessing information about heroes.

func (*HeroService) Durations

func (s *HeroService) Durations(heroID int) ([]HeroDuration, *http.Response, error)

Durations takes a Hero ID and returns a collection of stats about a hero for varying match lengths. https://docs.opendota.com/#tag/heroes%2Fpaths%2F~1heroes~1%7Bhero_id%7D~1durations%2Fget

func (*HeroService) Heroes

func (s *HeroService) Heroes() ([]Hero, *http.Response, error)

Heroes returns a collection of all heroes. https://docs.opendota.com/#tag/heroes%2Fpaths%2F~1heroes%2Fget

func (*HeroService) Matches

func (s *HeroService) Matches(heroID int) ([]HeroMatch, *http.Response, error)

Matches takes a Hero ID and returns a collection of matches played by the hero. https://docs.opendota.com/#tag/heroes%2Fpaths%2F~1heroes~1%7Bhero_id%7D~1matches%2Fget

func (*HeroService) Matchups

func (s *HeroService) Matchups(heroID int) ([]HeroMatchup, *http.Response, error)

Matchups takes a Hero ID and returns a collection of how a hero compares against all other heroes. https://docs.opendota.com/#tag/heroes%2Fpaths%2F~1heroes~1%7Bhero_id%7D~1matchups%2Fget

func (*HeroService) Players

func (s *HeroService) Players(heroID int) ([]HeroPlayer, *http.Response, error)

Players takes a Hero ID and returns a collection about players for a hero. https://docs.opendota.com/#tag/heroes%2Fpaths%2F~1heroes~1%7Bhero_id%7D~1players%2Fget

type HeroStat

type HeroStat struct {
	ID              int      `json:"id"`
	Name            string   `json:"name"`
	LocalizedName   string   `json:"localized_name"`
	PrimaryAttr     string   `json:"primary_attr"`
	AttackType      string   `json:"attack_type"`
	Roles           []string `json:"roles"`
	Img             string   `json:"img"`
	Icon            string   `json:"icon"`
	BaseHealth      int      `json:"base_health"`
	BaseHealthRegen float64  `json:"base_health_regen"`
	BaseMana        int      `json:"base_mana"`
	BaseManaRegen   float64  `json:"base_mana_regen"`
	BaseArmor       float64  `json:"base_armor"`
	BaseMr          int      `json:"base_mr"`
	BaseAttackMin   int      `json:"base_attack_min"`
	BaseAttackMax   int      `json:"base_attack_max"`
	BaseStr         int      `json:"base_str"`
	BaseAgi         int      `json:"base_agi"`
	BaseInt         int      `json:"base_int"`
	StrGain         float64  `json:"str_gain"`
	AgiGain         float64  `json:"agi_gain"`
	IntGain         float64  `json:"int_gain"`
	AttackRange     int      `json:"attack_range"`
	ProjectileSpeed int      `json:"projectile_speed"`
	AttackRate      float64  `json:"attack_rate"`
	MoveSpeed       int      `json:"move_speed"`
	TurnRate        float64  `json:"turn_rate"`
	CmEnabled       bool     `json:"cm_enabled"`
	Legs            int      `json:"legs"`
	ProWin          int      `json:"pro_win,omitempty"`
	ProPick         int      `json:"pro_pick,omitempty"`
	HeroID          int      `json:"hero_id,omitempty"`
	ProBan          int      `json:"pro_ban,omitempty"`
	NullPick        int      `json:"null_pick"`
	NullWin         int      `json:"null_win"`
	OnePick         int      `json:"1_pick"`
	OneWin          int      `json:"1_win"`
	TwoPick         int      `json:"2_pick"`
	TwoWin          int      `json:"2_win"`
	ThreePick       int      `json:"3_pick"`
	ThreeWin        int      `json:"3_win"`
	FourPick        int      `json:"4_pick"`
	FourWin         int      `json:"4_win"`
	FivePick        int      `json:"5_pick"`
	FiveWin         int      `json:"5_win"`
	SixPick         int      `json:"6_pick"`
	SixWin          int      `json:"6_win"`
	SevenPick       int      `json:"7_pick"`
	SevenWin        int      `json:"7_win"`
	EightPick       int      `json:"8_pick"`
	EightWin        int      `json:"8_win"`
}

HeroStat represents a collection of statistics about a hero.

type HeroStatService

type HeroStatService struct {
	// contains filtered or unexported fields
}

HeroStatService provides a method for accessing hero stats.

func (*HeroStatService) HeroStats

func (s *HeroStatService) HeroStats() ([]HeroStat, *http.Response, error)

HeroStats returns a collection of stats about all heroes. https://docs.opendota.com/#tag/hero-stats%2Fpaths%2F~1heroStats%2Fget

type HostnameCounts

type HostnameCounts struct {
	Hostname string `json:"hostname"`
	Count    string `json:"count"`
}

type ItemTimings

type ItemTimings struct {
	HeroID int    `json:"hero_id"`
	Item   string `json:"item"`
	Time   int    `json:"time"`
	Games  string `json:"games"`
	Wins   string `json:"wins"`
}

ItemTimings represents item timing information.

type ItemTimingsParam

type ItemTimingsParam struct {
	HeroID int    `url:"hero_id,omitempty"`
	Item   string `url:"item,omitempty"`
}

ItemTimingsParam is used for customizing item timing queries.

type LaneRoles

type LaneRoles struct {
	HeroID   int    `json:"hero_id"`
	LaneRole int    `json:"lane_role"`
	Time     int    `json:"time"`
	Games    string `json:"games"`
	Wins     string `json:"wins"`
}

LaneRoles represents lane role information.

type LaneRolesParam

type LaneRolesParam struct {
	HeroID   int    `url:"hero_id,omitempty"`
	LaneRole string `url:"lane_role,omitempty"`
}

LaneRolesParam is used for customizing lane role queries.

type League

type League struct {
	LeagueID int    `json:"leagueid"`
	Ticket   string `json:"ticket"`
	Banner   string `json:"banner"`
	Tier     string `json:"tier"`
	Name     string `json:"name"`
}

League represents a league in Dota 2.

type LeagueService

type LeagueService struct {
	// contains filtered or unexported fields
}

LeagueService provides a method for accessing information about leagues.

func (*LeagueService) Leagues

func (s *LeagueService) Leagues() ([]League, *http.Response, error)

Leagues returns a collection of all leagues in Dota 2. https://docs.opendota.com/#tag/leagues%2Fpaths%2F~1leagues%2Fget

type LiveGame

type LiveGame struct {
	ActivateTime    int64         `json:"activate_time"`
	DeactivateTime  int64         `json:"deactivate_time"`
	ServerSteamID   int64         `json:"server_steam_id"`
	LobbyID         int64         `json:"lobby_id"`
	LeagueID        int           `json:"league_id"`
	LobbyType       int           `json:"lobby_type"`
	GameTime        int           `json:"game_time"`
	Delay           int           `json:"delay"`
	Spectators      int           `json:"spectators"`
	GameMode        int           `json:"game_mode"`
	AverageMmr      int           `json:"average_mmr"`
	SortScore       int           `json:"sort_score"`
	LastUpdateTime  int           `json:"last_update_time"`
	RadiantLead     int           `json:"radiant_lead"`
	RadiantScore    int           `json:"radiant_score"`
	DireScore       int           `json:"dire_score"`
	Players         []LivePlayers `json:"players"`
	BuildingState   int           `json:"building_state"`
	MatchID         int64         `json:"match_id"`
	RadiantTeamName string        `json:"team_name_radiant"`
	RadiantTeamID   int           `json:"team_id_radiant"`
	DireTeamName    string        `json:"team_name_dire"`
	DireTeamID      int           `json:"team_id_dire"`
}

LiveGame represents a live game.

type LivePlayers

type LivePlayers struct {
	AccountID   int    `json:"account_id"`
	HeroID      int    `json:"hero_id"`
	Name        string `json:"name,omitempty"`
	CountryCode string `json:"country_code,omitempty"`
	FantasyRole int    `json:"fantasy_role,omitempty"`
	TeamID      int    `json:"team_id,omitempty"`
	TeamName    string `json:"team_name,omitempty"`
	TeamTag     string `json:"team_tag,omitempty"`
	IsLocked    bool   `json:"is_locked,omitempty"`
	IsPro       bool   `json:"is_pro,omitempty"`
	LockedUntil int    `json:"locked_until,omitempty"`
}

type LiveService

type LiveService struct {
	// contains filtered or unexported fields
}

LiveService provides a method for accessing live games.

func (*LiveService) Live

func (s *LiveService) Live() ([]LiveGame, *http.Response, error)

Live returns a collection of the top live games. https://docs.opendota.com/#tag/live%2Fpaths%2F~1live%2Fget

type Log

type Log struct {
	Time int    `json:"time"`
	Key  string `json:"key"`
}

type Match

type Match struct {
	MatchID               int64          `json:"match_id"`
	BarracksStatusDire    int            `json:"barracks_status_dire"`
	BarracksStatusRadiant int            `json:"barracks_status_radiant"`
	Chat                  []Chat         `json:"chat"`
	Cluster               int            `json:"cluster"`
	Cosmetics             map[string]int `json:"cosmetics"`
	DireScore             int            `json:"dire_score"`
	Duration              int            `json:"duration"`
	Engine                int            `json:"engine"`
	FirstBloodTime        int            `json:"first_blood_time"`
	GameMode              int            `json:"game_mode"`
	HumanPlayers          int            `json:"human_players"`
	LeagueID              int            `json:"leagueid"`
	LobbyType             int            `json:"lobby_type"`
	MatchSeqNum           int64          `json:"match_seq_num"`
	NegativeVotes         int            `json:"negative_votes"`
	Objectives            []Objective    `json:"objectives"`
	PicksBans             []PickBans     `json:"picks_bans"`
	PositiveVotes         int            `json:"positive_votes"`
	RadiantGoldAdv        []int          `json:"radiant_gold_adv"`
	RadiantScore          int            `json:"radiant_score"`
	RadiantWin            bool           `json:"radiant_win"`
	RadiantXpAdv          []int          `json:"radiant_xp_adv"`
	Skill                 int            `json:"skill"`
	StartTime             int            `json:"start_time"`
	Teamfights            []Teamfights   `json:"teamfights"`
	TowerStatusDire       int            `json:"tower_status_dire"`
	TowerStatusRadiant    int            `json:"tower_status_radiant"`
	Version               int            `json:"version"`
	ReplaySalt            int            `json:"replay_salt"`
	SeriesID              int            `json:"series_id"`
	SeriesType            int            `json:"series_type"`
	League                MatchLeague    `json:"league"`
	RadiantTeam           MatchTeam      `json:"radiant_team"`
	DireTeam              MatchTeam      `json:"dire_team"`
	Players               []MatchPlayer  `json:"players"`
	Patch                 int            `json:"patch"`
	Region                int            `json:"region"`
	AllWordCounts         map[string]int `json:"all_word_counts"`
	MyWordCounts          map[string]int `json:"my_word_counts"`
	Throw                 int            `json:"throw"`
	Loss                  int            `json:"loss"`
	ReplayURL             string         `json:"replay_url"`
}

Match represents the data about a match.

type MatchLeague

type MatchLeague struct {
	LeagueID int    `json:"leagueid"`
	Ticket   string `json:"ticket"`
	Banner   string `json:"banner"`
	Tier     string `json:"tier"`
	Name     string `json:"name"`
}

type MatchPlayer

type MatchPlayer struct {
	MatchID                 int64                     `json:"match_id"`
	PlayerSlot              int                       `json:"player_slot"`
	AbilityUpgradesArr      []int                     `json:"ability_upgrades_arr"`
	AbilityUses             map[string]int            `json:"ability_uses"`
	AccountID               int                       `json:"account_id"`
	Actions                 map[string]int            `json:"actions"`
	Assists                 int                       `json:"assists"`
	Backpack0               int                       `json:"backpack_0"`
	Backpack1               int                       `json:"backpack_1"`
	Backpack2               int                       `json:"backpack_2"`
	BuybackLog              []BuybackLog              `json:"buyback_log"`
	CampsStacked            int                       `json:"camps_stacked"`
	CreepsStacked           int                       `json:"creeps_stacked"`
	Damage                  map[string]int            `json:"damage"`
	DamageInflictor         map[string]int            `json:"damage_inflictor"`
	DamageInflictorReceived map[string]int            `json:"damage_inflictor_received"`
	DamageTaken             map[string]int            `json:"damage_taken"`
	Deaths                  int                       `json:"deaths"`
	Denies                  int                       `json:"denies"`
	DnT                     []int                     `json:"dn_t"`
	FirstbloodClaimed       int                       `json:"firstblood_claimed"`
	Gold                    int                       `json:"gold"`
	GoldPerMin              int                       `json:"gold_per_min"`
	GoldReasons             map[string]int            `json:"gold_reasons"`
	GoldSpent               int                       `json:"gold_spent"`
	GoldT                   []int                     `json:"gold_t"`
	HeroDamage              int                       `json:"hero_damage"`
	HeroHealing             int                       `json:"hero_healing"`
	HeroHits                map[string]int            `json:"hero_hits"`
	HeroID                  int                       `json:"hero_id"`
	Item0                   int                       `json:"item_0"`
	Item1                   int                       `json:"item_1"`
	Item2                   int                       `json:"item_2"`
	Item3                   int                       `json:"item_3"`
	Item4                   int                       `json:"item_4"`
	Item5                   int                       `json:"item_5"`
	ItemUses                map[string]int            `json:"item_uses"`
	KillStreaks             map[string]int            `json:"kill_streaks"`
	Killed                  map[string]int            `json:"killed"`
	KilledBy                map[string]int            `json:"killed_by"`
	Kills                   int                       `json:"kills"`
	KillsLog                []Log                     `json:"kills_log"`
	LanePos                 map[string]map[string]int `json:"lane_pos"`
	LastHits                int                       `json:"last_hits"`
	LeaverStatus            int                       `json:"leaver_status"`
	Level                   int                       `json:"level"`
	LhT                     []int                     `json:"lh_t"`
	LifeState               map[string]int            `json:"life_state"`
	MaxHeroHit              MaxHeroHit                `json:"max_hero_hit"`
	MultiKills              map[string]int            `json:"multi_kills"`
	Obs                     map[string]map[string]int `json:"obs"`
	ObsLeftLog              []ObsLog                  `json:"obs_left_log"`
	ObsLog                  []ObsLog                  `json:"obs_log"`
	ObsPlaced               int                       `json:"obs_placed"`
	PartyID                 int                       `json:"party_id"`
	PartySize               int                       `json:"party_size"`
	Pings                   int                       `json:"pings"`
	PredVict                bool                      `json:"pred_vict"`
	Purchase                map[string]int            `json:"purchase"`
	PurchaseLog             []Log                     `json:"purchase_log"`
	Randomed                bool                      `json:"randomed"`
	RoshansKilled           int                       `json:"roshans_killed"`
	RunePickups             int                       `json:"rune_pickups"`
	Runes                   map[string]int            `json:"runes"`
	RunesLog                []RunesLog                `json:"runes_log"`
	Sen                     map[string]map[string]int `json:"sen"`
	SenLeftLog              []ObsLog                  `json:"sen_left_log"`
	SenLog                  []ObsLog                  `json:"sen_log"`
	SenPlaced               int                       `json:"sen_placed"`
	Stuns                   float64                   `json:"stuns"`
	TeamfightParticipation  float64                   `json:"teamfight_participation"`
	Times                   []int                     `json:"times"`
	TowerDamage             int                       `json:"tower_damage"`
	TowersKilled            int                       `json:"towers_killed"`
	XpPerMin                int                       `json:"xp_per_min"`
	XpReasons               map[string]int            `json:"xp_reasons"`
	XpT                     []int                     `json:"xp_t"`
	Personaname             string                    `json:"personaname"`
	Name                    string                    `json:"name"`
	LastLogin               string                    `json:"last_login"`
	RadiantWin              bool                      `json:"radiant_win"`
	StartTime               int                       `json:"start_time"`
	Duration                int                       `json:"duration"`
	Cluster                 int                       `json:"cluster"`
	LobbyType               int                       `json:"lobby_type"`
	GameMode                int                       `json:"game_mode"`
	Patch                   int                       `json:"patch"`
	Region                  int                       `json:"region"`
	IsRadiant               bool                      `json:"isRadiant"`
	Win                     int                       `json:"win"`
	Lose                    int                       `json:"lose"`
	TotalGold               int                       `json:"total_gold"`
	TotalXp                 int                       `json:"total_xp"`
	KillsPerMin             float64                   `json:"kills_per_min"`
	Kda                     float64                   `json:"kda"`
	Abandons                int                       `json:"abandons"`
	NeutralKills            int                       `json:"neutral_kills"`
	TowerKills              int                       `json:"tower_kills"`
	CourierKills            int                       `json:"courier_kills"`
	LaneKills               int                       `json:"lane_kills"`
	HeroKills               int                       `json:"hero_kills"`
	ObserverKills           int                       `json:"observer_kills"`
	SentryKills             int                       `json:"sentry_kills"`
	RoshanKills             int                       `json:"roshan_kills"`
	NecronomiconKills       int                       `json:"necronomicon_kills"`
	AncientKills            int                       `json:"ancient_kills"`
	BuybackCount            int                       `json:"buyback_count"`
	ObserverUses            int                       `json:"observer_uses"`
	SentryUses              int                       `json:"sentry_uses"`
	LaneEfficiency          float64                   `json:"lane_efficiency"`
	LaneEfficiencyPct       int                       `json:"lane_efficiency_pct"`
	Lane                    int                       `json:"lane"`
	LaneRole                int                       `json:"lane_role"`
	IsRoaming               bool                      `json:"is_roaming"`
	PurchaseTime            map[string]int            `json:"purchase_time"`
	FirstPurchaseTime       map[string]int            `json:"first_purchase_time"`
	ItemWin                 map[string]int            `json:"item_win"`
	ItemUsage               map[string]int            `json:"item_usage"`
	PurchaseTpscroll        int                       `json:"purchase_tpscroll"`
	ActionsPerMin           int                       `json:"actions_per_min"`
	LifeStateDead           int                       `json:"life_state_dead"`
	SoloCompetitiveRank     int                       `json:"solo_competitive_rank"`
	Cosmetics               []Cosmetics               `json:"cosmetics"`
	Benchmarks              Benchmarks                `json:"benchmarks"`
	PurchaseWardObserver    int                       `json:"purchase_ward_observer,omitempty"`
	PurchaseWardSentry      int                       `json:"purchase_ward_sentry,omitempty"`
	PurchaseGem             int                       `json:"purchase_gem,omitempty"`
}

type MatchService

type MatchService struct {
	// contains filtered or unexported fields
}

MatchService provides a method for accessing information about matches.

func (*MatchService) Match

func (s *MatchService) Match(matchID int64) (Match, *http.Response, error)

Match takes a Match ID and returns a collection about match. https://docs.opendota.com/#tag/matches

type MatchStatus

type MatchStatus struct {
	MatchID   int64 `json:"match_id"`
	Duration  int   `json:"duration"`
	StartTime int   `json:"start_time"`
}

type MatchTeam

type MatchTeam struct {
	TeamID  int    `json:"team_id"`
	Name    string `json:"name"`
	Tag     string `json:"tag"`
	LogoURL string `json:"logo_url"`
}

type MaxHeroHit

type MaxHeroHit struct {
	Type       string `json:"type"`
	Time       int    `json:"time"`
	Max        bool   `json:"max"`
	Inflictor  string `json:"inflictor"`
	Unit       string `json:"unit"`
	Key        string `json:"key"`
	Value      int    `json:"value"`
	Slot       int    `json:"slot"`
	PlayerSlot int    `json:"player_slot"`
}

type Metadata

type Metadata struct {
	Banner string `json:"banner"`
	Cheese Cheese `json:"cheese"`
}

Metadata represents site metadata for OpenDota.

type MetadataService

type MetadataService struct {
	// contains filtered or unexported fields
}

MetadataService provides a method for accesing OpenDota's metadata.

func (*MetadataService) Metadata

func (s *MetadataService) Metadata() (Metadata, *http.Response, error)

Metadata returns a collection of metadata for the OpenDota site. https://docs.opendota.com/#tag/metadata%2Fpaths%2F~1metadata%2Fget

type MiscParam

type MiscParam struct {
	Scenario string `url:"scenario,omitempty"`
}

MiscParam is used for creating a misc scenario query.

type MiscQueryResults

type MiscQueryResults struct {
	Scenario  string `json:"scenario"`
	IsRadiant bool   `json:"is_radiant"`
	Region    int    `json:"region"`
	Games     string `json:"games"`
	Wins      string `json:"wins"`
}

MiscQueryResults contains results for the scenario query.

type Mmr

type Mmr struct {
	Command    string   `json:"command"`
	RowCount   int      `json:"rowCount"`
	Oid        int      `json:"oid"`
	Rows       []MmrRow `json:"rows"`
	Fields     []Field  `json:"fields"`
	RowAsArray bool     `json:"rowAsArray"`
	Sum        Sum      `json:"sum"`
}

type MmrEstimate

type MmrEstimate struct {
	Estimate int `json:"estimate"`
}

MmrEstimate represents the estimated MMR score for a player.

type MmrRow

type MmrRow struct {
	Bin           int `json:"bin"`
	BinName       int `json:"bin_name"`
	Count         int `json:"count"`
	CumulativeSum int `json:"cumulative_sum"`
}

type Objective

type Objective struct {
	Time       int    `json:"time"`
	Type       string `json:"type"`
	Team       int    `json:"team,omitempty"`
	Slot       int    `json:"slot,omitempty"`
	PlayerSlot int    `json:"player_slot,omitempty"`
	Unit       string `json:"unit,omitempty"`
}

type ObsLog

type ObsLog struct {
	Time       int    `json:"time"`
	Type       string `json:"type"`
	Key        string `json:"key"`
	Slot       int    `json:"slot"`
	X          int    `json:"x"`
	Y          int    `json:"y"`
	Z          int    `json:"z"`
	Entityleft bool   `json:"entityleft"`
	Ehandle    int    `json:"ehandle"`
	PlayerSlot int    `json:"player_slot"`
}

type PickBans

type PickBans struct {
	IsPick  bool  `json:"is_pick"`
	HeroID  int   `json:"hero_id"`
	Team    int   `json:"team"`
	Order   int   `json:"order"`
	Ord     int   `json:"ord"`
	MatchID int64 `json:"match_id"`
}

type Player

type Player struct {
	TrackedUntil        string      `json:"tracked_until,omitempty"`
	SoloCompetitiveRank int         `json:"solo_competitive_rank,omitempty"`
	MmrEstimate         MmrEstimate `json:"mmr_estimate"`
	Profile             Profile     `json:"profile"`
	CompetitiveRank     int         `json:"competitive_rank,omitempty"`
	RankTier            int         `json:"rank_tier"`
}

Player represents stats about a player.

type PlayerCounts

type PlayerCounts struct {
	LeaverStatus map[string]GameWins `json:"leaver_status"`
	GameMode     map[string]GameWins `json:"game_mode"`
	LobbyType    map[string]GameWins `json:"lobby_type"`
	LaneRole     map[string]GameWins `json:"lane_role"`
	Region       map[string]GameWins `json:"region"`
	Patch        map[string]GameWins `json:"patch"`
	IsRadiant    map[string]GameWins `json:"is_radiant"`
}

PlayerCounts represents the counts of wins for a player for various stats.

type PlayerHero

type PlayerHero struct {
	HeroID       string `json:"hero_id"`
	LastPlayed   int    `json:"last_played"`
	Games        int    `json:"games"`
	Win          int    `json:"win"`
	WithGames    int    `json:"with_games"`
	WithWin      int    `json:"with_win"`
	AgainstGames int    `json:"against_games"`
	AgainstWin   int    `json:"against_win"`
}

PlayerHero represents the stats of a hero played by a player.

type PlayerHistogram

type PlayerHistogram struct {
	X     int `json:"x"`
	Games int `json:"games"`
	Win   int `json:"win"`
}

PlayerHistogram represents a distribution of data for a player.

type PlayerMatch

type PlayerMatch struct {
	MatchID      int64 `json:"match_id"`
	PlayerSlot   int   `json:"player_slot"`
	RadiantWin   bool  `json:"radiant_win"`
	Duration     int   `json:"duration"`
	GameMode     int   `json:"game_mode"`
	LobbyType    int   `json:"lobby_type"`
	HeroID       int   `json:"hero_id"`
	StartTime    int   `json:"start_time"`
	Version      int   `json:"version"`
	Kills        int   `json:"kills"`
	Deaths       int   `json:"deaths"`
	Assists      int   `json:"assists"`
	Skill        int   `json:"skill,omitempty"`
	XpPerMin     int   `json:"xp_per_min,omitempty"`
	GoldPerMin   int   `json:"gold_per_min,omitempty"`
	HeroDamage   int   `json:"hero_damage,omitempty"`
	TowerDamage  int   `json:"tower_damage,omitempty"`
	HeroHealing  int   `json:"hero_healing,omitempty"`
	LastHits     int   `json:"last_hits,omitempty"`
	Lane         int   `json:"lane,omitempty"`
	LaneRole     int   `json:"lane_role,omitempty"`
	IsRoaming    bool  `json:"is_roaming,omitempty"`
	Cluster      int   `json:"cluster,omitempty"`
	LeaverStatus int   `json:"leaver_status,omitempty"`
	PartySize    int   `json:"party_size"`
}

PlayerMatch represents match data for a player.

type PlayerParam

type PlayerParam struct {
	Limit         int      `url:"limit,omitempty"`
	Offset        int      `url:"offset,omitempty"`
	Win           int      `url:"win,omitempty"`
	Patch         int      `url:"patch,omitempty"`
	GameMode      int      `url:"game_mode,omitempty"`
	LobbyType     int      `url:"lobby_type,omitempty"`
	Region        int      `url:"region,omitempty"`
	Date          int      `url:"date,omitempty"`
	LaneRole      int      `url:"lane_role,omitempty"`
	HeroID        int      `url:"hero_id,omitempty"`
	IsRadiant     int      `url:"is_radiant,omitempty"`
	IncAccountID  int64    `url:"included_account_id,omitempty"`
	ExcAccountID  int64    `url:"excluded_account_id,omitempty"`
	WithHeroID    int      `url:"with_hero_id,omitempty"`
	AgainstHeroID int      `url:"against_hero_id,omitempty"`
	Significant   int      `url:"significant,omitempty"`
	Sort          string   `url:"sort,omitempty"`
	Project       []string `url:"project,omitempty"`
}

PlayerParam is used for customizing Player queries.

type PlayerPeers

type PlayerPeers struct {
	AccountID    int    `json:"account_id"`
	LastPlayed   int    `json:"last_played"`
	Win          int    `json:"win"`
	Games        int    `json:"games"`
	WithWin      int    `json:"with_win"`
	WithGames    int    `json:"with_games"`
	AgainstWin   int    `json:"against_win"`
	AgainstGames int    `json:"against_games"`
	WithGpmSum   int    `json:"with_gpm_sum"`
	WithXpmSum   int    `json:"with_xpm_sum"`
	Personaname  string `json:"personaname"`
	LastLogin    string `json:"last_login"`
	Avatar       string `json:"avatar"`
	AvatarFull   string `json:"avatarfull"`
}

PlayerPeers represents data about peers a player has played with.

type PlayerPros

type PlayerPros struct {
	AccountID       int    `json:"account_id"`
	Name            string `json:"name"`
	CountryCode     string `json:"country_code"`
	FantasyRole     int    `json:"fantasy_role"`
	TeamID          int    `json:"team_id"`
	TeamName        string `json:"team_name"`
	TeamTag         string `json:"team_tag"`
	IsLocked        bool   `json:"is_locked"`
	IsPro           bool   `json:"is_pro"`
	LockedUntil     int    `json:"locked_until"`
	SteamID         string `json:"steamid"`
	Avatar          string `json:"avatar"`
	AvatarMedium    string `json:"avatarmedium"`
	AvatarFull      string `json:"avatarfull"`
	ProfileURL      string `json:"profileurl"`
	Personaname     string `json:"personaname"`
	Cheese          int    `json:"cheese"`
	FhUnavailable   bool   `json:"fh_unavailable"`
	LocCountryCode  string `json:"loccountrycode"`
	LastPlayed      int    `json:"last_played"`
	FullHistoryTime string `json:"full_history_time"`
	LastMatchTime   string `json:"last_match_time"`
	Win             int    `json:"win"`
	Games           int    `json:"games"`
	WithWin         int    `json:"with_win"`
	WithGames       int    `json:"with_games"`
	AgainstWin      int    `json:"against_win"`
	AgainstGames    int    `json:"against_games"`
	WithGpmSum      int    `json:"with_gpm_sum"`
	WithXpmSum      int    `json:"with_xpm_sum"`
}

PlayerPros represents data about pro players a player has played with.

type PlayerRankings

type PlayerRankings struct {
	HeroID      int     `json:"hero_id"`
	Score       float64 `json:"score"`
	PercentRank int     `json:"percent_rank"`
	Card        int     `json:"card"`
}

PlayerRankings represents the ranking of a player.

type PlayerRatings

type PlayerRatings struct {
	AccountID           int    `json:"account_id"`
	MatchID             int64  `json:"match_id"`
	SoloCompetitiveRank int    `json:"solo_competitive_rank"`
	CompetitiveRank     int    `json:"competitive_rank"`
	Time                string `json:"time"`
}

PlayerRatings represents the ratings of a player.

type PlayerService

type PlayerService struct {
	// contains filtered or unexported fields
}

PlayerService provides methods for accessing information about players.

func (*PlayerService) Counts

func (s *PlayerService) Counts(accountID int64, params *PlayerParam) (PlayerCounts, *http.Response, error)

Counts takes an Account ID and optional params returns the counts of categories for a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1counts%2Fget

func (*PlayerService) Heroes

func (s *PlayerService) Heroes(accountID int64, params *PlayerParam) ([]PlayerHero, *http.Response, error)

Heroes takes an Account ID and optional params and returns information about heroes played by a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1heroes%2Fget

func (*PlayerService) Histograms

func (s *PlayerService) Histograms(accountID int64, field string, params *PlayerParam) ([]PlayerHistogram, *http.Response, error)

Histograms takes an Account ID, Field and optional params and returns a distribution of matches of a player for that field. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1histograms~1%7Bfield%7D%2Fget

func (*PlayerService) Matches

func (s *PlayerService) Matches(accountID int64, params *PlayerParam) ([]PlayerMatch, *http.Response, error)

Matches takes an Account ID and optional params and returns recent matches for a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1matches%2Fget

func (*PlayerService) Peers

func (s *PlayerService) Peers(accountID int64, params *PlayerParam) ([]PlayerPeers, *http.Response, error)

Peers takes an Account ID and optional params and returns information about games played with other players. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1peers%2Fget

func (*PlayerService) Player

func (s *PlayerService) Player(accountID int64) (Player, *http.Response, error)

Player takes an account id and returns information about a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D%2Fget

func (*PlayerService) Pros

func (s *PlayerService) Pros(accountID int64, params *PlayerParam) ([]PlayerPros, *http.Response, error)

Pros takes an Account ID and optional params and returns information about games played with other pro players. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1pros%2Fget

func (*PlayerService) Rankings

func (s *PlayerService) Rankings(accountID int64) ([]PlayerRankings, *http.Response, error)

Rankings takes an Account ID and returns ranking history for a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1rankings%2Fget

func (*PlayerService) Ratings

func (s *PlayerService) Ratings(accountID int64) ([]PlayerRatings, *http.Response, error)

Ratings takes an Account ID and returns rating history for a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1ratings%2Fget

func (*PlayerService) RecentMatches

func (s *PlayerService) RecentMatches(accountID int64) ([]PlayerMatch, *http.Response, error)

RecentMatches takes an Account ID and returns recent matches for a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1recentMatches%2Fget

func (*PlayerService) Totals

func (s *PlayerService) Totals(accountID int64, params *PlayerParam) ([]PlayerTotals, *http.Response, error)

Totals takes an Account ID and optional params and returns totals for a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1totals%2Fget

func (*PlayerService) WardMap

func (s *PlayerService) WardMap(accountID int64, params *PlayerParam) (PlayerWardMap, *http.Response, error)

WardMap takes an Account ID and optional params and returns wards placed in matches by a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1wardmap%2Fget

func (*PlayerService) WinLoss

func (s *PlayerService) WinLoss(accountID int64, params *PlayerParam) (WinLoss, *http.Response, error)

WinLoss takes an Account ID and optional params and returns the win/loss count for a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1wl%2Fget

func (*PlayerService) WordCloud

func (s *PlayerService) WordCloud(accountID int64, params *PlayerParam) (PlayerWordCloud, *http.Response, error)

WordCloud takes an Account ID and optional params and returns words said in matches by a player. https://docs.opendota.com/#tag/players%2Fpaths%2F~1players~1%7Baccount_id%7D~1wordcloud%2Fget

type PlayerTotals

type PlayerTotals struct {
	Field string `json:"field"`
	N     int    `json:"n"`
	Sum   int    `json:"sum"`
}

PlayerTotals represents totals in different fields for a player.

type PlayerWardMap

type PlayerWardMap struct {
	Obs map[string]map[string]int `json:"obs"`
	Sen map[string]map[string]int `json:"sen"`
}

PlayerWardMap represents observer and sentry wards placed by a player.

type PlayerWordCloud

type PlayerWordCloud struct {
	MyWordCounts  map[string]int `json:"my_word_counts"`
	AllWordCounts map[string]int `json:"all_word_counts"`
}

PlayerWordCloud represents the words said by a player in chat.

type ProMatch

type ProMatch struct {
	MatchID       int64  `json:"match_id"`
	Duration      int    `json:"duration"`
	StartTime     int    `json:"start_time"`
	RadiantTeamID int    `json:"radiant_team_id"`
	RadiantName   string `json:"radiant_name"`
	DireTeamID    int    `json:"dire_team_id"`
	DireName      string `json:"dire_name"`
	LeagueID      int    `json:"leagueid"`
	LeagueName    string `json:"league_name"`
	SeriesID      int    `json:"series_id"`
	SeriesType    int    `json:"series_type"`
	RadiantScore  int    `json:"radiant_score"`
	DireScore     int    `json:"dire_score"`
	RadiantWin    bool   `json:"radiant_win"`
}

ProMatch represents a professional match in Dota 2.

type ProMatchService

type ProMatchService struct {
	// contains filtered or unexported fields
}

ProMatchService provides a method for accessing professional matches.

func (*ProMatchService) Matches

func (s *ProMatchService) Matches() ([]ProMatch, *http.Response, error)

Matches returns a collection of professional matches. https://docs.opendota.com/#tag/pro-matches%2Fpaths%2F~1proMatches%2Fget

type ProPlayer

type ProPlayer struct {
	AccountID       int    `json:"account_id"`
	SteamID         string `json:"steamid"`
	Avatar          string `json:"avatar"`
	AvatarMedium    string `json:"avatarmedium"`
	AvatarFull      string `json:"avatarfull"`
	ProfileURL      string `json:"profileurl"`
	Personaname     string `json:"personaname"`
	LastLogin       string `json:"last_login"`
	FullHistoryTime string `json:"full_history_time"`
	Cheese          int    `json:"cheese"`
	FhUnavailable   bool   `json:"fh_unavailable"`
	LocCountryCode  string `json:"loccountrycode"`
	LastMatchTime   string `json:"last_match_time"`
	Name            string `json:"name"`
	CountryCode     string `json:"country_code"`
	FantasyRole     int    `json:"fantasy_role"`
	TeamID          int    `json:"team_id"`
	TeamName        string `json:"team_name"`
	TeamTag         string `json:"team_tag"`
	IsLocked        bool   `json:"is_locked"`
	IsPro           bool   `json:"is_pro"`
	LockedUntil     int    `json:"locked_until"`
}

ProPlayer represents a professional player in Dota 2.

type ProPlayerService

type ProPlayerService struct {
	// contains filtered or unexported fields
}

ProPlayerService provides a method for accessing professional player information.

func (*ProPlayerService) Players

func (s *ProPlayerService) Players() ([]ProPlayer, *http.Response, error)

Players returns a collection about professional players. https://docs.opendota.com/#tag/pro-players%2Fpaths%2F~1proPlayers%2Fget

type Profile

type Profile struct {
	AccountID      int    `json:"account_id"`
	Personaname    string `json:"personaname"`
	Name           string `json:"name"`
	Cheese         int    `json:"cheese"`
	SteamID        string `json:"steamid"`
	Avatar         string `json:"avatar"`
	AvatarMedium   string `json:"avatarmedium"`
	AvatarFull     string `json:"avatarfull"`
	ProfileURL     string `json:"profileurl"`
	LastLogin      string `json:"last_login,omitempty"`
	LocCountryCode string `json:"loccountrycode"`
}

Profile represents a player's profile.

type PublicMatch

type PublicMatch struct {
	MatchID     int64  `json:"match_id"`
	MatchSeqNum int64  `json:"match_seq_num"`
	RadiantWin  bool   `json:"radiant_win"`
	StartTime   int    `json:"start_time"`
	Duration    int    `json:"duration"`
	AvgMmr      int    `json:"avg_mmr"`
	NumMmr      int    `json:"num_mmr"`
	LobbyType   int    `json:"lobby_type"`
	GameMode    int    `json:"game_mode"`
	RadiantTeam string `json:"radiant_team"`
	DireTeam    string `json:"dire_team"`
}

PublicMatch represents a public match in Dota 2.

type PublicMatchParam

type PublicMatchParam struct {
	MmrAscending    int   `url:"mmr_ascending,omitempty"`
	MmrDescending   int   `url:"mmr_descending,omitempty"`
	LessThanMatchID int64 `url:"less_than_match_id,omitempty"`
}

PublicMatchParam can be used to customize a public match query.

type PublicMatchService

type PublicMatchService struct {
	// contains filtered or unexported fields
}

PublicMatchService provides a method for accessing public matches.

func (*PublicMatchService) Matches

Matches takes optional params and returns public match data. https://docs.opendota.com/#tag/public-matches%2Fpaths%2F~1publicMatches%2Fget

type QueryResult

type QueryResult struct {
	Command    string                   `json:"command"`
	RowCount   int                      `json:"rowCount"`
	Oid        int                      `json:"oid"`
	Rows       []map[string]interface{} `json:"rows"`
	Fields     []Field                  `json:"fields"`
	RowAsArray bool                     `json:"rowAsArray"`
	Err        interface{}              `json:"err"`
}

QueryResult represents the results returned by OpenDota's PostgreSQL database.

type Ranking

type Ranking struct {
	AccountID           int     `json:"account_id"`
	Score               float64 `json:"score"`
	Personaname         string  `json:"personaname"`
	Name                string  `json:"name"`
	Avatar              string  `json:"avatar"`
	LastLogin           string  `json:"last_login"`
	SoloCompetitiveRank int     `json:"solo_competitive_rank"`
}

type RankingService

type RankingService struct {
	// contains filtered or unexported fields
}

RankingService provides a method for accessing ranking of heroes for a player.

func (*RankingService) Rankings

func (s *RankingService) Rankings(heroID int) (HeroRanking, *http.Response, error)

Rankings takes a Hero ID and returns the top player rankings for a hero. https://docs.opendota.com/#tag/rankings%2Fpaths%2F~1rankings%2Fget

type RawPCT

type RawPCT struct {
	Raw float64 `json:"raw"`
	Pct float64 `json:"pct"`
}

type Record

type Record struct {
	MatchID   string `json:"match_id"`
	StartTime string `json:"start_time"`
	HeroID    string `json:"hero_id"`
	Score     string `json:"score"`
}

Record represents a record for a field.

type RecordService

type RecordService struct {
	// contains filtered or unexported fields
}

RecordService provides a method for accessing records for a field.

func (*RecordService) Records

func (s *RecordService) Records(field string) ([]Record, *http.Response, error)

Records takes a field and returns the records for that field. https://docs.opendota.com/#tag/records%2Fpaths%2F~1records~1%7Bfield%7D%2Fget

type RedisUsage

type RedisUsage struct {
	Metric    string `json:"metric"`
	Threshold int64  `json:"threshold"`
	Timestamp int    `json:"timestamp"`
}

RedisUsage requires special struct due to a bug in OpenDota.

type Replay

type Replay struct {
	MatchID    int64 `json:"match_id"`
	Cluster    int   `json:"cluster"`
	ReplaySalt int   `json:"replay_salt"`
	SeriesID   int   `json:"series_id"`
	SeriesType int   `json:"series_type"`
}

Replay represents a Dota 2 replay.

type ReplayService

type ReplayService struct {
	// contains filtered or unexported fields
}

ReplayService provides a method for accesing replay data.

func (*ReplayService) Replays

func (s *ReplayService) Replays(matchID []int) ([]Replay, *http.Response, error)

Replays takes an array of Match IDs and returns replays for those matches. https://docs.opendota.com/#tag/replays%2Fpaths%2F~1replays%2Fget

type RunesLog

type RunesLog struct {
	Time int `json:"time"`
	Key  int `json:"key"`
}

type ScenariosService

type ScenariosService struct {
	// contains filtered or unexported fields
}

ScenariosService provides a method for accessing OpenDota scenario information.

func (*ScenariosService) ItemTimings

func (s *ScenariosService) ItemTimings(params *ItemTimingsParam) ([]ItemTimings, *http.Response, error)

ItemTimings returns information about item timings and winrates. https://docs.opendota.com/#tag/scenarios%2Fpaths%2F~1scenarios~1itemTimings%2Fget

func (*ScenariosService) LaneRoles

func (s *ScenariosService) LaneRoles(params *LaneRolesParam) ([]LaneRoles, *http.Response, error)

LaneRoles returns information about hero lanes and winrates. https://docs.opendota.com/#tag/scenarios%2Fpaths%2F~1scenarios~1laneRoless%2Fget

func (*ScenariosService) Misc

Misc returns information about winrates given a query. https://docs.opendota.com/#tag/scenarios%2Fpaths%2F~1scenarios~1misc%2Fget

type Schema

type Schema struct {
	TableName  string `json:"table_name"`
	ColumnName string `json:"column_name"`
	DataType   string `json:"data_type"`
}

Schema represents the database schema for OpenDota.

type SchemaService

type SchemaService struct {
	// contains filtered or unexported fields
}

SchemaService provides a method for accessing the OpenDota database schema.

func (*SchemaService) Schema

func (s *SchemaService) Schema() ([]Schema, *http.Response, error)

Schema returns the OpenDota database schema. https://docs.opendota.com/#tag/schema%2Fpaths%2F~1schema%2Fget

type Search struct {
	AccountID     int     `json:"account_id"`
	AvatarFull    string  `json:"avatarfull"`
	Personaname   string  `json:"personaname"`
	LastMatchTime string  `json:"last_match_time"`
	Similarity    float64 `json:"similarity"`
}

Search represents a player for a given personaname.

type SearchParams

type SearchParams struct {
	Similarity float64 `url:"similarity,omitempty"`
	// contains filtered or unexported fields
}

SearchParams represents optional query parameters for the Search method. Default similarity is 0.51.

type SearchService

type SearchService struct {
	// contains filtered or unexported fields
}

SearchService provides a method for searching players by personaname.

func (*SearchService) Search

func (s *SearchService) Search(query string, params *SearchParams) ([]Search, *http.Response, error)

Search takes a query string and optional params and returns an array of players who are similar to the query provided. https://docs.opendota.com/#tag/search%2Fpaths%2F~1search%2Fget

type Status

type Status struct {
	UserPlayers             int              `json:"user_players"`
	TrackedPlayers          int              `json:"tracked_players"`
	MatchesLastDay          int              `json:"matches_last_day"`
	MatchesLastHour         int              `json:"matches_last_hour"`
	RetrieverMatchesLastDay int              `json:"retriever_matches_last_day"`
	ParsedMatchesLastDay    int              `json:"parsed_matches_last_day"`
	RequestsLastDay         int              `json:"requests_last_day"`
	APIHitsLastDay          int              `json:"api_hits_last_day"`
	APIHitsUILastDay        int              `json:"api_hits_ui_last_day"`
	FhQueue                 int              `json:"fhQueue"`
	GcQueue                 int              `json:"gcQueue"`
	MmrQueue                int              `json:"mmrQueue"`
	Retriever               []HostnameCounts `json:"retriever"`
	APIPaths                []HostnameCounts `json:"api_paths"`
	LastAdded               []MatchStatus    `json:"last_added"`
	LastParsed              []MatchStatus    `json:"last_parsed"`
	LoadTimes               map[string]int   `json:"load_times"`
	Health                  Health           `json:"health"`
}

Status represents the stats for the OpenDota API.

type StatusService

type StatusService struct {
	// contains filtered or unexported fields
}

StatusService provides a method for accessing OpenDota API stats.

func (*StatusService) Status

func (s *StatusService) Status() (Status, *http.Response, error)

Status returns the current status of the OpenDota API. https://docs.opendota.com/#tag/status%2Fpaths%2F~1status%2Fget

type Sum

type Sum struct {
	Count int `json:"count"`
}

type Team

type Team struct {
	TeamID        int     `json:"team_id"`
	Rating        float64 `json:"rating"`
	Wins          int     `json:"wins"`
	Losses        int     `json:"losses"`
	LastMatchTime int     `json:"last_match_time"`
	Name          string  `json:"name"`
	Tag           string  `json:"tag"`
	LogoURL       string  `json:"logo_url"`
}

Team represents the stats for a team.

type TeamHeroes

type TeamHeroes struct {
	HeroID        int    `json:"hero_id"`
	LocalizedName string `json:"localized_name"`
	GamesPlayed   int    `json:"games_played"`
	Wins          int    `json:"wins"`
}

TeamHeroes represents the hero data for a team.

type TeamMatch

type TeamMatch struct {
	MatchID    int64  `json:"match_id"`
	RadiantWin bool   `json:"radiant_win"`
	Radiant    bool   `json:"radiant"`
	Duration   int    `json:"duration"`
	StartTime  int    `json:"start_time"`
	LeagueID   int    `json:"leagueid"`
	LeagueName string `json:"league_name"`
	Cluster    int    `json:"cluster"`
}

TeamMatch represents the match data for a team.

type TeamPlayers

type TeamPlayers struct {
	AccountID           int    `json:"account_id"`
	Name                string `json:"name"`
	GamesPlayed         int    `json:"games_played"`
	Wins                int    `json:"wins"`
	IsCurrentTeamMember bool   `json:"is_current_team_member"`
}

TeamPlayers represents the players who have played on a team.

type TeamService

type TeamService struct {
	// contains filtered or unexported fields
}

TeamService provides methods for accessing information about teams in Dota 2.

func (*TeamService) Heroes

func (s *TeamService) Heroes(teamID int64) ([]TeamHeroes, *http.Response, error)

Heroes takes a Team ID and returns stats for the heroes played by a team. https://docs.opendota.com/#tag/teams%2Fpaths%2F~1teams~1%7Bteam_id%7D~1heroes%2Fget

func (*TeamService) Matches

func (s *TeamService) Matches(teamID int64) ([]TeamMatch, *http.Response, error)

Matches takes a Team ID and returns matches played by a team. https://docs.opendota.com/#tag/teams%2Fpaths%2F~1teams~1%7Bteam_id%7D~1matches%2Fget

func (*TeamService) Players

func (s *TeamService) Players(teamID int64) ([]TeamPlayers, *http.Response, error)

Players takes a Team ID and returns the players that played on a team. https://docs.opendota.com/#tag/teams%2Fpaths%2F~1teams~1%7Bteam_id%7D~1players%2Fget

func (*TeamService) Team

func (s *TeamService) Team(teamID int64) (Team, *http.Response, error)

Team takes a Team ID and returns data about that team. https://docs.opendota.com/#tag/teams%2Fpaths%2F~1teams~1%7Bteam_id%7D%2Fget

func (*TeamService) Teams

func (s *TeamService) Teams() ([]Team, *http.Response, error)

Teams returns data about all teams. https://docs.opendota.com/#tag/teams%2Fpaths%2F~1teams%2Fget

type TeamfightPlayers

type TeamfightPlayers struct {
	AbilityUses map[string]int `json:"ability_uses"`
	ItemUses    map[string]int `json:"item_uses"`
	Killed      map[string]int `json:"killed"`
	Deaths      int            `json:"deaths"`
	Buybacks    int            `json:"buybacks"`
	Damage      int            `json:"damage"`
	Healing     int            `json:"healing"`
	GoldDelta   int            `json:"gold_delta"`
	XpDelta     int            `json:"xp_delta"`
	XpStart     int            `json:"xp_start"`
	XpEnd       int            `json:"xp_end"`
}

type Teamfights

type Teamfights struct {
	Start     int                `json:"start"`
	End       int                `json:"end"`
	LastDeath int                `json:"last_death"`
	Deaths    int                `json:"deaths"`
	Players   []TeamfightPlayers `json:"players"`
}

type Usage

type Usage struct {
	Metric    int64 `json:"metric"`
	Threshold int64 `json:"threshold"`
	Timestamp int   `json:"timestamp"`
}

type WinLoss

type WinLoss struct {
	Win  int `json:"win"`
	Lose int `json:"lose"`
}

WinLoss represents the totals of wins and losses for a player.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL