dev.malpercio.cards.set

cards.malpercio.dev

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "attribute": {
      "properties": {
        "name": {
          "maxLength": 64,
          "type": "string"
        },
        "value": {
          "maxLength": 256,
          "type": "string"
        }
      },
      "required": [
        "name",
        "value"
      ],
      "type": "object"
    },
    "cardDef": {
      "properties": {
        "artists": {
          "description": "Who made the art. A provider's claim; see #credit.",
          "items": {
            "ref": "#credit",
            "type": "ref"
          },
          "maxLength": 8,
          "type": "array"
        },
        "asset": {
          "accept": [
            "image/*"
          ],
          "description": "Canonical full-size art, stored in the provider repo so the PDS retains the blob. assetCid is its fingerprint.",
          "maxSize": 5000000,
          "type": "blob"
        },
        "assetCid": {
          "description": "CID of the canonical full-size art. Owner copies must match.",
          "format": "cid",
          "type": "string"
        },
        "attributes": {
          "description": "Free-form stats or flavor fields (team, position, year...).",
          "items": {
            "ref": "#attribute",
            "type": "ref"
          },
          "type": "array"
        },
        "cardId": {
          "description": "Stable identifier within this set, e.g. 'the_one_ring'.",
          "maxLength": 64,
          "type": "string"
        },
        "description": {
          "maxLength": 2048,
          "type": "string"
        },
        "flavor": {
          "description": "Flavor text shown with the card. Separate from description, which is reserved for rules text.",
          "maxGraphemes": 200,
          "maxLength": 2000,
          "type": "string"
        },
        "icon": {
          "accept": [
            "image/*"
          ],
          "maxSize": 1000000,
          "type": "blob"
        },
        "iconCid": {
          "format": "cid",
          "type": "string"
        },
        "maxSupply": {
          "description": "Hard cap on gives for this cardId across all variants. Omit for unlimited.",
          "minimum": 1,
          "type": "integer"
        },
        "number": {
          "description": "Collector number within the set, printed with the set code (e.g. EXM 001). Explicit so editing the cards array never renumbers cards.",
          "minimum": 1,
          "type": "integer"
        },
        "rarity": {
          "ref": "#rarity",
          "type": "ref"
        },
        "title": {
          "maxLength": 128,
          "type": "string"
        },
        "variants": {
          "description": "Optional finishes (foil, etc). Each may carry its own cap and art.",
          "items": {
            "ref": "#variantDef",
            "type": "ref"
          },
          "type": "array"
        }
      },
      "required": [
        "cardId",
        "title",
        "rarity",
        "asset",
        "assetCid"
      ],
      "type": "object"
    },
    "credit": {
      "description": "Attribution for card art. Give did when the artist has an atproto identity, name otherwise (at least one). Listed by the provider, so it is a claim until the artist confirms it from their own repo.",
      "properties": {
        "did": {
          "format": "did",
          "type": "string"
        },
        "name": {
          "description": "Display name, for artists without a DID or as a fallback.",
          "maxGraphemes": 64,
          "maxLength": 256,
          "type": "string"
        },
        "role": {
          "description": "What they did, when a card has more than one artist.",
          "knownValues": [
            "art",
            "animation",
            "color"
          ],
          "maxLength": 64,
          "type": "string"
        }
      },
      "type": "object"
    },
    "main": {
      "description": "A card set manifest, published by a provider. Declares every card in the set with its rarity, supply cap, and canonical art. Print runs are auditable against this record.",
      "key": "tid",
      "record": {
        "properties": {
          "cards": {
            "items": {
              "ref": "#cardDef",
              "type": "ref"
            },
            "minLength": 1,
            "type": "array"
          },
          "code": {
            "description": "Short set code printed on every card, e.g. 'EXM'. Uppercase letters and digits. A reissue is a new set record with a new code, tied to the original by series.",
            "maxLength": 8,
            "type": "string"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "maxLength": 2048,
            "type": "string"
          },
          "name": {
            "maxLength": 128,
            "type": "string"
          },
          "packDefs": {
            "items": {
              "ref": "#packDef",
              "type": "ref"
            },
            "type": "array"
          },
          "series": {
            "description": "Optional grouping across sets (e.g. a season or year).",
            "maxLength": 128,
            "type": "string"
          }
        },
        "required": [
          "name",
          "cards",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "odds": {
      "properties": {
        "rarity": {
          "ref": "#rarity",
          "type": "ref"
        },
        "variantId": {
          "description": "Weights this variant of cards of this rarity. Omit to weight the base cards.",
          "maxLength": 64,
          "type": "string"
        },
        "weight": {
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "rarity",
        "weight"
      ],
      "type": "object"
    },
    "packDef": {
      "properties": {
        "asset": {
          "accept": [
            "image/*"
          ],
          "description": "Sealed pack art.",
          "maxSize": 5000000,
          "type": "blob"
        },
        "assetCid": {
          "description": "Sealed pack art.",
          "format": "cid",
          "type": "string"
        },
        "cardCount": {
          "minimum": 1,
          "type": "integer"
        },
        "description": {
          "maxLength": 2048,
          "type": "string"
        },
        "maxSupply": {
          "minimum": 1,
          "type": "integer"
        },
        "odds": {
          "description": "Weights for drawing pack contents, per rarity and optionally per variant. Printings not listed have weight 0. Omit for a uniform draw over base cards.",
          "items": {
            "ref": "#odds",
            "type": "ref"
          },
          "type": "array"
        },
        "packId": {
          "maxLength": 64,
          "type": "string"
        },
        "title": {
          "maxLength": 128,
          "type": "string"
        }
      },
      "required": [
        "packId",
        "title",
        "cardCount"
      ],
      "type": "object"
    },
    "rarity": {
      "knownValues": [
        "common",
        "uncommon",
        "rare",
        "legendary",
        "unique"
      ],
      "type": "string"
    },
    "variantDef": {
      "properties": {
        "artists": {
          "description": "Overrides the card's artists for this variant, e.g. when an animated version has its own animator.",
          "items": {
            "ref": "#credit",
            "type": "ref"
          },
          "maxLength": 8,
          "type": "array"
        },
        "asset": {
          "accept": [
            "image/*"
          ],
          "description": "Overrides the card art for this variant.",
          "maxSize": 5000000,
          "type": "blob"
        },
        "assetCid": {
          "description": "Overrides the card's assetCid for this variant.",
          "format": "cid",
          "type": "string"
        },
        "flavor": {
          "description": "Overrides the card's flavor for this variant.",
          "maxGraphemes": 200,
          "maxLength": 2000,
          "type": "string"
        },
        "icon": {
          "accept": [
            "image/*"
          ],
          "maxSize": 1000000,
          "type": "blob"
        },
        "iconCid": {
          "format": "cid",
          "type": "string"
        },
        "maxSupply": {
          "minimum": 1,
          "type": "integer"
        },
        "title": {
          "maxLength": 128,
          "type": "string"
        },
        "variantId": {
          "description": "e.g. 'foil', 'signed'.",
          "maxLength": 64,
          "type": "string"
        }
      },
      "required": [
        "variantId"
      ],
      "type": "object"
    }
  },
  "id": "dev.malpercio.cards.set",
  "lexicon": 1
}

Validate Record

Validate a record against dev.malpercio.cards.set

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:kmg2eqexpdefljft34crzesc
CID
bafyreiga4ogn3gz4cbpilnkiitr36p5tmba3wnzhtodyfvakqqjbdi25a4
Indexed At
2026-10-20 23:53 UTC
AT-URI
at://did:plc:kmg2eqexpdefljft34crzesc/com.atproto.lexicon.schema/dev.malpercio.cards.set

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A specific printing of a Magic: The Gathering card

  • Issuance of a single card instance or a sealed pack, written by the provider into its own repo. This record is the root of a card's provenance chain and its at-URI is the card's permanent identity. The rkey is a TID, so…

  • org.swappulse.collectionEntry recordnot from the namespace authority

    A Pokémon TCG card held in a collector's digital binder. Mirrored from the SwapPulse CollectionEntry entity so collection state is portable across PDSs.

Lexicon Garden

@