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
-
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), )
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
-
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), )
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
-
CardPreview( previewed_at: option.Option(Int), source_uri: option.Option(uri.Uri), source: option.Option(String), )
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
-
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), )
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
-
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, )
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
-
PurchaseUris( tcgplayer: option.Option(uri.Uri), cardmarket: option.Option(uri.Uri), cardhoarder: option.Option(uri.Uri), )
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
-
RelatedCardObject( id: String, component: RelatedCardComponent, name: String, type_line: String, uri: uri.Uri, )
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
-
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), )
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_finish_schema() -> glon.JsonSchema(CardFinish)
pub fn card_legality_schema() -> glon.JsonSchema(CardLegality)
pub fn card_preview_schema() -> glon.JsonSchema(CardPreview)
pub fn card_price_schema() -> glon.JsonSchema(CardPrice)
pub fn card_rarity_schema() -> glon.JsonSchema(CardRarity)
pub fn card_schema() -> glon.JsonSchema(Card)
pub fn legalities_schema() -> glon.JsonSchema(Legalities)
pub fn purchase_uris_schema() -> glon.JsonSchema(PurchaseUris)
pub fn related_card_component_schema() -> glon.JsonSchema(
RelatedCardComponent,
)
pub fn related_card_object_schema() -> glon.JsonSchema(
RelatedCardObject,
)
pub fn related_uris_schema() -> glon.JsonSchema(RelatedUris)
pub fn security_stamp_schema() -> glon.JsonSchema(SecurityStamp)