Skip to content

fix: treat a private Raider.IO profile as no profile - #36

Merged
Erilla merged 1 commit into
mainfrom
fix/raiderio-private-profile
Aug 10, 2026
Merged

fix: treat a private Raider.IO profile as no profile#36
Erilla merged 1 commit into
mainfrom
fix/raiderio-private-profile

Conversation

@Erilla

@Erilla Erilla commented Aug 10, 2026

Copy link
Copy Markdown
Owner

Follows #35. With the parse fixed, eu/draenor/shurkle got further and then failed five attempts in ~130 ms each as upstream_unavailable, with zero Blizzard requests — "Character data is temporarily unavailable."

The cause, live:

GET /api/user/view-characters?name=shurkle
403 {"error":"Forbidden","message":"The requested user's profile is private and cannot be viewed.","errorCode":"profile_is_private"}

shurkle has no public Raider.IO ownership, so discovery falls back to profile guesses — one of which is the character's own name. That name belongs to a user whose profile is private. responseFailure mapped every non-404 to transient, so a permanent answer about visibility was retried as an outage and then failed the whole run.

  • 403 is now a distinct forbidden failure kind.
  • resolveProfileGuess treats forbidden like not_found and returns null: an invisible profile yields no relationships. A guess is speculative by nature, so failing the run on one is wrong regardless.
  • getCharacter and getClaimedCharacters keep their current behaviour for a 403 (retryable), since neither has a confirmed live case. Worth a look separately — a 403 there is equally permanent.

New fixture with the real body, plus a test that was red with raiderio_transient.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Qh8Zb2HnaxebWrRLUMoAiv

Raider.IO answers 403 profile_is_private when a guessed user name belongs
to someone whose profile is private. Every non-404 failure was classified
transient, so this permanent answer was retried five times and then failed
the run as upstream_unavailable — "Character data is temporarily
unavailable." for any character whose ownership is not public and whose
name matches a private Raider.IO user.

Classify 403 as a distinct forbidden failure and treat it like not_found
when resolving a profile guess: an invisible profile yields no
relationships, which is not an outage. Character and claimed-character
requests keep their present behaviour for a 403.

Confirmed against the live endpoint, which returns 403 for
/api/user/view-characters?name=shurkle.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qh8Zb2HnaxebWrRLUMoAiv
@Erilla
Erilla merged commit 6b11975 into main Aug 10, 2026
2 checks passed
@Erilla
Erilla deleted the fix/raiderio-private-profile branch August 10, 2026 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant