Content models

Every content type in the Euro League Contentful space, with editor names, fields and relationships, and what Contentful owns against the engine.

2026-11-07

Overview

This reference is the catalogue of every content type in the Euro League Contentful space (12gd2cvfgb6b), grouped by the domain that owns it, with each type's fields, editor-facing names, field types and relationships. It is the map developers and PMs use to see what content exists and how it links together. There are 59 content types: 13 core, 30 content, 6 video and 10 created by this project's own migrations (the basketball types and the WSC Widget). The runner's own modelMigrationState ledger is a sixtieth type in the schema, but it is data, not content, and is not listed.

The model's source of truth is code, not the Contentful web app — packages/model (@v4/model). For the architecture behind it see the content-model system; for the package itself (migrations, fragments, codegen, drift gates) see the model package. This page documents the shape of the data those systems produce.

How the model is organised

Every inherited content type has exactly one owning domain, declared in packages/model/domains.json — its types map (type → domain) and its domains map, whose order is the canonical composition order. The model composes the two baseline domains plus the bolt-on domains this project bought; packages/model/composition.json records them: content, video and basketball (core is always included).

Domains carry a tier:

  • baseline — always composed (core, content).
  • bolt-on — bought on top of the baseline. Here: video, and basketball, which is this project's own and declares no types of its own.

domains.json also lists domains this project did not buy (sport-common, football, gamification, retail, hospitality, ads, app and the quarantine): it came with the template, which owns that map. None of their types exists in this space; they survive only in the raw export the baseline was generated from, packages/model/baseline/content-types.json.

Types created by this project sit outside the ownership map. Our migrations live in packages/model/migrations/club/, which lint-migrations exempts from domain ownership. The ten types they create — competition, season, seasonSponsor, team, club, fixture, venue, profile, player and wscWidget — therefore have no entry of their own in domains.json (it still maps the unbought football and sport-common types of the same ids, which this space never composes). The club/ directory also holds most of this space's model change: it adds fields to core and content types, hides and deletes others, and each table below names the migration.

The baseline dropped fields whose links target uncomposed types. That is why, for example, articlePage.adPlacement, homePage.lineupsTickerBanner and siteSettings.countdown do not exist here.

Summary

