mtgjson keeps adding new properties, and I haven't really been checked them proactively.
It's probably worth making a list of all the properties that are not searchable, displayed, or both.
We'll likely end up intentionally skipping some, but it's good to have a list. For example rapidly changing data like prices and EDHRec rankings would require a bit too much support.
There's also some properties that are calculated locally (like is:reprint) that could be moved to mtgjson. For example originally I even maintained all foiling data, that was a good thing to outsource.
[x] asciiName - we don't need it, search engine automatically strips any accents while querying
[x] attractionLights - displayed, no query
[x] availability - is:dreamcast missing, but mtgjson data on that is completely wrong and not worth using (same as their is:shandalar data, but we have correct calculations here)
[x] boosterTypes - it looks like redundant information
[x] borderColor - border: query, not displayed as it's obvious from the image
[x] cardParts - // query and displayed as a link
[x] colorIdentity - ci: query, not displayed as it can be inferred from displayed information
[x] colorIndicator - ind: query and displayed
[x] colors - c: query, not displayed as it can be inferred from displayed information
[x] convertedManaCost - alias for manaValue, also query cmc:
[x] faceConvertedManaCost - we're always using face values
[x] faceFlavorName - we're always using face values
[x] faceManaValue - we're always using face values
[x] faceName - we're always using face values
[x] finishes - only foil and nonfoil supported; I don't think supporting etched and signed is worth added complexity; might reconsider if it becomes a major thing
[x] flavorName - displayed, fn: query
[x] flavorText - displayed, ft: query
[x] foreignData - we only care about name
[x] frameEffects - frame: query, but not displayed other than in the image
[x] frameVersion - frame: query, but we use old mtgjson classification. I might switch to new system at some point, but there's no big reason
[x] hand - displayed, ~query missing~, hand: query added
[x] hasAlternativeDeckLimit - only have allowed_in_any_number?, so Seven Dwarves not covered, but it's just one card, so I think I'm OK skipping it
[x] hasContentWarning - not displayed, there's undocumented query for this
[x] hasFoil - query is:foil, but not displayed
[x] hasNonFoil - query is:nonfoil, but not displayed
[x] identifiers - internal use, no need to display
[x] isAlternative - redundant, can be inferred from display, but there's no great query for it
[x] isFullArt - is:fullart query, not displayed as can be seen from the image
[x] isFunny - is:funny query, but it's calculated and not taken directly from mtgjson data; mtgjson data is defined as "If the card is part of a funny set, such as an Un-set." so UGL Plains are is:funny, and we don't want this
[x] isOnlineOnly - is:digital query, but it's calculated and not taken directly from mtgjson data; the difference is 5 variant cards from normal sets mtgjson tags as isOnlineOnly
[x] isOversized - is:oversized query, but it's patched from mtgjson version
[x] isPromo - I'm not sure this flag is any better than our logic
[x] isRebalanced - Alchemy not currently supported
[x] isReprint - is:reprint query, but it's calculated and not taken directly from mtgjson data; I don't think it's worth displaying
[x] isReserved - displayed, is:reserved
[x] isStarter - "This property is deprecated and no longer provides any useful information.", so skipping
[x] isStorySpotlight - is:spotlight, but not displayed
[x] isTextless - is:textless, doesn't need extra display as it's obvious from the image
[x] isTimeshifted
[x] keywords - keyword: query, not currently displayed as it should be obvious from the card text
[x] language - added display in card details, is:foreign, no query for individual language
[x] layout - layout: query, no need to display as it's obvious from the image
[x] leadershipSkills - is:commander and is:brawler are calculated based on rules, and we don't support oathbreaker. No separate display for this, but it's either obvious from card or text, so it's probably fine.
[x] legalities - we don't use mtgjson data, we have our own data that also includes legality history; ./bin/report_legality_differences script tags differences (but half the time it's mtgjson errors)
[x] life - displayed, ~query missing~, life: query added
[x] loyalty - displayed, loyalty: query
[x] manaCost - mana: query, displayed
[x] manaValue - mv: query, no need to display as it's obvious from mana cost
[x] name - bareword query, and n: query, displayed
[x] number - displayed, and number: query
[x] originalPrintings - Alchemy is not currently supported
[x] originalReleaseDate - displayed, limited querying with year=, and full querying with print:
[x] originalText - there were requests for this before, but it ended up being out of scope, might reconsider later
[x] originalType - there were requests for this before, but it ended up being out of scope, might reconsider later
[x] otherFaceIds - internal ids, not needed
[x] power - displayed and pow: query
[x] printings - redundant
[x] promoTypes - promo: query but not displayed
[x] purchaseUrls - not meaningful
[x] rarity - displayed and r: query
[x] relatedCards - this would be useful for Alchemy, but it's currently out of scope
[x] rebalancedPrintings - Alchemy not currently supported
[x] rulings - displayed, rulings: query
[x] securityStamp - displayed, stamp: query
[x] setCode - set displayed and e: query and all related queries
[x] side - it feels redundant with how things work, side:a queries, is:front is:back is:primary is:secondary and number:/a/ etc. cover all uses
[x] signature - ~no query, not displayed~, sig: query and displayed
[x] subsets - SLD only, might be worth displaying (or alternatively as SLD "precons"?); as it's just one set, for now I decided to add subset information to display but no way to query it
[x] subtypes - t: query and displayed
[x] supertypes - t: query and displayed
[x] text - o: query, displayed
[x] toughness - displayed and tou: query
[x] type - t: query and displayed
[x] types - t: query and displayed
[x] uuid - don't want it exposed
[x] variations - internal uuids, not relevant
[x] watermark - watermark: query and displayed
There are other properties like querying by set etc. but this is a good start.
(checking the list in progress)
Found issues to fix
[x] attractionLights - query missing
[x] defense - displayed, no query
[x] foreignData - use faceName instead of name if applicable, right now all multipart foreign names are "a // b" due to mtgjson schema changes
[x] hand - query missing
[x] hasNonFoil - it's probably worth displaying information if card doesn't have nonfoil version
[x] isStorySpotlight - display status
[x] isOversized - needs display, as card image looks the same as non-oversized version
[x] life - query missing
[x] signature - display missing
[x] signature - query missing
[x] subsets - display missing
[x] promoTypes - display missing
[x] promoTypes - promo:* missing (is:promo is not necessarily the same, due to different data source)
[x] isTimeshifted - query is:timeshifted needs fixing as it misses all future frame reprints after Future Sight block - changed to use mtgjson data
All right, that's all. I added a lot of new query types and displayed information as part of this, so it was very useful, and might be worth repeating in a year or so.
mtgjson keeps adding new properties, and I haven't really been checked them proactively.
It's probably worth making a list of all the properties that are not searchable, displayed, or both.
We'll likely end up intentionally skipping some, but it's good to have a list. For example rapidly changing data like prices and EDHRec rankings would require a bit too much support.
There's also some properties that are calculated locally (like
is:reprint
) that could be moved to mtgjson. For example originally I even maintained all foiling data, that was a good thing to outsource.Source for such a list: https://mtgjson.com/data-models/
Properties to check
Here's the list from card-set:
allowed_in_any_number?
, so Seven Dwarves not covered, but it's just one card, so I think I'm OK skipping itThere are other properties like querying by set etc. but this is a good start.
(checking the list in progress)
Found issues to fix
(generating the list in progress)