In this section
CUSTOM SETS
Define what you're chasing. Track completion.
A custom set is a goal — "every Bedard ," "all Rainbow Young Guns," "jersey #25 of every numbered Stankoven." Make it public and other collectors subscribe and chase the same set.
two kinds
CURATED DYNAMIC
you hand-pick cards you define a filter
each card has a match mode auto-fills as the catalog grows
- Rainbow McDavid YG (exact) { "subject": "Bedard",
- any Bedard FW (any_printing) "rookie": true,
- #25 Gold Stanko (exact_serial) "is_numbered": true }CURATED: MATCH MODES
You hand-pick each card. Its decides what "owned" means:
any_printingOwn any version of the — base, parallel, whatever.exactOwn this specific printing (this finish).exact_serialOwn this printing with this exact serial number.DYNAMIC: ONE FILTER
A dynamic set is a saved filter, not a card list — the same CardFiltergrammar you'd POST to /cards/search(subject, rookie, is_numbered, finish, year…). Every catalog card that matches is a member, so the set fills itself: parse next season's release and each new Bedard rookie joins on its own, no editing. There are no per-card match modes — the filter is the membership rule.
COMPLETION
Fetching a set returns per-card ownership — owned_printing tells you whatyou own ("Rainbow /99," not just "yes") — plus totals: cards, owned, completion %. A curated set's target is fixed; a dynamic set's grows with the catalog, so its percentage shifts as new cards match.
SHARE IT
Make any set public and other collectors subscribe — chasing the same goal, each tracking their own completion against it. The most-subscribed chases surface at /custom-sets/popular.