@@ -533,6 +533,35 @@ paths:
533533 description : Save states successfully deleted
534534 ' 404 ' :
535535 $ref : ' #/components/responses/MapPlayerNotFound'
536+ /map-players/{playerId}/topTimes :
537+ get :
538+ operationId : getPlayerTopTimes
539+ tags : [ players ]
540+ summary : Get a player's top times sorted by leaderboard placement
541+ description : Returns the player's best times across all completed maps, sorted by their rank on each map's leaderboard (best placements first).
542+ parameters :
543+ - name : playerId
544+ in : path
545+ required : true
546+ schema : { type: string }
547+ - name : page
548+ in : query
549+ required : true
550+ schema :
551+ type : integer
552+ format : int32
553+ minimum : 1
554+ - name : pageSize
555+ in : query
556+ required : true
557+ schema :
558+ type : integer
559+ format : int32
560+ minimum : 1
561+ maximum : 100
562+ responses :
563+ ' 200 ' :
564+ $ref : ' #/components/responses/GetPlayerTopTimes'
536565
537566 /hdb/search :
538567 get :
@@ -780,6 +809,19 @@ components:
780809 score : { type: integer }
781810 rank : { type: integer }
782811
812+ PlayerTopTimesEntry :
813+ type : object
814+ required : [ mapId, publishedId, mapName, completionTime, rank ]
815+ properties :
816+ mapId : { type: string }
817+ publishedId : { type: integer }
818+ mapName : { type: string }
819+ completionTime :
820+ type : integer
821+ description : Time to complete the map in milliseconds
822+ rank :
823+ type : integer
824+ description : Player's rank on this map's leaderboard (1-indexed)
783825 MapPlayerData :
784826 type : object
785827 required : [ id, mapSlots ]
@@ -1031,3 +1073,20 @@ components:
10311073 results :
10321074 type : array
10331075 items : { $ref: '#/components/schemas/MapHistoryEntry' }
1076+ GetPlayerTopTimes :
1077+ description : Player's top times sorted by leaderboard placement.
1078+ content :
1079+ application/json :
1080+ schema :
1081+ type : object
1082+ required : [ page, totalItems, items ]
1083+ properties :
1084+ page :
1085+ type : integer
1086+ format : int32
1087+ totalItems :
1088+ type : integer
1089+ format : int64
1090+ items :
1091+ type : array
1092+ items : { $ref: '#/components/schemas/PlayerTopTimesEntry' }
0 commit comments