Resolve stage: matching, version resolution, fixtures; BGG API auth
bggpipe resolve works end to end: search -> exact/fuzzy candidate scoring -> auto/ambiguous/unmatched classification with owned-count tie-breaks (mixed base/expansion candidates never auto-match), version scoring from edition cues (never guessed; no cues -> version_unknown), idempotent matches.csv appends. Discovered mid-build: BGG now requires registered-application Bearer tokens on the XML API (2025 policy change) and returns 401 otherwise. Client sends Authorization from BGG_API_TOKEN and raises an actionable BGGAuthError; CLAUDE.md and the bgg-api skill are updated to match. Live fixture recording is blocked until registration is approved, so tests replay hand-crafted stub fixtures via a network-refusing transport; scripts/record_fixtures.py re-records real XML under the same cache keys once a token exists. One live read-only smoke test is skipped unless --run-live. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,19 @@ description: Reference for BoardGameGeek's XML API2 and website automation — e
|
||||
|
||||
# BoardGameGeek API & site automation reference
|
||||
|
||||
## Authentication (required since 2025)
|
||||
|
||||
Every XML API request must carry `Authorization: Bearer <token>` or BGG
|
||||
returns **401 Unauthorized**. Tokens come from a registered application:
|
||||
create one at `https://boardgamegeek.com/applications` (non-commercial
|
||||
license is free; approval can take a week or more), then generate a token
|
||||
under "Tokens". `bggpipe` reads it from the `BGG_API_TOKEN` env var — never
|
||||
put it in config.toml, code, or logs. Requests must go to
|
||||
`boardgamegeek.com` **without** a leading `www` or the token is ignored.
|
||||
Exception: downloading your own collection while logged in on the website
|
||||
needs no registration — relevant to the Playwright stages, not the API
|
||||
client. Usage is monitored per-application at `/applications` → "Usage".
|
||||
|
||||
## Endpoints (XML API2 — the only sanctioned read API)
|
||||
|
||||
- Search: `https://boardgamegeek.com/xmlapi2/search?query=<title>&type=boardgame,boardgameexpansion`
|
||||
|
||||
Reference in New Issue
Block a user