mtgjson / mtgjson-website

MTGJSON Documentation Front-End Application built with VitePress
https://mtgjson.com
MIT License
37 stars 25 forks source link

Type of sourceProducts property in Card (Deck) data model #642

Open grim7reaper opened 3 months ago

grim7reaper commented 3 months ago

Location of update needed

Card (Deck)

What does the documentation look like?

A list of associated Sealed Product uuid properties where this card can be found in.
- Type: `string[]`
- Introduced: `v5.2.2`

What should the documentation look like?

Not 100% sure. On one hand it's clearly not a list of Sealed Product uuid, it looks like more a Source Products object. On the other hand, properties of Source Products are non-optional but we sometimes have only one here. So maybe we should update the Source Products documentation as well?

Example with the card Tetravus from AzaarLichlord_PAST.json, where foil is missing:

{
  "artist": "Mark Tedin",
  "artistIds": ["9ee9a9cc-c09e-486f-918b-69f80cbc4188"],
  "availability": ["paper"],
  "boosterTypes": ["default"],
  "borderColor": "black",
  "colorIdentity": [],
  "colors": [],
  "convertedManaCost": 6.0,
  "count": 3,
  "edhrecRank": 19723,
  "edhrecSaltiness": 0.45,
  "finishes": ["nonfoil"],
  "foreignData": [],
  "frameVersion": "1993",
  "hasFoil": false,
  "hasNonFoil": true,
  "identifiers": {
    "cardKingdomId": "14070",
    "cardsphereId": "5087",
    "mcmId": "6908",
    "mcmMetaId": "5904",
    "mtgjsonV4Id": "d27b4d2e-d801-5c80-a127-e1d7aafe0adb",
    "multiverseId": "1027",
    "scryfallCardBackId": "0aeebaf5-8c7d-4636-9e82-8c27447861f7",
    "scryfallId": "23eb19f9-2e8f-4bf0-9bf8-868e6da70e2d",
    "scryfallIllustrationId": "46f9d0c3-7468-4ecf-b86e-efe79a067960",
    "scryfallOracleId": "85255c26-4e74-4cf0-91a6-78ddba5abdc6",
    "tcgplayerProductId": "3327"
  },
  "isFoil": false,
  "keywords": ["Flying"],
  "language": "English",
  "layout": "normal",
  "legalities": {
    "commander": "Legal",
    "duel": "Legal",
    "legacy": "Legal",
    "oathbreaker": "Legal",
    "oldschool": "Legal",
    "paupercommander": "Restricted",
    "penny": "Legal",
    "predh": "Legal",
    "premodern": "Legal",
    "vintage": "Legal"
  },
  "manaCost": "{6}",
  "manaValue": 6.0,
  "name": "Tetravus",
  "number": "71",
  "originalText": "Flying\nTetravus gets three +1/+1 counters when cast. During your upkeep, you may move each of these counters on or off Tetravus.  Counters moved off of Tetravus become independent 1/1 flying artifact creatures.  If such a creature dies, the counter is removed from play.  Such creatures may not have enchantments cast on them, and they do not share any enchantments on Tetravus.",
  "originalType": "Artifact Creature",
  "power": "1",
  "printings": ["4BB", "4ED", "ATQ", "ME4", "REN", "RIN"],
  "purchaseUrls": {
    "cardKingdom": "https://mtgjson.com/links/399352af19343781",
    "cardmarket": "https://mtgjson.com/links/e67891e1789deba7",
    "tcgplayer": "https://mtgjson.com/links/55f438d136853b5c"
  },
  "rarity": "rare",
  "rulings": [
    {
      "date": "2004-10-04",
      "text": "Any +1/+1 counter which is on this card can be turned into a Tetravite token. It does not care where the +1/+1 counter came from."
    },
    {
      "date": "2004-10-04",
      "text": "If the Tetravus is destroyed when the Tetravites are off the card, they are not destroyed, they are just orphaned."
    },
    {
      "date": "2004-10-04",
      "text": "Only Tetravites from this specific Tetravus may be used for the ability. Ones from a different Tetravus can't."
    },
    {
      "date": "2008-08-01",
      "text": "This card now has two upkeep-triggered abilities. Its controller chooses the order they are put on the stack, and thus the order in which they resolve each upkeep."
    }
  ],
  "setCode": "ATQ",
  "sourceProducts": {
    "nonfoil": ["39d06ba3-a851-5539-8fdc-146e92ba5177"]
  },
  "subtypes": ["Construct"],
  "supertypes": [],
  "text": "Flying\nTetravus enters with three +1/+1 counters on it.\nAt the beginning of your upkeep, you may remove any number of +1/+1 counters from Tetravus. If you do, create that many 1/1 colorless Tetravite artifact creature tokens. They each have flying and \"This creature can't be enchanted.\"\nAt the beginning of your upkeep, you may exile any number of tokens created with Tetravus. If you do, put that many +1/+1 counters on Tetravus.",
  "toughness": "1",
  "type": "Artifact Creature — Construct",
  "types": ["Artifact", "Creature"],
  "uuid": "23d749b2-d958-51e5-a251-9ae96ae09bbf"
}

Additional context

I'm using MTGJSON 5.2.2+20240814

ZeldaZach commented 2 months ago

Any insights @axxroytovu

axxroytovu commented 2 months ago

You designed this 😆 https://github.com/mtgjson/mtg-sealed-content/commit/5402870e8df9c9721a8ca8491bda24bd158f06e9

Anyway, it looks like a dictionary with possible keys "foil" and "nonfoil", each with a list of strings that contain the uuids of products where that finish can be found