ValveSoftware / Dota-2

Tracker for issues specific to Linux and Mac in the Reborn client. If you have a general issue or non-system-specific feature request please go to dev.dota2.com
472 stars 38 forks source link

WebApi - IDOTA2Match_570/GetMatchDetails returning 500 Internal Server Error after 7.36 release #2715

Open nlavalle opened 5 months ago

nlavalle commented 5 months ago

Your system information

this feels irrelevant to the issue but I'm running on fedora 39

Please describe your issue in as much detail as possible:

Describe what you expected should happen and what did happen. Please link any large pastes as a Github Gist.

I've been fetching match details for a hobby project trying to do some fantasy stuff because I really liked the TI2023 fantasy and wanted to do it for other leagues, anyway I do the /GetMatchHistory and /GetMatchDetails calls for the league ID and trying to pull DreamLeague 23 games after 7.36 I'm receiving 500 Internal Server errors, here's an example curl for a game in the last 24hr:

curl --location 'https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/v1?match_id=7754090781&key={{SteamKey}}'

The equivalent get match history works, and the last match detail I was able to pull with that previous curl format was 7750258646 which was 2 days ago so the timing feels related to the 7.36 patch.

I double checked the https://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v0001 endpoint and confirmed the GetMatchDetails is still listed there with the same parameters, but if there's a different endpoint/request I should be passing to that call now I'm happy to make the update.

mburst commented 5 months ago

+1 Same issue here since the 7.36 patch. Let me know if there is a different endpoint to switch to

adexp01 commented 5 months ago
JRybicki commented 5 months ago

+1 Also have this issue, can someone post if they know of a new endpoint?

LuddeFro commented 5 months ago

I can't see GetMatchDetails on https://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v0001. Am I missing it or has it disappeared? maybe you could confirm @nlavalle

ikonduktor commented 5 months ago

It doesn't work 5 days already

YatsynychRoman commented 5 months ago

I can't see GetMatchDetails on https://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v0001. Am I missing it or has it disappeared? maybe you could confirm @nlavalle

There is GetMatchDetails in this list, but you need to pass the API key as a query parameter for protected endpoints to show up.

b3lowster commented 5 months ago

Does anybody know when the API comes back? 😢

atomupgrader commented 5 months ago

