mtgjson-website
mtgjson-website copied to clipboard
Documentation: TCGplayer SKUs finish field is optional, not required
Documentation Issue: TCGplayer SKUs finish field
Problem
The TCGplayer SKUs data model documentation contains inaccuracies about the finish field.
Documentation Says
The docs state that finish is a required field (not marked as optional):
- Type:
string - Example:
"FOIL_ETCHED"(with underscore) - Introduced: v5.2.0
Actual Data Structure
Based on the actual TcgplayerSkus.json file (v5.2.2+20251001):
Regular cards (no special foiling):
{
"condition": "NEAR MINT",
"language": "ENGLISH",
"printing": "FOIL",
"productId": 111268,
"skuId": 3045711
// No "finish" field
}
Cards with etched foiling (the only special finish found):
{
"condition": "NEAR MINT",
"finish": "FOIL ETCHED", // ← Optional field, with SPACE not underscore
"language": "ENGLISH",
"printing": "FOIL",
"productId": 504636,
"skuId": 7267191
}
Issues Found
finishis optional, not required - it only appears on cards with special foil treatments- Value format:
"FOIL ETCHED"(with space), not"FOIL_ETCHED"(with underscore) as shown in docs - Missing clarification: Docs don't explain when this field is present vs absent
Expected Fix
Update the documentation to:
- Mark
finishas optional (finish?: string) - Correct the example value to
"FOIL ETCHED"(with space) - Add note: "Only present for cards with special foil treatments (e.g., etched foils). Regular foils and non-foils do not have this field."
Impact
This causes confusion when parsing/querying SKU data, as developers expect finish to always be present based on the docs.
Additional Finding: Data Types
Also noticed that productId and skuId are numbers in the actual data, not strings:
{
"productId": 111268, // number, not "111268"
"skuId": 3045711 // number, not "3045711"
}
The TypeScript model shows them as string, but the actual JSON has them as number.