Skip to main content

Release & Sales Mapping

Use this page as the canonical crosswalk between product language, API types, and Verse Elements integration requirements.

Release Model Mapping

Product languagePrimary GraphQL signalKey fieldsPurchase payload requirements
Generative releaseArtwork.artworkKind -> GenerativeProjectArtworkKindiframeUrl, aspectRatio, allowUserCurationStandard openPurchaseDialog() payload
Artist-curated releaseArtwork.artworkKind -> ProjectArtworkKinditems, allowUserSelection, withRepetitionsIf allowUserSelection=true, pass userInput[{ key: "$curated_project:item_id", value: <ProjectItem.id> }]
Collector-curated releaseArtwork.artworkKind -> GenerativeProjectArtworkKind with curated flow in ElementsCollector saves preferred output before checkoutCall createBookmark() and pass userInput[{ key: "$user_hash", value: <signedToken> }]
Edition / fixed media releaseArtwork.artworkKind may be null or non-project-specificListing strategy determines sale flowStandard openPurchaseDialog() payload
Unique 1/1 releaseUsually single-edition configuration with auction/listing strategyStrategy and listing windowsStandard payload, often auction UX

Primary Sale Strategy Mapping

Product languageGraphQL type (PrimaryMarketListing.strategy)Key fieldsIntegration notes
Limited EditionPMBuyNowLimitedEditionStrategyprice, maxEditions, reservedEditions, stats.issuedEditionsSupports add-ons like Dutch Auction and Decreasing Supply
Open EditionPMBuyNowOpenEditionStrategyprice, stats.issuedEditionsTime-window driven, no fixed max editions in strategy
1/1 AuctionPMAuctionStrategyminimumBid, bids, stats, extensionSettingsBidding flow handled by purchase dialog
Ranked AuctionPMAuctionStrategy + rankedAuctionSettingsrankedAuctionSettings.topNWinners, lowestWinningBidMultiple winners at clearing logic

Supplementary Mechanics Mapping

Product languageGraphQL field/queryWhere it appearsIntegration impact
Dutch AuctiondutchAuctionPMBuyNowLimitedEditionStrategy and PMBuyNowOpenEditionStrategyUI should show dynamic bracketed pricing/timing
Decreasing SupplydecreasingSupplyPMBuyNowLimitedEditionStrategyUI should show shrinking available supply over time
Mint PassmintPassConfiguration(pmListingId) querySeparate query by listingGate purchase UI until eligibility is confirmed
Reserve ListcheckReserves(artworkId[, reserveId]) via ElementsAuthenticated checkUse reserveAccess.reserveRequired + reserveAccess.hasAccess to decide CTA state

Listing Lifecycle Mapping

ConceptGraphQL fieldNotes
Active listing windowPrimaryMarketListing.startsAt, endsAtPrimary source for countdown and availability windows
Listing status outcomePrimaryMarketListing.endReasonCommon values include TIME_IS_OUT and SOLD_OUT
Current active listingprimaryMarketListing(artworkId)Use for primary CTA
Listing historyprimaryMarketListings(artworkId)Use for past sales/history views

Practical Integration Rules

  1. Treat product labels as presentation-only; drive logic from GraphQL union/enum types.
  2. Resolve strategy first, then apply supplementary mechanics.
  3. For curated flows, always branch from allowUserSelection and required userInput keys.
  4. Run reserve checks for gated sales before opening checkout.
  5. Keep this mapping and Glossary and Name Mapping as your canonical integration references.