Domain Tier Types Ships
Core baseline 13 Chrome and primitives
Content baseline 30 @v4/ghost-content + @v4/content-app
Video bolt-on 6 @v4/ghost-video + @v4/video-app + @v4/media (the Video Item itself is content's)
Basketball bolt-on (our own) 0 @v4/ghost-basketball + @v4/basketball-app + @v4/competition-engine + @v4/model/basketball
Our own migrations/club/ 10 The basketball types and the WSC Widget
Total 59

Each has its own section: Core, Content (which ends with the WSC Widget), Video and Basketball and club types — which also states the rule for which basketball data Contentful owns and lists the recent club/ migrations.

How to read the per-domain sections

Each section opens with a short intro (tier, what the domain owns, the packages it ships) and then lists each content type under a ### heading. Under it, a line names the type as an editor sees it in Contentful, then a one-line description and a field table:

  • Field — the field id as queried through the GraphQL delivery API (@v4/model fragments). A GraphQL name can differ in casing from the Contentful id (isContentTargetedAtUnder18s is isContentTargetedAtUnder18S in GraphQL); the table gives the Contentful id.
  • Editor name — the field's name in the Contentful entry editor, as the migrations set it.
  • Type — the field's shape: Short text / Long text (Contentful Symbol / Text), Rich text, JSON (Object), Boolean, Integer, Date & time, List, Media asset (a link to a media library asset), or Reference / Reference (list) for a link to one or more other content types. A Reference field is a relationship; the Notes column names the content type(s) it can link to.
  • Required — whether the field is required by the model's migration validations. (The GraphQL delivery schema types nearly everything as nullable, so requiredness is taken from the migrations, not the schema.)
  • Notes — relationship targets, allowed values, size limits, localisation, rich-text embed and link targets, Hidden from editors (a disabled field: out of the entry editor, still in the API), and the club/ migration that added or changed the field.

Every type additionally carries the managed system fields sys, contentfulMetadata, _id and linkedFrom; these are Contentful/GraphQL machinery and are omitted from the tables. The generated GraphQL companions of a type ({Type}Collection, {Type}Filter, {Type}LinkingCollections, {Type}Order) are likewise not content types and are not listed. A relationship rendered as a list corresponds to the GraphQL …Collection / …CursorCollection pair. Fields deleted from the model, and omitted fields, are not listed; a type's intro names notable deletions.

A note on fidelity

Field detail is derived from the migrations — the composed baselines under packages/model/migrations/{core,content,video}/ replayed with every later migration, including migrations/club/ — and checked against packages/model/schema.graphql (the vendored, introspected schema). A couple of quirks are faithfully reproduced rather than corrected — for example headerBlock.cmsTiitle is genuinely misspelt in the source model. Where the tables and the live space ever disagree, the migrations are the source of truth and the discrepancy is a drift-gate concern, not a documentation one. Do not take editor names from packages/tickets/src/__generated__/cms-types.json until it has been rebuilt: as of 6 November 2026 it predates club/0057.

Core domain

The core domain is baseline — it composes into every environment. It holds the site's chrome and primitives: site settings, themes, navigation, the link/image primitives, the footer and the localised-copy dictionary key. 13 types here: globalSettings and itemCountry were deleted by club/0057. Several club/ migrations add fields to core types (the header crest strip, the default competition, the footer hero); each table names the migration. Every content type below also carries the managed system fields sys, contentfulMetadata, _id and linkedFrom, which are omitted from the tables.

SiteSettings

Contentful: Settings ⚙️ Site Settings | WEB (siteSettings).

The single per-site configuration entry — default share image, error-page (404) copy and links, header navigation slots and the header crest strip, the ticker, the current season and default competition, fixture/profile meta-description templates, and the default news/video landing pages. hospitalityLink and ticketingLink were deleted by club/0051; the search-result CTAs are hidden.

Field Editor name Type Required Notes
title Contentful Title Short text Yes Unique; One of: Site settings
footer Footer Reference No Links to footerBlock
errorMainCopy404 404 Error Main Copy Short text No Localised
errorAdditionalCopy404 404 Error Additional Copy Short text No Localised
errorImage404 404 Error Image Reference No Links to image
errorUsefulLinks404 404 Error Useful Links Reference No Links to linkList
defaultShareImage Default Share Image Reference Yes Links to image
headerPrimaryNavigation Header: Primary Navigation Reference Yes Links to navigation; Localised
headerMoreNavigation Header: More Navigation Reference No Links to navigation; Localised
headerOtherSiteLinks Header: Other Site Links Reference (list) No Links to navigationItem; At most 3 items; Localised
headerHygieneLinks Header: Hygiene Links Reference (list) No Links to navigationItem; At most 3 items; Localised
defaultNewsLandingPage Default News Landing Page Reference No Links to newsListingPage
profileMetaDescription Profile Meta Description Long text Yes At most 160 characters; Localised
fixtureMetaDescriptionPreMatch Fixture Meta Description - Pre Match Long text Yes At most 160 characters; Localised
fixtureMetaDescriptionLiveMatch Fixture Meta Description - Live Match Long text Yes At most 160 characters; Localised
fixtureMetaDescriptionPostMatch Fixture Meta Description - Post Match Long text Yes At most 160 characters; Localised
fallbackClubCrest Fallback Club Crest Media asset Yes
searchResultsPageResultsCta Search Results - Page results CTA Reference No Links to link; Localised; Hidden from editors; club/0051
searchResultsNewsResultsCta Search Results - News results CTA Reference No Links to link; Localised; Hidden from editors
searchResultsVideoResultsCta Search Results - Video results CTA Reference No Links to link; Localised; Hidden from editors
tickerConfig Ticker JSON No Ticker app (core/0002)
defaultVideoLandingPage Default Video Landing Page Reference No Links to videoLandingPage
headerTeamLinks Header: Team Links Reference (list) No Links to imageLink; At most 24 items; Localised; The header crest strip (club/0002)
currentSeason Current Season Short text No A season code as text, not a reference (club/0021)
defaultCompetition Default Competition Reference No Links to competition; The competition the bare data-area addresses open (club/0035)

Theme

Contentful: Settings ⚙️ Theme (theme).

A named colour/style theme referenced by blocks and header blocks; settings holds the theme's token payload as JSON. A block's Theme sets its colour set.

Colour Sets V2 leaves editors three themes: Colour theme 1 (ColorSet-1, white), Colour theme 2 (ColorSet-2, off-white) and Colour theme 3 (ColorSet-3, purple). club/0036 archives Colour theme 4–6, whose sets the design greys out: hidden, not deleted. They leave the entry list and the Theme picker with their fields intact, and can be unarchived and republished if the brand brings a set back. A block still linking to one (the migration logs them) gets no theme back from the site's query, so it shows its default colour set, Colour theme 1, as the help text on every block's Theme field says; an editor picks a V2 theme on any that should stay dark.

Field Editor name Type Required Notes
title Title Short text Yes
themeId Theme ID Short text Yes The only field the site reads: colourTheme1–6 → colourSet1–6
settings Settings JSON Yes Hidden from editors; club/0051

Contentful: Nav ☰ Navigation | WEB (navigation).

An ordered navigation menu — a titled container of navigationItem entries.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
navigationItems Navigation Items Reference (list) Yes Links to navigationItem

Contentful: Nav ☰ Navigation Item | WEB (navigationItem).

One entry in a navigation menu: a primary link, optional secondary links, an optional promo block for mega-menu panels, and the competitions whose navigation shows it (club/0046).

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
primaryLink Primary Link Reference No Links to link; Localised
secondaryLinks Secondary Links Reference (list) No Links to navigationItem; Localised
promoBlock Promo Block Reference No Links to promoBlock; Localised
competitions Competitions Reference (list) No Links to competition; The competitions whose navigation shows the item (club/0046)

InPageHeaderNavigation

Contentful: Nav ☰ Sub-Nav | WEB (InPageHeaderNavigation).

A sub-navigation strip (in-page header tabs) — an ordered list of link entries. A header block's subNav and a news listing page's subNavigation link to it.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
links Links Reference (list) Yes Links to link; At most 7 items

Contentful: Links 🔗 Standard Link (link).

The universal link primitive — resolves to an internal entry (internalLink) or an external URL, with open-in-new-tab and title. Here internalLink accepts only articlePage, contentPage and newsListingPage: a Standard Link cannot target a basketball team, player, coach or game page, so editors type that path as an External Link. subPage and deepLink are hidden and no longer read (see link resolution).

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Link Title Short text Yes Localised
internalLink Internal Link Reference No Links to articlePage, contentPage, newsListingPage
externalLink External Link Short text No Localised
openInNewTab Open in new tab Boolean No
subPage Sub Page Short text No One of: fixtures, results, table; Hidden from editors; No longer read by the site; due for deletion (club/0048, club/0051)
deepLink Deep Link ( APP only) Short text No Hidden from editors; No longer read by the site; due for deletion (club/0048, club/0051)

Contentful: Links 🔗 Link List | WEB (linkList).

A titled group of link entries — used for footer useful-links groups and 404 useful links.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Link Category Title Short text No Localised
links Links Reference (list) Yes Links to link; Localised

Image

Contentful: Item 🏷️ Image (image).

The image wrapper around a picture — a ScorePlay pick or a Contentful media asset — carrying caption, attribution, focal point and age-sensitivity flags. Almost every image slot in the model references this rather than a raw asset. When the ScorePlay image is set it is the picture shown, except on the 404 page's Error Image, which still reads only the media asset; the media asset is the optional fallback.

Field Editor name Type Required Notes
title Contentful Title Short text Yes
image Image Media asset No the fallback, optional since club/0019 (the core baseline requires it)
focalPoint Focal Point JSON No Frames the media asset only
caption Caption Short text No At most 90 characters; Localised
attribution Attribution Short text No At most 50 characters; Localised
migrationId Migration ID Short text No Unique; Hidden from editors
isAgeSensitiveContent Is Age-Sensitive Content? Boolean No
geoRules Geo rules JSON No Sponsor geo targeting (Image geo rules app, core/0002)
scoreplayImage ScorePlay Image JSON No ScorePlay pick; wins when set (our own: migrations/club/0001, 0013)

Contentful: Links 🔗 Image Link | WEB (imageLink).

An image paired with a link — a clickable image (e.g. a sponsor mark that navigates).

Field Editor name Type Required Notes
title Contentful Title Short text Yes
image Image Reference Yes Links to image; Localised
link Link Reference Yes Links to link; Localised
geoRules Geo rules JSON No

DictionaryKey

Contentful: Settings ⚙️ Dictionary Key (dictionaryKey).

One localised UI-copy key/label pair. The key vocabulary is owned in code (@v4/model dictionary); editors maintain the localised labels here.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes Hidden from editors
key Key Short text Yes Unique; Hidden from editors
label Label Short text Yes Localised

FooterBlock

Contentful: Content 🧱 Footer | WEB[Contentful app Candidates] (footerBlock).

The site footer configuration — logo, sponsor tiers, contact-details panels, useful-links groups, legal links, social channels, copyright, and the footer hero (image, title and up to two links, club/0014). The old sponsors JSON field was deleted by club/0051.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
tierOneSponsors Tier One Sponsors Reference No Links to sponsorGroup
sponsorsGroups Other Sponsors Reference (list) No Links to sponsorGroup
logo Logo Media asset No
contactSectionTitle Contact Section Title Short text No Localised
contactDetailsPanel Contact Details Panel Reference (list) No Links to contactDetails; At most 3 items
usefulLinksGroups Useful Links Groups Reference (list) No Links to linkList; At most 9 items
legalLinks Legal Links Reference (list) No Links to link
socialChannels Social Channels JSON No Localised
copyrightStatement Copyright statement Short text No Localised
heroImage Hero Image Reference No Links to image; Footer hero (club/0014)
heroTitle Hero Title Short text No Footer hero (club/0014)
heroLinks Hero Links Reference (list) No Links to link; At most 2 items; Footer hero (club/0014)

ContactDetails

Contentful: Item 🏷️ Contact Details | WEB (contactDetails).

A single contact panel — address, email and phone, shown in the footer.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
title Contact Details Title Short text No Localised
address Address Long text No Localised
email Email Short text No Localised
number Phone Number Short text No Localised

SponsorGroup

Contentful: Item 🏷️ Sponsor Group (sponsorGroup).

A titled group of sponsor marks (imageLink/image) — a footer sponsor tier.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
title Tier Title Short text Yes Localised
sponsors Sponsors Reference (list) Yes Links to imageLink, image; At most 20 items

Content domain

The content domain is baseline — the editorial CMS. It owns the article and page types, and the library of composable content blocks (*Block) that pages stream through their contentBlocks fields. articlePage is the most heavily referenced type in the model. 30 types here (snippet was deleted by club/0057), plus this project's own WSC Widget at the end of this page. Reference fields note the content types they may link to; the block allow-lists are this space's — the package, ad-slot, fixtures-summary and gamification blocks of the unbought domains are not composed here.

ArticlePage

Contentful: Page 📄 Article (articlePage).

The core editorial news article — title, slug, category, competition (required), rich-text body, hero image/video/gallery, author, related content, members-only and age gating, SEO metadata, and its basketball context: also-show-in competitions, season, game, round, associated teams and players. The most heavily linked type in the model. associatedTeam, associatedFixture and adPlacement never reached this space (their link targets are not composed); tags (club/0051), contentBlocks (club/0057) and associatedPlayers (club/0060) were deleted.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
articleTitle Article Title Short text Yes Localised
slug Slug Short text Yes Unique; Localised
publishDate Publish Date Date & time Yes Localised
image Image Reference No Links to image
category Category Reference Yes Links to category
format Format Short text Yes One of: News, Video, Gallery
featuredVideo Featured Video Reference No Links to video, youtubeItem; Localised
featuredGallery Featured Gallery Reference No Links to gallery
author Author Reference No Links to author; Localised
summary Summary Long text No At most 300 characters; Localised
bodyCopy Body Copy Rich text No Embeds pullQuoteEmbed, socialEmbed, video, youtubeItem, image, gallery, embedScriptEmbed, gamificationEntry, gamificationPoll, gamificationQuiz; Entry links to articlePage, contentPage, fixture, profile, player, newsListingPage; Localised; gamification* remain in the embed allow-list as stale validation data — those types do not exist in this space
metaTitle Meta Title Short text No At most 60 characters; Localised
metaDescription Meta Description Long text No At most 160 characters; Localised
metaImage Meta Image Reference No Links to image; Localised
canonicalLink Canonical Link Reference No Links to link; Localised
isFeatured Is Featured? Boolean No
estimatedReadingTime Estimated Reading Time Integer No
sponsor Sponsor Media asset No
relatedContent Related Content Reference (list) No Links to articlePage; 1–3 items; Localised
hideRelatedContent Hide Related Content? Boolean No
optionalOverrideForRelatedContentCta Optional Override For Related Content CTA Reference No Links to link; Localised
isRestrictedToMembersOnly Is Restricted to Members Only? Boolean No
isContentTargetedAtUnder18s Is Content Targeted At Under 18s? Boolean No Hidden from editors; club/0051
hideForThisLocale Hide for this locale Boolean No Localised
originalPath Original Path Short text No Localised; Hidden from editors
migrationId Migration ID Short text No Unique; Hidden from editors
excludeFromSearchEngines Exclude from search engines? Boolean No content/0005
competition Competition Reference Yes Links to competition; Required since club/0047; the competition the article belongs to (its section)
alsoShowIn Also Show In Reference (list) No Links to competition; Further competitions whose news lists the article (club/0035)
associatedTeams Associated Teams Reference (list) No Links to team; At most 5 items; up to 5. The team filter on the news, category and tag listings lists the article under each (our own: migrations/club/0037)
season Season Reference No Links to season; club/0045, optional since club/0054
match Game Reference No Links to fixture; Editor name "Game" (club/0056, club/0061)
round Round Integer No club/0056
players Players Reference (list) No Links to profile; At most 10 items; Replaces Associated Players (deleted by club/0060); club/0057, shown to editors by club/0058

ArticlePromo

Contentful: Promo Block 🧱 Article Promo (articlePromo).

A lightweight promo pointing at an articlePage, with an optional override label — used to feature an article inside a content-block stream.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
article Article Reference Yes Links to articlePage
label Label Short text No At most 20 characters; Localised

Author

Contentful: Item 🏷️ Author (author).

An article byline — name, sub-title and avatar image.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
firstName First Name Short text Yes At most 50 characters; Localised
secondName Second Name Short text No At most 50 characters; Localised
subTitle Sub Title Short text No At most 50 characters; Localised
avatar Avatar Reference No Links to image; Localised
migrationId Migration ID Short text No Unique; Hidden from editors

Category

Contentful: Item 🏷️ Category (category).

An editorial category/section — slug, summary, featured article and SEO metadata. Articles, news carousels and news listing pages reference it.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
category Category Short text No Localised
slug Slug Short text Yes Unique; Localised
metaTitle Meta Title Short text No Localised
metaDescription Meta Description Long text No At most 160 characters; Localised
metaImage Meta Image Reference No Links to image; Localised
canonicalLink Canonical Link Reference No Links to link
categorySummary Category Summary Short text No At most 200 characters; Localised
featuredArticle Featured Article Reference No Links to articlePage
migrationId Migration ID Short text No Unique; Hidden from editors
isContentTargetedAtUnder18s Is content targeted at under 18s? Boolean No Hidden from editors

ContentPage

Contentful: Page 📄 Content | WEB (contentPage).

A generic composable page — a stream of content blocks with a header block, parent/child page hierarchy, full path and competition. setAsLandingPage was deleted by club/0051.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
metaTitle Title Short text Yes At most 60 characters; Localised
shortTitle Short Title Short text No At most 30 characters; Localised
slug Slug Short text Yes Unique; Localised
fullPath Full Path Short text No Unique; Localised
parentPage Parent Page Reference No Links to contentPage
childPages Child Pages Reference (list) No Links to contentPage
headerBlock Header Block Reference No Links to headerBlock
contentBlocks Content Blocks Reference (list) Yes Links to gatewayCarouselBlock, promoCarouselBlock, tabbedCarouselBlock, newsCarouselBlock, accordionBlock, downloadBlock, embedBlock, contentScrollerBlock, statsBlock, tableBlock, textBlock, textWithImageBlock, embedScriptEmbed, articlePromo, promoBlock, wscWidget; At most 15 items; Localised
metaDescription Meta Description Long text No At most 160 characters; Localised
metaImage Meta Image Reference No Links to image; Localised
canonicalLink Canonical Link Reference No Links to link; Localised
hideForThisLocale Hide For This Locale Boolean Yes Localised
isContentTargetedAtUnder18s Is Content Targeted At Under 18s? Boolean No
excludeFromSearchEngines Exclude from search engines? Boolean No
competition Competition Reference No Links to competition; The competition section a top-level page belongs to (club/0035)

HomePage

Contentful: Page 📄 Home Page | WEB (homePage).

The site home page — a hero header block and a stream of content blocks and the competition it is for (competition, club/0035). There are no countdown, line-up ticker or matchday-takeover fields: they link to types this space does not compose.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes Unique
metaTitle Meta Title Short text No At most 60 characters; Localised
metaDescription Meta Description Long text No At most 160 characters; Localised
metaImage Meta Image Reference No Links to image; Localised
headerBlock Header Block Reference No Links to headerBlocksHero
contentBlocks Content Blocks Reference (list) Yes Links to promoBlock, statsBlock, textBlock, textWithImageBlock, embedBlock, articlePromo, gatewayCarouselBlock, newsCarouselBlock, promoCarouselBlock, tabbedCarouselBlock, tableBlock, accordionBlock, embedScriptEmbed, wscWidget; At most 15 items; Localised
canonicalLink Canonical Link Reference No Links to link; Localised
competition Competition Reference No Links to competition; One home page per competition (club/0035)

NewsListingPage

Contentful: Page 📄 News Listing Page | WEB (newsListingPage).

A news index page — listing title/summary, featured article, sub-navigation, category filter, competition, a featured-only switch and a short content-block stream. tags was deleted by club/0051.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
listingTitle Listing Title Short text Yes Localised
slug Slug Short text Yes Unique; Localised
listingSummary Listing Summary Short text No At most 200 characters; Localised
subNavigation Sub-Navigation Reference No Links to InPageHeaderNavigation
headerImage Header Image Reference No Links to image; Localised
featuredArticle Featured Article Reference No Links to articlePage
category Category Reference No Links to category
sponsor Sponsor Media asset No
contentBlocks Content Blocks Reference (list) No Links to gatewayCarouselBlock, promoBlock; At most 6 items; Localised
metaTitle Meta Title Short text No At most 60 characters; Localised
metaDescription Meta Description Long text No At most 160 characters; Localised
metaImage Meta Image Reference No Links to image; Localised
canonicalLink Canonical Link Reference No Links to link; Localised
competition Competition Reference No Links to competition; club/0035
onlyShowFeatured Only show Featured News Boolean No club/0050

Contentful: Item 🏷️ Gallery (gallery).

An ordered set of image entries with a title and subtitle — embedded in article bodies or shown as a gallery page.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
galleryTitle Gallery Title Short text No At most 50 characters; Localised
subTitle Sub-title Short text No At most 50 characters; Localised
images Images Reference (list) Yes Links to image; At most 20 items
migrationId Migration ID Short text No Unique; Hidden from editors

HeaderBlock

Contentful: Header 🧱 Page Header Block | WEB (headerBlock).

A page header/hero band — title, summary, image, sponsor asset, sub-navigation, link and theme. (Note the misspelt cmsTiitle field, preserved from the source model.)

Field Editor name Type Required Notes
cmsTiitle Contentful Title Short text Yes
title Header Block Title Short text No Localised
type Type Short text Yes One of: standard, info, image, image-rich, feature
summary Summary Long text No At most 200 characters; Localised
section Section Short text No Localised
image Image Reference No Links to image; Localised
sponsor Sponsor Media asset No
subNav Sub-Nav Reference No Links to InPageHeaderNavigation
link Link Reference No Links to link; Localised
theme Theme Reference No Links to theme

HeaderBlocksHero

Contentful: Header 🧱 Hero Block (headerBlocksHero).

A hero carousel — an ordered set of itemHeroSlide / articlePage slides.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
slideItems Slide Items Reference (list) Yes Links to articlePage, itemHeroSlide; At most 6 items

ItemHeroSlide

Contentful: Item 🏷️ Hero Slide (itemHeroSlide).

One slide in a hero carousel — pre-title, title, image and up to three call-to-action links.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Title Short text Yes At most 200 characters; Localised
slideSectionPreTitleText Slide Section (Pre Title text) Short text No At most 15 characters; Localised
image Image Reference Yes Links to image
primaryLink Primary Link Reference Yes Links to link
secondaryLink Secondary Link Reference No Links to link
tertiaryLink Tertiary Link Reference No Links to link

PromoBlock

Contentful: Promo Block 🧱 Standard (promoBlock).

A promotional card — title, summary, image, label, link and theme, with an optional countdown (end time and title) and sponsor mark (club/0034).

Field Editor name Type Required Notes
title Contentful Title Short text Yes
promoTitle Promo Title Short text Yes At most 40 characters; Localised
type Type Short text Yes One of: simple, floating-image, full-image, supporting-image, countdown
image Image Reference No Links to image; Localised
summary Summary Long text No At most 80 characters; Localised
label Label Short text No Localised
link Link Reference No Links to link; Localised
theme Theme Reference No Links to theme
countdownEnd Countdown End Date & time No club/0034
countdownTitle Countdown Title Short text No At most 40 characters; Localised; club/0034
sponsor Sponsor Media asset No club/0034

PromoCarouselBlock

Contentful: Carousel 🧱 Promo (promoCarouselBlock).

A carousel of promoBlock cards, with a title, display style, CTA link and theme.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
promoCarouselTitle Promo Carousel Title Short text No Localised
subTitle Sub-Title Short text No Localised
carouselCards Carousel Cards Reference (list) Yes Links to promoBlock; 3–8 items
displayCardsAs Display Cards As (TBC if used) Short text No One of: Standard, Rich; Hidden from editors; Renamed "(TBC if used)" and hidden by club/0051; defaults to Rich (club/0007)
callToActionLink Call To Action Link Reference No Links to link
theme Theme Reference No Links to theme; Localised

NewsCarouselBlock

Contentful: Carousel / Grid 🧱 News (newsCarouselBlock).

A carousel of articles selected by category (and by public tags on the entry), optionally only featured articles, with a grid display option and a featured grid article. The team, player, fixture, tags and theme fields were deleted or never composed (club/0051).

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
newsCarouselTitle News Carousel Title Short text Yes Localised
subTitle Sub-Title Short text No Localised
category Category Filter Reference No Links to category
link Link Reference No Links to link; Localised
tabLabel Tab Label Short text No Localised
displayAsGrid Display as Grid Boolean No
featuredGridArticle Featured Grid Article Reference No Links to articlePage; Localised
onlyShowFeatured Only show Featured News Boolean No club/0049

ContentScrollerBlock

Contentful: Content 🧱 Scroller Block | WEB (contentScrollerBlock).

A horizontally scrolling stream of downloadBlock / accordionBlock sections; the scroller's navigation lists the blocks it contains, and its one Theme applies to all of them. scrollerBlockTitle was deleted by club/0051, so the entry's name heads the section list.

Field Editor name Type Required Notes
title Contentful Title Short text Yes
contentSections Content Sections Reference (list) Yes Links to downloadBlock, accordionBlock; 2–20 items
theme Theme Reference No Links to theme; One theme for the whole scroller; its blocks cannot deviate (club/0015)

AccordionBlock

Contentful: Content 🧱 Accordion Block | WEB (accordionBlock).

An accordion — intro copy plus an ordered set of accordionSection entries.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Accordion Block Title Short text No Localised
subtitle Sub-title Short text No Localised
introParagraph Intro Paragraph Long text No At most 500 characters; Localised
bodyCopy Body Copy Rich text No Localised
accordionSections Accordion Sections Reference (list) Yes Links to accordionSection; At most 20 items
theme Theme Reference No Links to theme

AccordionSection

Contentful: Item 🏷️ Accordion Section | WEB (accordionSection).

One expandable accordion row — title, assistive text and rich-text content.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Section Title Short text Yes Localised
assistiveText Assistive Text Short text No Localised
content Section Content Rich text Yes Embeds pullQuoteEmbed, socialEmbed, image, video, youtubeItem; Entry links to articlePage, fixture, profile, player, contentPage; Localised

TabbedCarouselBlock

Contentful: Carousel 🧱 Tabbed Carousel (tabbedCarouselBlock).

A tabbed set of newsCarouselBlock carousels.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
tabbedCarouselTitle Tabbed Carousel Title Short text Yes Localised
subTitle Sub-Title Short text No Localised
carousels Carousels Reference (list) Yes Links to newsCarouselBlock; 2–5 items
theme Theme Reference No Links to theme; Localised

TableBlock

Contentful: Content 🧱 Table Block | WEB (tableBlock).

A rich-text table block with intro copy, a sub-title (club/0017) and a theme.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
tableBlockTitle Table Block Title Short text No Localised
introParagraph Intro Paragraph Short text No Localised
tableAndBodyCopy Table and Body Copy Rich text No Localised
theme Theme Reference No Links to theme
subTitle Sub-title Short text No club/0017

TextBlock

Contentful: Content 🧱 Text Block | WEB (textBlock).

A rich-text body block with title, intro, related links and theme.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
title Text Block Title Short text No Localised
subTitle Sub-title Short text No Localised
introParagraph Intro Paragraph Long text No At most 1000 characters; Localised
bodyCopy Body Copy Rich text No Entry links to articlePage, contentPage, newsListingPage, fixture, profile, player; Localised
links Link(s) Reference (list) No Links to link; At most 3 items; up to 3, shown as the calls to action under the copy — hidden from editors by migrations/club/0010 while nothing read it, shown again by migrations/club/0032 (our own)
theme Theme Reference No Links to theme; Colour theme 1–3 set the block's colour set, any other theme shows as the first (help text: migrations/club/0032, our own)

TextWithImageBlock

Contentful: Content 🧱 Text With Image Block | WEB (textWithImageBlock).

Rich text paired with an image, with a configurable image position, links and theme.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Text With Image Block Title Short text No Localised
label Label Short text No Localised
subTitle Sub-title Short text No Localised
introParagraph Intro Paragraph Long text No At most 1000 characters; Localised
content Body Copy Rich text No Entry links to contentPage, articlePage, newsListingPage, fixture, profile, player; Localised
image Image Reference Yes Links to image; Localised
imagePosition Image Position (larger screens) Short text No One of: top, left, right
links Link(s) Reference (list) No Links to link; At most 3 items; Localised
theme Theme Reference No Links to theme

DownloadBlock

Contentful: Content 🧱 Download Block | WEB (downloadBlock).

A block presenting downloadable files (downloadLinks JSON) with rich-text body, an optional image beside the list, and theme.

Field Editor name Type Required Notes
cmsTitle Contentful Title Short text Yes
title Download Block Title Short text Yes Localised
subTitle Sub-title Short text No Localised
summary Intro Paragraph Long text No At most 500 characters; Localised
bodyCopy Body Copy Rich text No Localised
theme Theme Reference No Links to theme
downloadLinks Download Links JSON Yes Localised
image Image Reference No Links to image

EmbedBlock

Contentful: Content 🧱 Embed Block | WEB (embedBlock).

A wrapper choosing one embeddable item — pull quote, social embed, image, video, gallery or script embed.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
itemToEmbed Item to embed Reference Yes Links to pullQuoteEmbed, socialEmbed, image, video, youtubeItem, gallery, embedScriptEmbed
theme Theme Reference No Links to theme

EmbedScriptEmbed

Contentful: Embed ↘ Script Embed (embedScriptEmbed).

A raw third-party script embed (arbitrary markup/script).

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
scriptEmbed Script Embed Long text Yes

PullQuoteEmbed

Contentful: Embed ↘ Pull Quote (pullQuoteEmbed).

A pull quote with attributed speaker — quote text, name, sub-title and avatar.

Field Editor name Type Required Notes
title Contentful Title Short text Yes
quote Quote Long text Yes At most 500 characters; Localised
firstName First Name Short text No At most 20 characters
lastName Last Name Short text No At most 20 characters
subTitle Sub Title Short text No
avatar Avatar Reference No Links to image

SocialEmbed

Contentful: Embed ↘ Social (socialEmbed).

A social-media embed; socialContent holds the provider payload as JSON.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
socialContent Social Content ( Add the social post browser url ) JSON Yes Localised

Video

Contentful: Video ▶️ Video Item (video).

A Video Item — an article's Featured Video, a body embed and a video page all reference it. Owned by content (moved there from the video domain). It is the Stadion Video Platform's item and is Mux-only in practice: the Mux video in video plays when set, and the hidden youtubeVideo is the fallback until it is deleted (club/0026, club/0053). A YouTube video is a YouTube Item instead. Its basketball tags — competition, season, game (fixture), team, associated teams and players — are what the video platform's filters read (club/0030, club/0045, club/0058).

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Video Title Short text No Localised
slug Slug Short text Yes Localised
subtitle Sub-title Short text No Localised
image Image Reference No Links to image
migrationId Migration ID Short text No Unique; Hidden from editors
youtubeVideo YouTube Video JSON No Hidden from editors; Since club/0053, and due for deletion in the next release. Plays only when no Mux video is set — a YouTube video is now a YouTube Item
videoOld Video (legacy — use YouTube Video) JSON No Hidden from editors; Legacy YouTube JSON from before youtubeVideo; removed in a later release
video Mux Video JSON No The Mux video (the Mux Video app; the field the Stadion Video Platform ingests, club/0026). The app writes the picker envelope — id, provider, title, thumbnailImageUrl, duration, date, playbackId — with its record under _mux. When set, it is the video that plays
isPodcast Is Podcast Boolean No Hidden from editors; Since club/0053; read by the platform ingest
podcastAudio Podcast Audio JSON No Hidden from editors; Read by the platform ingest
category Category Reference Yes Links to category
competition Competition Reference No Links to competition
players Players Reference (list) No Links to profile; At most 10 items
fixture Fixture Reference No Links to fixture
team Team Reference No Links to team
publishDate Publish Date Date & time No
videoType Video Type Short text No One of: Episode; Hidden from editors; Defaults to "Episode"; a single value since club/0028, optional and hidden since club/0053. Read by the platform ingest
season Season Reference No Links to season
associatedTeams Associated Teams Reference (list) No Links to team; At most 5 items

StatsBlock

Contentful: Content 🧱 Stats Block | WEB (statsBlock).

A statistics block — overview copy, a stats JSON payload (edited with the stats editor, club/0020), image and theme. Its sponsor field was deleted by club/0051.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Stats Block Title Short text No Localised
subTitle Sub Title Short text No Localised
overview Overview Long text No At most 150 characters; Localised
theme Theme Reference No Links to theme; Localised
image Image Reference No Links to image
stats Stats JSON Yes At least 1; Localised

GatewayCard

Contentful: Item 🏷️ Gateway Card (gatewayCard).

A gateway/navigation card — title, summary, image and link. subTitle was deleted by club/0051.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
gatewayCardTitle Gateway Card Title Short text Yes Localised
summary Summary Short text No Localised
link Link Reference Yes Links to link
image Image Reference Yes Links to image

GatewayCarouselBlock

Contentful: Carousel 🧱 Gateway (gatewayCarouselBlock).

A carousel of 3–8 gatewayCard entries (content/0003) with a title and theme.

Field Editor name Type Required Notes
contentfulTitle Contentful title Short text Yes
carouselTitle Carousel Title Short text No Localised
subTitle Sub-title Short text No Localised
gatewayCards Gateway Cards Reference (list) Yes Links to gatewayCard; 3–8 items
link Link Reference No Links to link
displayCardsAs Display Cards As (TBC if used) Short text No One of: Standard, Rich; Hidden from editors; Renamed "(TBC if used)" and hidden by club/0051
theme Theme Reference No Links to theme; Localised

WscWidget

Contentful: Content 🧱 WSC Widget | WEB (wscWidget).

A row of WSC Sports Stories or Moments placed among a home or content page's content blocks (club/0009). Contentful holds only the query: the clip type, a layout preset, and where the clips come from — WSC labels the editor writes as JSON, or automatic (the player, team or game the page is about). Created by our own migrations, so it has no domains.json entry.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Title Short text No Localised
clipType Stories or Moments Short text Yes One of: stories, moments
layout Layout Short text No One of: row-circle, row-rectangle, row-rectangle-animated, row-rectangle-horizontal, grid-2-columns, grid-3-columns, grid-2-columns-horizontal, grid-3-columns-horizontal
source Clip source Short text Yes One of: labels, automatic
labels WSC Labels JSON No

Video domain

The video domain is a bolt-on — the first one shipped (migrations video/0000-baseline-video to video/0005-collection-name, plus the club migrations that edit its types: club/0016, 0018, 0025–0029, 0033, 0045 and 0053). It ships the @v4/ghost-video, @v4/video-app and @v4/media packages. Its Contentful surface is deliberately thin: playback data comes from the Stadion platform API through @v4/media, while these types carry the editorial metadata, curation and landing-page structure around the videos. 6 types, including the YouTube Item.

The Video item itself (video) is owned by the content domain — see the content page.

LiveStream

Contentful: Video ▶️ Live Stream (liveStream).

A live stream — stream type, started flag and the videos associated with it. A game (fixture) references its build-up, video and audio streams.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
liveStreamType Live Stream Type Short text No One of: Video, Audio
streamHasStarted Stream has Started? Boolean No
associatedVideos Associated Videos Reference (list) No Links to video; Replaced the single required associatedVideo (club/0028)

VideoPlaylist

Contentful: Video ▶️ Playlist (videoPlaylist).

A playlist of videos — either manually selected or resolved by category, competition, game, player or team filters. The filters link to this space's basketball types (club/0030).

Field Editor name Type Required Notes
contentfulTitle Contentful title Short text Yes
title Title Short text Yes Localised
slug Slug Short text Yes Unique; Localised
summary Summary Short text No Localised
image Image Reference No Links to image
sponsor Sponsor Reference No Links to imageLink
manuallySelectedVideos Selected Videos Reference (list) No Links to video
categoryFilter Category Filter Reference No Links to category
matchFilter Match Filter Reference No Links to fixture
competitionFilter Competition Filter Reference No Links to competition
playerFilter Player Filter Reference No Links to profile
teamFilter Team Filter Reference No Links to team
series Series (for a show) Integer No At most 99 (club/0027)
season Season (for a show) Short text No

VideoCollection

Contentful: Video ▶️ Collection (Show) (videoCollection).

A collection (show) grouping video playlists — series/season label, image, sponsor, episode notes and summary. Renamed off "(MUTV Show)" by video/0005.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Title Short text Yes Localised
slug Slug Short text Yes Unique; Localised
summary Summary Short text No Localised
episodeNotes Episode Notes Short text No At most 256 characters; Localised
image Image Reference No Links to image
sponsor Sponsor Reference No Links to imageLink
playlists Playlists Reference (list) No Links to videoPlaylist; At least 1 item
seriesOrSeason Series or Season Short text No One of: Series, Season

VideoRail

Contentful: Video ▶️ Rail (videoRail).

A rail composing video collections or a playlist for a landing page, with rail type, numbering and sponsor.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Title Short text No
teams Teams Reference (list) No Links to team
railType Rail Type Short text No One of: Continue Watching, Players, Matches, Popular, Saved Videos, Stories, Ones To Watch
playlist Playlist Reference No Links to videoPlaylist
collections Collections Reference (list) No Links to videoCollection
isNumbered Is numbered? Boolean No
sponsor Sponsor Reference No Links to imageLink

VideoLandingPage

Contentful: Video ▶️ Landing Page (videoLandingPage).

A video landing/home page — featured videos, rails, landing-page type and sponsor. siteSettings.defaultVideoLandingPage points at the default one.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
slug Slug Short text Yes Unique; Localised
featuredVideos Featured Videos Reference (list) No Links to video, liveStream; At most 5 items
rails Rails Reference (list) No Links to videoPlaylist, liveStream, video, videoRail, videoCollection
team Team Reference No Links to team
landingPageType Landing Page Type Short text Yes One of: Home, Matches, Players, Custom, Collections, Podcasts
chipTitle Chip Title ( Custom Page ) Short text No At most 15 characters
sponsor Sponsor Reference No Links to imageLink
isVideoHomePage Is Video Homepage? Boolean No

YouTube Item

Contentful: Video ▶️ YouTube Item (youtubeItem).

A YouTube video for an article (club/0033). The Video Item is the Stadion Video Platform's, Mux only; a YouTube video is an entry of this type instead. It is allowed wherever an article takes a Video Item: the article's Featured Video, Body Copy embeds, an Embed Block's Item To Embed and an Accordion Section's embeds. It draws exactly as a Video Item holding only a YouTube video does (videoSource reads its youtubeVideo, the same field and shape). domains.json owns it under video.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes The entry's name in Contentful
title Video Title Short text No Shown with the video
subtitle Sub-title Short text No Shown under the title when embedded in a body
youtubeVideo YouTube Video JSON Yes The Video picker app's YouTube video (id, provider, title, duration, thumbnailImageUrl)
image Image Reference No Links to image; replaces YouTube's thumbnail as the still

Basketball and club types

The basketball domain is this project's own bolt-on (domains.json): it ships @v4/basketball-app (the data areas — teams, players, coaches, games, standings, stats), @v4/competition-engine and @v4/model/basketball, and declares no content types of its own. The types it reads — and the WSC Widget on the content page — are created by our own migrations in packages/model/migrations/club/, which is exempt from domain ownership, so domains.json does not own them. (Its types map still lists the unbought football team/season/competition/fixture/club and sport-common profile under those ids; neither domain is composed here, and in this space the ids are these basketball types instead. player, seasonSponsor, venue and wscWidget have no entry at all.) 10 types of our own: the nine below and wscWidget.

Where the data comes from

The Competition Engine owns every basketball data point; Contentful holds a type only because editors own something on it, or because something in Contentful has to link to it (video tagging, article links, the video platform's own reads — whose contract, club/0030, names these ids literally). The rule, from club/0038:

  • A CMS field's value wins when it is set; the engine's value is the fallback when it is not. Nothing else from the engine is copied in.
  • Every field is one of three classes, and its help text says which: identity (written by the data sync when it creates the entry — the engine code, name, slug), mirror (written by the sync on every run — only what the video platform reads), and editorial (written by editors only; the sync never touches it).
  • The join key is the engine's code — dataProviderId on the platform types, personCode on the old player.
  • Two pairs, one split. The engine has one club and one person; Contentful has team (editorial) and club (the platform's, sync-mirrored), and — until the merge completes — profile and the old player. Names change, ids never do: fixture is a game and profile is a player because the platform, the fragments and the routes already use those ids.

Hidden fields are disabled, never omitted: out of the entry editor but still in the GraphQL and delivery APIs, so the sync can write them and the platform can read them (club/0057). Where the site's reading of Contentful against the engine is decided field by field, the ELB "Contentful precedence" sheet is the record.

Recent model changes

  • club/0051 (3 Nov) — the field clean-up: deletes unused fields across core and content (Site Settings' hospitality and ticketing links, article and listing tags, setAsLandingPage, scrollerBlockTitle, Stats Block and footer sponsors, Gateway Card subTitle), hides others, renames the two "Display Cards As (TBC if used)".
  • club/0057 (5 Nov) — deletes snippet, globalSettings and itemCountry, Article › Content Blocks, Season start/end dates and Club short name; merges the player into profile ("Basketball 🏀 Player") and adds Article › Players.
  • club/0058 — shows Players to editors and hides Associated Players.
  • club/0059 — a Game's sides become Home Team / Away Team; Home Club / Away Club and Team are hidden and optional.
  • club/0060 — removes Associated Players from articles and videos (the merge's contract step).
  • club/0061 — the article's match field is named "Game" for editors.
  • club/0063 (6 Nov) — Season Sponsor and Season › Sponsors.

Competition

Contentful: Basketball 🏀 Competition (competition).

A competition — EuroLeague, EuroCup or NextGen — and the site section it heads: home pages, content pages, news listings and articles take a Competition (club/0035), siteSettings.defaultCompetition picks the one the bare data-area addresses open, and its footer gives the section its own footer (club/0044). dataProviderId is the engine's competition code.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
name Name Short text Yes
slug Slug Short text Yes Unique
dataProviderId Competition Code Short text No Unique
footer Footer Reference No Links to footerBlock

Season

Contentful: Basketball 🏀 Season (season).

A season (e.g. 2026/27). The data sync creates it from the engine; sponsors is editorial — the Season Sponsor entries for that season's Games, Stats, Players and Teams pages (club/0063). startDate / endDate were deleted by club/0057.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Title Short text Yes
slug Slug Short text Yes Unique
sponsors Sponsors Reference (list) No Links to seasonSponsor; At most 12 items

SeasonSponsor

Contentful: Basketball 🏀 Season Sponsor (seasonSponsor).

One "Sponsored by" placement: one competition, one page — Games (the schedule and that season's Game Centres), Stats, Players or Teams — and up to six sponsor logos as Image Links, whose images carry the geo rules (club/0063). A Season lists its Season Sponsors.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
competition Competition Reference Yes Links to competition
page Page Short text Yes One of: Games, Stats, Players, Teams
sponsors Sponsors Reference (list) No Links to imageLink; At most 6 items

Team

Contentful: Basketball 🏀 Team (team).

A club, as editors see it: the engine's club code plus the editorial fields — editorial name, crest, hero slides (club/0040), a promo (club/0043), website, tickets URL and social accounts. The video platform tags videos with Team, and a Game's Home Team / Away Team are Teams (club/0059).

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
name Name Short text No Hidden from editors
slug Slug Short text Yes Unique
sortHierarchy Sort Hierarchy Integer No
dataProviderId Club Code Short text No Unique; Hidden from editors
editorialName Editorial Name Short text No
website Website Short text No
ticketsUrl Tickets URL Short text No
twitterAccount X (Twitter) Short text No
instagramAccount Instagram Short text No
facebookAccount Facebook Short text No
crest Crest Reference No Links to image
heroSlides Hero Slides Reference (list) No Links to itemHeroSlide; At most 5 items
promo Promo Reference No Links to promoBlock

Club

Contentful: Basketball 🏀 Club (video platform) (club).

The video platform's club: it builds a game's sides from two Clubs. Nothing on it is editorial — the data sync keeps one Club per Team, mirroring its name and crest, and points each Game's hidden Home Club / Away Club at them (club/0059). shortName was deleted by club/0057.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
name Name Short text Yes
clubCrest Club Crest Reference No Links to image
dataProviderId Club Code Short text No Unique

Fixture (Game)

Contentful: Basketball 🏀 Game (fixture).

A game (the id stays fixture because the video platform, fragments and routes use it). Editors pick Home Team / Away Team; the sync writes the engine's game code, tip-off, period and the mirrored Clubs. matchPeriod must be the literal FullTime for a finished game — that is what the platform's results filter reads. A game links its live build-up, video and audio streams.

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
title Title Short text Yes
slug Slug Short text Yes Unique
kickOffUtc Tip-off (UTC) Date & time Yes
matchPeriod Match Period Short text Yes One of: PreMatch, FirstQuarter, SecondQuarter, HalfTime, ThirdQuarter, FourthQuarter, OverTime, FullTime, Cancelled, Postponed, Unknown
venue Venue Short text No
homeClub Home Club Reference No Links to club; Hidden from editors
awayClub Away Club Reference No Links to club; Hidden from editors
team Team Reference No Links to team; Hidden from editors
competition Competition Reference Yes Links to competition
season Season Reference Yes Links to season
matchData Match Data JSON No
dataProviderId Game Code Short text No Unique
liveBuildUpStream Live Build-up Stream Reference No Links to liveStream
liveVideoStream Live Video Stream Reference No Links to liveStream
liveAudioStream Live Audio Stream Reference No Links to liveStream
homeTeam Home Team Reference No Links to team
awayTeam Away Team Reference No Links to team

Venue

Contentful: Basketball 🏀 Venue (venue).

An arena — the engine's venue code, name, capacity and address (club/0038).

Field Editor name Type Required Notes
contentfulTitle Contentful Title Short text Yes
dataProviderId Venue Code Short text Yes Unique; Hidden from editors
name Name Short text Yes
capacity Capacity Integer No
address Address Long text No

Profile (Player)

Contentful: Basketball 🏀 Player (profile).

The player type. It was the video platform's player profile (club/0030); club/0057 merged our player into it — it took the name "Basketball 🏀 Player", our field names and the fields the site uses, and hid the ones only the platform or the sync write. Article › Players, Video › Players and the playlist Player Filter link to it. position and squadNumber were deleted by club/0057.

Field Editor name Type Required Notes
knownAs Known As Short text No
firstName First Name Short text No Hidden from editors
lastName Last Name Short text No Hidden from editors
slug Slug Short text Yes Unique
headshot Headshot Reference No Links to image
profileImage Profile Image Reference No Links to image; Hidden from editors
profileActionImage Action Image Reference No Links to image
associatedTeams Associated Teams Reference (list) No Links to team; Hidden from editors
hasLeftClub Has Left Club Boolean No Hidden from editors
dataProviderId Person Code Short text No Unique; Hidden from editors
name Name Short text No Hidden from editors
headshotUrl Headshot URL Short text No Hidden from editors
heroSlides Hero Slides Reference (list) No Links to itemHeroSlide; At most 5 items
heightCm Height (cm) Integer No
bio Bio Long text No Localised
achievements Achievements Long text No Localised
twitterAccount X (Twitter) Short text No
instagramAccount Instagram Short text No
facebookAccount Facebook Short text No

Player (old)

Contentful: Basketball 🏀 Player (old) (player).

The first player type (club/0003), now "(old)": its data has been copied into profile (scripts/merge-players-into-profile.mjs), Associated Players was removed from articles and videos (club/0060), and the type is deleted by a later contract migration once its entries are gone. personCode is the engine's join key. Rich-text entry links still allow it alongside profile.

Field Editor name Type Required Notes
personCode Person Code Short text Yes Unique
name Name Short text Yes
alias Known As Short text No
jerseyName Jersey name Short text No
country Country Short text No
birthDate Birth date Date & time No
heightCm Height (cm) Integer No
weightKg Weight (kg) Integer No
position Position Short text No
headshotUrl Headshot URL Short text No
actionUrl Action URL Short text No
bio Bio Long text No Localised
achievements Achievements Long text No Localised
slug Slug Short text Yes Unique
headshot Headshot Reference No Links to image
actionImage Action Image Reference No Links to image
twitterAccount X (Twitter) Short text No
instagramAccount Instagram Short text No
facebookAccount Facebook Short text No
heroSlides Hero Slides Reference (list) No Links to itemHeroSlide; At most 5 items