Does anybody know when the API comes back? :(

eremenko1 commented 5 months ago

fix this pls

wdunlap commented 5 months ago

Same issue here.

yukinorong commented 5 months ago

same problem +1

amandladev commented 5 months ago

same 😢

snudel commented 5 months ago

same here :(

eremenko1 commented 5 months ago

Help

playcat commented 5 months ago

guys, it looks like this repo is a bit of a miss - ths is not about the web api

playcat commented 5 months ago

also, I've found solution here: https://github.com/ValveSoftware/Dota2-Gameplay/issues/17910 you can use GetMatchHistoryBySequenceNum - with some tweaking, it does the same. You just send make sure you know your match sequence number

atomupgrader commented 5 months ago

also, I've found solution here: ValveSoftware/Dota2-Gameplay#17910 you can use GetMatchHistoryBySequenceNum - with some tweaking, it does the same. You just send make sure you know your match sequence number

It is not always possible to know that number. If I parse 'GetLiveLeagueGames' or similar endpoints, I would not want to parse all matches using 'GetMatchHistoryBySequenceNum' to find the match I am interested in.

playcat commented 5 months ago

I have a simple updater which keeps track of games for me and my friends. It keeps our steam ids in a db, pulls most recent games for each of us, grabs details where available. It also does a bit or "merging" for games we play together.

Anyway, we first call getMatchHistory and then grab details with the problematic request. But when you get history (https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/), you also get a field 'match_seq_num', which you can send to GetMatchHistoryBySequenceNum and set number of results to return to 1. Then it's just a matter of accessing the proper array element (because GetMatchHistoryBySequenceNum returns same data as GetMatchDetails, but an array of them).

# from this:   return data['result']
# to this:  return data['result']['matches'][0]
Noxville commented 5 months ago

@playcat that endpoint doesn't have all the data in it that was in GetMatchHistory. It's not a suitable replacement for all cases.

JRybicki commented 5 months ago

Replying to https://github.com/ValveSoftware/Dota-2/issues/2715#issuecomment-2158217884

This did work for me since I'm only grabbing some basic game data, sounds like we have pretty similar apps. Thanks for sharing.

iAMD1ver commented 4 months ago

Any fix?

golangman commented 4 months ago

Any fix?

Dmytro4 commented 4 months ago

Over a month with no fix. How will tournament organizers and broadcast studios track stats to show during the tournaments? Imagine having TI with no info because the API just does not work

atomupgrader commented 4 months ago

Over a month with no fix. Sure, Valve does not really care about us, but how will tournament organizers and broadcast studios track stats to show during the tournaments? Imagine having TI with no info because the API just does not work

by another labels in api that works

Dmytro4 commented 4 months ago

Over a month with no fix. Sure, Valve does not really care about us, but how will tournament organizers and broadcast studios track stats to show during the tournaments? Imagine having TI with no info because the API just does not work

by another labels in api that works

what works? You were already told that those endpoints does not have enough data and this requires to constantly tracking another endpoint in attempt to catch the needed match which means much more queries and time than simply receiving the info about match by id

atomupgrader commented 4 months ago

what works? You were already told that those endpoints does not have enough data and this requires to constantly tracking another endpoint in attempt to catch the needed match which means much more queries and time than simply receiving the info about match by id

if you grab all data by that working endpoints you needn't some narrow endpopints like one-match-data

Dmytro4 commented 4 months ago

what works? You were already told that those endpoints does not have enough data and this requires to constantly tracking another endpoint in attempt to catch the needed match which means much more queries and time than simply receiving the info about match by id

if you grab all data by that working endpoints you needn't some narrow endpopints like one-match-data

this is the key issue. Good luck collecting up to 1kk matches every day just to be able to track main data for a specific match. This also will not work for any match that will be played before you start to track matches so you will need a specific algorithm to continuously make queries with different SequenceNum until you catch a needed match

atomupgrader commented 4 months ago

Replying to https://github.com/ValveSoftware/Dota-2/issues/2715#issuecomment-2186652403

but "tournament organizers and broadcast studios" just doing it...

Noxville commented 4 months ago

@atomupgrader Tournament organizers are in lobbies, so they can just get the final snapshots from GSI to power their graphics.

nlavalle commented 4 months ago

this is the key issue. Good luck collecting up to 1kk matches every day just to be able to track main data for a specific match. This also will not work for any match that will be played before you start to track matches so you will need a specific algorithm to continuously make queries with different SequenceNum until you catch a needed match

I'm not sure I'm fully following you, but if you use the /GetMatchHistory endpoint you can request a specific match ID with start_at_match_id={{matchId}}&matches_requested=1, then that response gives you a match_seq_num that you can pass into the GetMatchHistoryBySeqNum to get the match details for that ID

more generally I don't know valve's situation but my guess is their backlog of things to fix before TI is huge with facet interactions. an exploit in some in-game interaction will significantly impact the TI experience more than this endpoint being down, so my personal expectation is this might not get fixed until after TI because it's flagged as lower priority on some giant ticket board they have

Noxville commented 4 months ago

@nlavalle the GetMatchHistoryBySeqNum is more heavily rate-limited than the other endpoints (1 per 7 seconds) so you're really limited in your ability to get data this way (~12k matches a day if you're only getting 1 match per request).

Your only alternative is just to keep up with the sequence, which in itself is very difficult to do on a single IP address.

nlavalle commented 4 months ago

oh wow that's painful, I didn't realize, my apologies

Simon1093 commented 4 months ago

At first I was thinking that Valve are extending data for GetMatchDetails endpoint, but now I realized that they just broke this endpoint and forgot about it =0

sepehr500 commented 4 months ago

I am also having this issue. Kind of crazy it has been broken this long.

sykefu commented 3 months ago

Still broken.

iAMD1ver commented 3 months ago

Hello, Can we hope for a bug fix?

Porestoranam commented 2 months ago

+1 We have the problem too

N1ckName192 commented 2 months ago

+1 We have the problem too

N1ckName192 commented 2 months ago

We have solved the problem, thanks

AlexArtjukh commented 2 months ago

We have solved the problem, thanks

How did you manage to solve it?

iAMD1ver commented 1 month ago

Someone know how to fix it?

Geczy commented 1 month ago

no matter what i try i always get 0 results, for example

https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/v1/?key=<KEY>&matches_requested=1&start_at_match_id=7965241988

why?

{
"result": {
"status": 1,
"num_results": 0,
"total_results": 500,
"results_remaining": 0,
"matches": []
}
}
vanyagetc13 commented 1 month ago

still

eremenko1 commented 1 month ago

up pls

elissonandrade commented 1 week ago

UP. When i try multiple times, i get something once, but then nothing.