a trusted, blockchain-powered way to own, vault, and trade vintage records

CORE RULES

1️⃣ Core Rule

"itemType": "RecordAlbum"

That’s the gate.
Everything else here is only for tokens where itemType="RecordAlbum".


2️⃣ RecordAlbum v1.0 – Field List

A. Identity & Music Info

KeyTypeRequiredExampleNotes
albumTitlestringyes“Born to Run”Human-facing title on the jacket.
primaryArtiststringyes“Bruce Springsteen”Main performer / band.
featuringArtistsstring[]no[“The E Street Band”]Guests / featured.
releaseYearnumberno1975Original release year (not pressing year if unknown).
genrestringno“Rock”Top-level genre.
subgenrestringno“Classic Rock”Optional refinement.
labelNamestringno“Columbia Records”Record label on spine/label.
catalogNumberstringno“PC 33795”Catalog number on spine/label.
barcodestringno“07464337951”Printed barcode if present.
matrixRunoutstringno“PAL 33795-1A”Etched/deadwax info if you ever want that depth.

B. Format & Physical Structure

KeyTypeRequiredExampleNotes
albumFormatstring (enum)yes“12inchLP”"12inchLP""7inch45""10inchEP""BoxSet""Other".
speedRPMnumberno3333 / 45 / 78 where known.
discCountnumberno2Total discs in this album (1, 2, 3…).
isDoubleLPbooleannotrueConvenience boolie mirroring discCount > 1.
isGatefoldbooleannotrueDoes the jacket open like a book?
isPictureDiscbooleannofalseVinyl has printed image.
vinylColorstringno“black”"black""red""blue""marbled""clear""pictureDisc", etc.
editionLabelstringno“First Pressing”Free-text: “First Pressing”, “Reissue”, “Anniversary Edition”.
pressingRegionstringno“US”"US""Canada""UK""EU""Japan", etc.

C. Condition & Components

KeyTypeRequiredExampleNotes
conditionCoverGradestringno“VG+”If you adopt grading: "NM""EX""VG+""VG""G""P".
conditionVinylGradestringno“EX”Same scale, for the disc.
isSealedbooleannofalseSealed in factory wrap.
isCoverOnlybooleannofalseJacket present, vinyl missing.
isVinylOnlybooleannofalseVinyl present, no jacket.
includesOriginalInnerSleevebooleannotruePrinted or branded inner sleeve.
includesInsertbooleannotrueLyric sheet, poster, booklet, etc.
insertDescriptionstringno“Lyric sheet + tour photo insert”Short free text.
isPromoCopybooleannofalseGold stamp / “For Promotion Only” type.

D. Signature / Autograph Info (RecordAlbum-specific)

You’ll have global keys like isAutographedsignedBycertNumber, etc., but these are album-specific nuances:

KeyTypeRequiredExampleNotes
signedOnstring (enum)no“cover”"cover""vinyl""insert""label""other".
signedLocationNotesstringno“Front cover lower right, silver paint pen”Human-readable specificity.
inscriptionTextstringno"To Mark - Keep on rockin'!"If there’s a readable inscription.

E. Highlight & Story Hooks (searchable, but blobby-friendly)

These keep your “story brain” alive but still structured.

KeyTypeRequiredExampleNotes
trackHighlightstringno“Includes ‘Thunder Road’ and ‘Jungleland’”Key songs people search by.
eraTagstringno“1970s”Simple era anchor: "1960s""1970s", etc.

3️⃣ Example JSON Snippet – Signed Gatefold LP

Here’s a real-ish example in the style you’re building:

{
"itemType": "RecordAlbum",
"albumTitle": "Born to Run",
"primaryArtist": "Bruce Springsteen",
"featuringArtists": ["The E Street Band"],
"releaseYear": 1975,
"genre": "Rock",
"subgenre": "Classic Rock",
"labelName": "Columbia Records",
"catalogNumber": "PC 33795",
"barcode": "07464337951",
"matrixRunout": "PAL 33795-1A",
"albumFormat": "12inchLP",
"speedRPM": 33,
"discCount": 1,
"isDoubleLP": false,
"isGatefold": true,
"isPictureDisc": false,
"vinylColor": "black",
"editionLabel": "First Pressing",
"pressingRegion": "US",
"conditionCoverGrade": "EX",
"conditionVinylGrade": "VG+",
"isSealed": false,
"isCoverOnly": false,
"isVinylOnly": false,
"includesOriginalInnerSleeve": true,
"includesInsert": true,
"insertDescription": "Original lyrics inner sleeve with band photo",
"isPromoCopy": false,
"isAutographed": true,
"signedBy": ["Bruce Springsteen"],
"signedOn": "cover",
"signedLocationNotes": "Front cover, centered, silver paint pen",
"inscriptionText": "To Mike - All the best, Bruce",
"trackHighlight": "Includes 'Thunder Road' and 'Jungleland'",
"eraTag": "1970s"
}

Drop that into a token alongside your global CollectorLINK keys (vaultLocation, vaultTag, certNumber, acquisitionSource, etc.) and you’ve got a v1.0 RecordAlbum token that:

  • searches cleanly
  • indexes beautifully
  • is future-proof
  • lets VinylLINK filter instantly on itemType="RecordAlbum" and all these enums/boolies.

If you want a tight enum list (e.g., allowed values for albumFormatvinylColorsignedOn, grading scale) for Divya to hard-code into the indexer / admin UI, I can spit that out as a v1.0 “value dictionary” next.

You said:

yes, tight enum list please.

ChatGPT said:

Absolutely — here is the tight, production-ready enum list for all RecordAlbum-specific fields.
This is the version Divya can hard-code directly into:

  • the indexer
  • the admin UI
  • validation logic
  • dropdown menus
  • search filters

This keeps the system clean, structured, and unbreakable as supply scales.


🎯 RECORDALBUM ENUM PACK (v1.0)

All enums formatted exactly as you would store them in JSON — camelCase, machine-safe, no spaces.


1️⃣ albumFormat (enum)

The core format groupings.

"12inchLP"
"7inch45"
"10inchEP"
"BoxSet"
"PictureDisc"
"Other"

Notes:

  • “12inchLP” covers all full-length albums.
  • “7inch45” = singles.
  • “10inchEP” = older or specialty EPs.
  • “BoxSet” = multi-disc or deluxe artifacts.
  • “PictureDisc” as format (material), but note also isPictureDisc boolie.

2️⃣ speedRPM (enum)

Only use enum if known — otherwise omit the key entirely.

33
45
78

3️⃣ vinylColor (enum)

A clean starter set. Expand later if needed.

"black"
"clear"
"white"
"red"
"blue"
"green"
"yellow"
"marbled"
"splatter"
"translucent"
"pictureDisc"
"other"

4️⃣ pressingRegion (enum)

"US"
"Canada"
"UK"
"EU"
"Japan"
"Australia"
"Other"

5️⃣ conditionCoverGrade (enum)

Record-collector standard grading.

"NM" // Near Mint
"EX" // Excellent
"VG+" // Very Good Plus
"VG" // Very Good
"G" // Good
"P" // Poor

6️⃣ conditionVinylGrade (enum)

Same scale; keep parallel for indexing.

"NM"
"EX"
"VG+"
"VG"
"G"
"P"

7️⃣ signedOn (enum)

Where the autograph physically sits.

"cover"
"vinyl"
"insert"
"label"
"innerSleeve"
"other"

8️⃣ eraTag (enum)

Useful for ERA search buckets.

"1950s"
"1960s"
"1970s"
"1980s"
"1990s"
"2000s"
"2010s"
"2020s"
"Other"

9️⃣ genre (enum)

Top-level only — don’t go deep.
Collectors will search top-level genres FAR more than micro-genres.

"Rock"
"Pop"
"Jazz"
"Blues"
"Country"
"Metal"
"Punk"
"HipHop"
"R&B"
"Electronic"
"Classical"
"Soundtrack"
"Folk"
"Reggae"
"Other"

🔟 subgenre (enum)

Optional and expandable later.
Start with this controlled list:

"ClassicRock"
"HardRock"
"Alternative"
"Indie"
"ProgressiveRock"
"NewWave"
"HeavyMetal"
"ThrashMetal"
"PunkRock"
"HipHopClassic"
"HipHopGoldenEra"
"JazzFusion"
"Bebop"
"Soul"
"Funk"
"CountryClassic"
"ElectronicHouse"
"ElectronicTechno"
"ReggaeRoots"
"SoundtrackFilm"
"Other"

You do NOT need to expose all of these from day one — the indexer can support sparse usage.


1️⃣1️⃣ albumFormat-specific flags (boolies)

These are NOT enums but required in the schema:

isGatefold: true/false
isPictureDisc: true/false
isCoverOnly: true/false
isVinylOnly: true/false
isSealed: true/false
includesOriginalInnerSleeve: true/false
includesInsert: true/false
isPromoCopy: true/false

These boolies multiply the power of your enums.


⭐ Example cluster for Divya to code:

Here’s how you might hand this to her cleanly:

{
"enums": {
"albumFormat": ["12inchLP", "7inch45", "10inchEP", "BoxSet", "PictureDisc", "Other"],
"speedRPM": [33, 45, 78],
"vinylColor": ["black", "clear", "white", "red", "blue", "green", "yellow", "marbled", "splatter", "translucent", "pictureDisc", "other"],
"pressingRegion": ["US", "Canada", "UK", "EU", "Japan", "Australia", "Other"],
"conditionGrade": ["NM", "EX", "VG+", "VG", "G", "P"],
"signedOn": ["cover", "vinyl", "insert", "label", "innerSleeve", "other"],
"eraTag": ["1950s", "1960s", "1970s", "1980s", "1990s", "2000s", "2010s", "2020s", "Other"],
"genre": ["Rock", "Pop", "Jazz", "Blues", "Country", "Metal", "Punk", "HipHop", "R&B", "Electronic", "Classical", "Soundtrack", "Folk", "Reggae", "Other"],
"subgenre": ["ClassicRock", "HardRock", "Alternative", "Indie", "ProgressiveRock", "NewWave", "HeavyMetal", "ThrashMetal", "PunkRock", "HipHopClassic", "HipHopGoldenEra", "JazzFusion", "Bebop", "Soul", "Funk", "CountryClassic", "ElectronicHouse", "ElectronicTechno", "ReggaeRoots", "SoundtrackFilm", "Other"]
}
}

This is ready to implement as the v1.0 RecordAlbum enum dictionary.


If you want, I can now prepare:

✔ RecordAlbum v1.0: Validation Ruleset

(what is required, what is optional, what must match enum, what must be boolean)

Or:

✔ RecordAlbum v1.0: Admin UI field map

(the exact fields Divya should show in the minting dashboard)

Which one do you want next?