scruffy/card

Types describing Scryfall’s Card object and the smaller types it is made up of.

See https://scryfall.com/docs/api/cards for the upstream reference.

Types

A single Magic: The Gathering card, as returned by the Scryfall API.

pub type Card {
  Card(
    arena_id: option.Option(Int),
    id: String,
    lang: language.Language,
    mtgo_id: option.Option(Int),
    mtgo_foil_id: option.Option(Int),
    multiverse_ids: option.Option(List(Int)),
    resource_id: option.Option(String),
    tcgplayer_id: option.Option(Int),
    tcgplayer_etched_id: option.Option(Int),
    cardmarket_id: option.Option(Int),
    layout: layout.Layout,
    oracle_id: option.Option(String),
    prints_search_uri: uri.Uri,
    rulings_uri: uri.Uri,
    scryfall_uri: uri.Uri,
    uri: uri.Uri,
    all_parts: option.Option(List(RelatedCardObject)),
    card_faces: option.Option(List(CardFace)),
    cmc: Float,
    color_identity: List(color.Color),
    color_indicator: option.Option(List(color.Color)),
    colors: option.Option(List(color.Color)),
    defense: option.Option(String),
    edhrec_rank: option.Option(Int),
    game_changer: option.Option(Bool),
    hand_modifier: option.Option(String),
    keywords: List(String),
    legalities: Legalities,
    life_modifier: option.Option(String),
    loyalty: option.Option(String),
    mana_cost: option.Option(String),
    name: String,
    oracle_text: option.Option(String),
    penny_rank: option.Option(Int),
    power: option.Option(String),
    produced_mana: option.Option(List(color.Color)),
    reserved: Bool,
    toughness: option.Option(String),
    type_line: String,
    artist: option.Option(String),
    artist_ids: option.Option(List(String)),
    attraction_lights: option.Option(List(Int)),
    booster: Bool,
    border_color: CardBorderColor,
    card_back_id: option.Option(String),
    collector_number: String,
    content_warning: option.Option(Bool),
    digital: Bool,
    finishes: List(CardFinish),
    flavor_name: option.Option(String),
    flavor_text: option.Option(String),
    frame_effects: option.Option(List(frame.FrameEffect)),
    frame: frame.Frame,
    full_art: Bool,
    games: List(game.MtgGame),
    highres_image: Bool,
    illustration_id: option.Option(String),
    image_status: image.ImageStatus,
    image_uris: option.Option(image.ImageUris),
    oversized: Bool,
    prices: CardPrice,
    printed_name: option.Option(String),
    printed_text: option.Option(String),
    printed_type_line: option.Option(String),
    promo: Bool,
    promo_types: option.Option(List(String)),
    purchase_uris: option.Option(PurchaseUris),
    rarity: CardRarity,
    related_uris: RelatedUris,
    released_at: Int,
    reprint: Bool,
    scryfall_set_uri: uri.Uri,
    set_name: String,
    set_search_uri: uri.Uri,
    set_type: String,
    set_uri: uri.Uri,
    set: String,
    set_id: String,
    story_spotlight: Bool,
    textless: Bool,
    variation: Bool,
    variation_of: option.Option(String),
    security_stamp: option.Option(SecurityStamp),
    watermark: option.Option(String),
    preview: option.Option(CardPreview),
  )
}

Constructors

The color of a card’s border.

pub type CardBorderColor {
  Black
  White
  Borderless
  Yellow
  Silver
  Gold
}

Constructors

  • Black
  • White
  • Borderless
  • Yellow
  • Silver
  • Gold

One face of a multi-faced card (e.g. a transform or split card).

pub type CardFace {
  CardFace(
    artist: option.Option(String),
    artist_id: option.Option(String),
    cmc: option.Option(Float),
    color_indicator: option.Option(List(color.Color)),
    colors: option.Option(List(color.Color)),
    defense: option.Option(String),
    flavor_text: option.Option(String),
    illustration_id: option.Option(String),
    image_uris: option.Option(image.ImageUris),
    layout: option.Option(layout.Layout),
    loyalty: option.Option(String),
    mana_cost: String,
    name: String,
    oracle_id: option.Option(String),
    oracle_text: option.Option(String),
    power: option.Option(String),
    printed_name: option.Option(String),
    printed_text: option.Option(String),
    printed_type_line: option.Option(String),
    toughness: option.Option(String),
    type_line: option.Option(String),
    watermark: option.Option(String),
  )
}

