Skip to main content

Tournament Tier

Overview

tournamentTier captures the competitive prestige classification of a tournament — the federation-specific tier that determines ranking points, draw size requirements, and prize money bands.

This is orthogonal to tournamentLevel (organizational scope: LOCAL, REGIONAL, NATIONAL, INTERNATIONAL). A NATIONAL tournament could be a Grand Slam (top tier) or a J100 (lower tier). The tier tells you how prestigious the tournament is; the level tells you where it sits in the organizational hierarchy.

TierClassification

interface TierClassification {
/** Federation/governing body tier system (e.g. 'ITF_JUNIOR', 'ATP', 'PPA', 'BWF') */
system: string;
/** Tier value within the system (e.g. '3', '1000', 'Gold', 'Super 500') */
value: string;
/** Optional sortable prestige rank within the system (lower = more prestigious) */
numericRank?: number;
}

Fields

FieldTypeRequiredDescription
systemstringyesIdentifies which federation's tier system this uses
valuestringyesThe tier label within that system
numericRanknumbernoSortable prestige rank (1 = most prestigious). Enables sorting tournaments by prestige without a policy lookup

Where it lives

  • Tournament.tournamentTier — the tournament's competitive classification
  • Event.eventTier — optional per-event override (most sports assign tier at tournament level, but some tournaments have mixed-tier events)

Resolution: event.eventTier ?? tournament.tournamentTier

Cross-Sport Examples

SportSystemValue examplesnumericRank
Tennis (ITF Junior)ITF_JUNIOR1, 2, 3, J500, J300, J200, J1001–9
Tennis (ATP)ATPGrand Slam, 1000, 500, 2501–4
Tennis (WTA)WTAGrand Slam, 1000, 500, 250, 1251–5
Tennis (ITF Pro)ITF_PROM25, M15, W75, W60, W35, W25, W15varies
Pickleball (PPA)PPAMajor, Gold, Silver, Bronze1–4
Badminton (BWF)BWFSuper 1000, Super 750, Super 500, Super 300, Super 1001–5
Table Tennis (ITTF)ITTFGrand Smash, Champions, Contender, Feeder1–4
Squash (PSA)PSAPlatinum, Gold, Silver, Bronze, Challenger, Satellite1–6

Setting Tournament Tier

tournamentEngine.setTournamentTier({
tournamentTier: {
system: 'ITF_JUNIOR',
value: 'J500',
numericRank: 4,
},
});

// Clear the tier
tournamentEngine.setTournamentTier({ tournamentTier: null });

The mutation validates that both system and value are present and trims whitespace. numericRank is optional.

Ranking Points Integration

tierToLevel Policy Mapping

Ranking policies can include a tierToLevel mapping that translates tier classifications to the numeric levels used in point tables:

const policy = {
[POLICY_TYPE_RANKING_POINTS]: {
policyName: 'ITF Junior Points',
tierToLevel: {
ITF_JUNIOR: {
1: 1, // Grand Slam → Level 1
2: 2, // Junior Masters → Level 2
J500: 4, // Grade A → Level 4
J300: 5,
J200: 6,
J100: 7,
},
},
awardProfiles: [
{
positionPoints: [
{ position: 1, points: 1000, level: { 1: 10000, 4: 2000, 7: 500 } },
// ...
],
},
],
},
};

Auto-Resolution

When calling getEventRankingPoints() without an explicit level parameter, the engine automatically resolves the numeric level from:

  1. event.eventTier (if set) — checked first
  2. tournament.tournamentTier — fallback
  3. Policy's tierToLevel[tier.system][tier.value] — mapping
// Before: caller had to know the numeric level
const result = tournamentEngine.getEventRankingPoints({
policyDefinitions: policy,
eventId: 'evt-1',
level: 4, // caller must know ITF J500 = level 4
});

// After: level auto-resolved from tier
tournamentEngine.setTournamentTier({
tournamentTier: { system: 'ITF_JUNIOR', value: 'J500' },
});
const result = tournamentEngine.getEventRankingPoints({
policyDefinitions: policy,
eventId: 'evt-1',
// level auto-resolved: ITF_JUNIOR.J500 → 4
});

An explicit level parameter always takes precedence over tier resolution.

  • Registration Profile — tournament logistics and entry information. Together with tournamentTier, these form the complete tournament metadata: the tier defines the competitive classification (ranking points, draw size requirements) while the registration profile captures operational details (deadlines, fees, accommodation).

vs tournamentLevel

tournamentLeveltournamentTier
WhatOrganizational scopeCompetitive prestige
TypeEnum (CLUB, DISTRICT, REGIONAL, NATIONAL, INTERNATIONAL, ZONAL, LOCAL, RECREATIONAL)Structured: { system, value, numericRank? }
ExamplesNATIONAL{ system: 'ATP', value: '1000' }
AffectsGovernance, sanctioningRanking points, draw size requirements, prize money
UniversalYes — same across all sportsNo — federation-specific