ppy / osu-web

the browser-facing portion of osu!
https://osu.ppy.sh
GNU Affero General Public License v3.0
973 stars 380 forks source link

include_fails parameter has no effect on /users/:user/scores/:type when using api version 20220705 #11288

Closed clxxiii closed 3 months ago

clxxiii commented 3 months ago

When fetching scores with the include_fails parameter, failed scores are omitted if the x-api-version header is set to the new version. I don't know enough about the lazer architecture to know if it can submit failed scores or not, but even if it doesn't, this endpoint should still return failed stable scores.

notbakaneko commented 3 months ago

Are you getting recent scores? include_fails only works for /users/:user/scores/recent

clxxiii commented 3 months ago

I am getting recent scores, here's an example: I set two scores on this map, which I've never played before, using the stable build of osu!stable. The first one, I passed on the extra diff, the second one, I purposefully failed on the insane diff.

Response without x-api-version=20220705 header

[
    {
        "accuracy": 0.93048128342246,
        "best_id": null,
        "created_at": "2024-06-24T22:28:25Z",
        "id": 0,
        "max_combo": 272,
        "mode": "osu",
        "mode_int": 0,
        "mods": [],
        "passed": false,
        "perfect": false,
        "pp": null,
        "rank": "F",
        "replay": false,
        "score": 1203366,
        "statistics": {
            "count_100": 3,
            "count_300": 173,
            "count_50": 0,
            "count_geki": null,
            "count_katu": null,
            "count_miss": 11
        },
        "type": "score_osu",
        "user_id": 10962678,
        "current_user_attributes": {
            "pin": {
                "is_pinned": false,
                "score_id": 3053458018
            }
        },
        "beatmap": ...,
        "beatmapset": ...,
        "user": ...,
    {
        "accuracy": 0.9654654654654654,
        "best_id": 4645262909,
        "created_at": "2024-06-24T22:26:56Z",
        "id": 4645262909,
        "max_combo": 258,
        "mode": "osu",
        "mode_int": 0,
        "mods": [],
        "passed": true,
        "perfect": false,
        "pp": 78.0927,
        "rank": "A",
        "replay": false,
        "score": 2197372,
        "statistics": {
            "count_100": 17,
            "count_300": 423,
            "count_50": 0,
            "count_geki": null,
            "count_katu": null,
            "count_miss": 4
        },
        "type": "score_best_osu",
        "user_id": 10962678,
        "current_user_attributes": {
            "pin": {
                "is_pinned": false,
                "score_id": 3053452297
            }
        },
        "beatmap": ...,
        "beatmapset": ...,
        "user": ...,
    },
    ...
]

Response with x-api-version=20220705 header

[
    {
        "ranked": false,
        "preserve": false,
        "processed": true,
        "maximum_statistics": {
            "great": 187,
            "legacy_combo_increase": 341
        },
        "mods": [
            {
                "acronym": "CL"
            }
        ],
        "statistics": {
            "ok": 3,
            "miss": 11,
            "great": 173
        },
        "beatmap_id": 3697095,
        "best_id": null,
        "id": 3053458018,
        "rank": "A",
        "type": "solo_score",
        "user_id": 10962678,
        "accuracy": 0.930481,
        "build_id": null,
        "ended_at": "2024-06-24T22:28:25Z",
        "has_replay": false,
        "is_perfect_combo": false,
        "legacy_perfect": false,
        "legacy_score_id": 0,
        "legacy_total_score": 1203366,
        "max_combo": 272,
        "passed": false,
        "pp": null,
        "ruleset_id": 0,
        "started_at": null,
        "total_score": 499935,
        "replay": false,
        "current_user_attributes": {
            "pin": {
                "is_pinned": false,
                "score_id": 3053458018
            }
        },
        "beatmap": ...,
        "beatmapset": ...,
        "user": ...,
    ...
]
clxxiii commented 3 months ago

oh wait a minute, I just realized the issue: Both responses include it, I was just looking for scores that had the rank set to F. In the lazer version of the API, it uses the "rank before fail", wheras the default API makes it an 'F' if you fail no matter what.