IodidDOCUMENTATION

api/summoner/profile.mdx

/doc/api/summoner/profile

PUBLIC DOCUMENTATION

Profile by puuid

Full profile SummonerView by puuid — 200/202/404, headers and cache.

GET/api/lol/{shard}/profile/{puuid}

Full profile by puuid

Path params

Request
https://api.safjnest.com/api/lol/EUW1/profile/{puuid}
curl "https://api.safjnest.com/api/lol/EUW1/profile/{puuid}"

Missing required: puuid

CORS enabled (*) — runs directly in your browser against https://api.safjnest.com

Profile — by puuid

GET /api/lol/{shard}/profile/{puuid}

Full profile — SummonerView with Summoner, ranks and overview. Recent matches use the dedicated /matches endpoint.

  • Controller: LolController.java:63 → profileService.get(shard, puuid) → profileResponse (:291)
  • Response: 200 SummonerView (READY/PARTIAL), 202 LolApiError profile_pending, 404 if puuid unknown
  • Header: X-Profile-Refresh: true when metadata.refresh=true (:294)
  • Cache: ProfileService.get → SUMMONER_OVERVIEW read-through Redis → Mongo → ComputeScheduler if miss/stale
ParameterPositionRequiredTypeValidation
shardpathyesLeagueShardrequiredShard
puuidpathyesStringrequiredText(puuid,"puuid")

Response DTO — SummonerView

SummonerView (src/main/java/com/safjnest/lol/model/summoner/SummonerView.java:13):

java
public record SummonerView(
    Summoner summoner,
    Map<GameQueueType, Rank> ranks,
    SummonerOverview overview,
    @JsonInclude(NON_NULL) ResponseMetadata metadata
) {}
  • Summoner: puuid (PK), riotId (gameName#tagLine String), region: LeagueShard, level: int, icon: int
  • Rank: tier: TierType, division: int, lp: int, wins/losses, derived TierDivisionType
  • SummonerOverview: aggregated ProfileStatistics + List<Mastery> + champions: Map<Integer, Champion>
  • ResponseMetadata: pagination, lastUpdate, refresh, filter

JSON example — 200 OK

json
{
  "summoner": {
    "puuid": "abc123-puuid",
    "riotId": "Hide on bush#KR1",
    "region": "KR",
    "level": 512,
    "icon": 4567
  },
  "ranks": {
    "RANKED_SOLO_5X5": { "tier": "CHALLENGER", "division": 1, "lp": 1280, "wins": 342, "losses": 298 }
  },
  "overview": {
    "statistics": { "games": 1240, "wins": 670, "kda": 3.21 },
    "masteries": [{ "championId": 157, "championPoints": 1234567, "championLevel": 7 }],
    "champions": { "157": { "games": 320, "wins": 180, "kda": 4.1 } }
  },
  "metadata": {
    "lastUpdate": 1715434800000,
    "refresh": false
  }
}

curl

bash
curl -i "https://api.safjnest.com/api/lol/EUW1/profile/abc123-puuid"
curl "https://api.safjnest.com/api/lol/KR/profile/abc-123-puuid"

202 pending

http
HTTP/1.1 202 Accepted
X-Profile-Refresh: true

{
  "status": 202,
  "code": "profile_pending",
  "message": "Profile initialization is pending",
  "metadata": { "lastUpdate": null, "refresh": true }
}