Constructors

A physical finish a card printing is available in.

pub type CardFinish {
  Foil
  NonFoil
  Etched
}

Constructors

  • Foil
  • NonFoil
  • Etched

A card’s legal status in a particular format.

pub type CardLegality {
  Legal
  NotLegal
  Restricted
  Banned
}

Constructors

  • Legal
  • NotLegal
  • Restricted
  • Banned

Details of a card’s preview / spoiler, if it was previewed before its set released.

pub type CardPreview {
  CardPreview(
    previewed_at: option.Option(Int),
    source_uri: option.Option(uri.Uri),
    source: option.Option(String),
  )
}

Constructors

A card’s prices in various currencies, as decimal strings.

pub type CardPrice {
  CardPrice(
    usd: option.Option(String),
    usd_foil: option.Option(String),
    usd_etched: option.Option(String),
    eur: option.Option(String),
    eur_foil: option.Option(String),
    eur_etched: option.Option(String),
    tix: option.Option(String),
  )
}

Constructors

A card’s rarity.

pub type CardRarity {
  Common
  Uncommon
  Rare
  Special
  Mythic
  Bonus
}

Constructors

  • Common
  • Uncommon
  • Rare
  • Special
  • Mythic
  • Bonus

A card’s legality across every format Scryfall currently tracks.

Scryfall represents this as an object keyed by format name rather than a list, so each known format gets its own field here. New formats will need a new field added when Scryfall starts reporting them.

pub type Legalities {
  Legalities(
    standard: CardLegality,
    future: CardLegality,
    historic: CardLegality,
    timeless: CardLegality,
    gladiator: CardLegality,
    pioneer: CardLegality,
    modern: CardLegality,
    legacy: CardLegality,
    pauper: CardLegality,
    vintage: CardLegality,
    penny: CardLegality,
    commander: CardLegality,
    oathbreaker: CardLegality,
    standardbrawl: CardLegality,
    brawl: CardLegality,
    competitivebrawl: CardLegality,
    alchemy: CardLegality,
    paupercommander: CardLegality,
    duel: CardLegality,
    oldschool: CardLegality,
    premodern: CardLegality,
    predh: CardLegality,
    tlr: CardLegality,
  )
}

Constructors

The purchase links Scryfall provides for a card, keyed by storefront.

pub type PurchaseUris {
  PurchaseUris(
    tcgplayer: option.Option(uri.Uri),
    cardmarket: option.Option(uri.Uri),
    cardhoarder: option.Option(uri.Uri),
  )
}

Constructors

How a RelatedCardObject relates to the card that references it.

pub type RelatedCardComponent {
  Token
  MeldPart
  MeldResult
  ComboPiece
}

Constructors

  • Token
  • MeldPart
  • MeldResult
  • ComboPiece

A reference to a card related to this one, such as a token it creates.

pub type RelatedCardObject {
  RelatedCardObject(
    id: String,
    component: RelatedCardComponent,
    name: String,
    type_line: String,
    uri: uri.Uri,
  )
}

Constructors

Third-party resource links related to a card, keyed by site.

pub type RelatedUris {
  RelatedUris(
    gatherer: option.Option(uri.Uri),
    tcgplayer_infinite_articles: option.Option(uri.Uri),
    tcgplayer_infinite_decks: option.Option(uri.Uri),
    edhrec: option.Option(uri.Uri),
  )
}

Constructors

The security stamp printed on a card, if any.

pub type SecurityStamp {
  Oval
  Triangle
  Acorn
  Circle
  Arena
  Heart
}

Constructors

  • Oval
  • Triangle
  • Acorn
  • Circle
  • Arena
  • Heart

Values

pub fn card_border_color_schema() -> glon.JsonSchema(
  CardBorderColor,
)
pub fn card_face_schema() -> glon.JsonSchema(CardFace)
pub fn card_price_schema() -> glon.JsonSchema(CardPrice)
pub fn card_schema() -> glon.JsonSchema(Card)
pub fn related_card_object_schema() -> glon.JsonSchema(
  RelatedCardObject,
)
Search Document