Territory Models
Territory models define geographic regions and markets for rights management, distribution, and licensing in DDEX messages.
Core Types
Territory
Represents a geographic region or market:
interface Territory {
code: string;
excludedTerritories?: Territory[];
applicableTerritoryCode?: string;
}
Territory Codes
DDEX supports multiple territory coding systems:
- ISO 3166-1 Alpha-2 - Two-letter country codes (US, GB, JP)
- ISO 3166-1 Alpha-3 - Three-letter country codes (USA, GBR, JPN)
- CISAC TIS - Specialized music industry territory codes
- Custom codes - Worldwide, Europe, etc.
Common Territory Definitions
Standard Territories
// Individual countries
{ code: 'US' } // United States
{ code: 'GB' } // United Kingdom
{ code: 'DE' } // Germany
{ code: 'FR' } // France
{ code: 'JP' } // Japan
// Regional groupings
{ code: 'Worldwide' }
{ code: 'Europe' }
{ code: 'NorthAmerica' }
{ code: 'Asia' }
Territory Exclusions
Territories can exclude specific regions:
// Worldwide except certain countries
{
code: 'Worldwide',
excludedTerritories: [
{ code: 'US' },
{ code: 'CN' }
]
}
// European Union excluding UK
{
code: 'EuropeanUnion',
excludedTerritories: [
{ code: 'GB' }
]
}
Territory Usage Contexts
Deal Territories
Defines where licensing agreements apply:
interface Deal {
territory: Territory[];
dealScope: {
excludedTerritories?: Territory[];
};
}
Release Territories
Specifies where releases are available:
interface Release {
territories: Territory[];
releaseInformation: {
salesStartDate?: string;
territories?: Territory[];
}[];
}
Rights Territories
Defines geographic scope of usage rights:
interface UsageRights {
territory?: Territory[];
useType: UseType[];
period?: Period;
}
Usage Examples
Accessing Territory Data
const result = await parser.parse(xmlContent);
// Get all territories from deals
const dealTerritories = result.flat.deals
.flatMap(deal => deal.territory)
.map(t => t.code);
console.log('Deal territories:', [...new Set(dealTerritories)]);
// Check if territory is included
const hasUSRights = result.flat.deals.some(deal =>
deal.territory.some(t =>
t.code === 'US' || t.code === 'Worldwide'
) && !deal.territory.some(t =>
t.excludedTerritories?.some(excluded => excluded.code === 'US')
)
);
Building Territory Data
// Simple territory list
const territories = [
{ code: 'US' },
{ code: 'CA' },
{ code: 'MX' }
];
// Global with exclusions
const globalTerritory = {
code: 'Worldwide',
excludedTerritories: [
{ code: 'CN' },
{ code: 'RU' },
{ code: 'KP' }
]
};
// In a deal context
const buildRequest = {
deals: [{
dealId: 'DEAL001',
territory: [globalTerritory],
usageRights: [{
useType: ['Stream'],
territory: [{ code: 'US' }] // More restrictive than deal level
}]
}]
};
Territory Validation
Check territory coverage and conflicts:
function isTerritoryCovered(territory: string, coverageTerritories: Territory[]): boolean {
return coverageTerritories.some(t => {
// Check direct match
if (t.code === territory || t.code === 'Worldwide') {
// Check exclusions
return !t.excludedTerritories?.some(excluded => excluded.code === territory);
}
return false;
});
}
// Usage
const isUSCovered = isTerritoryCovered('US', deal.territory);
Regional Groupings
Common regional territory definitions:
const territoryGroups = {
northAmerica: ['US', 'CA', 'MX'],
europe: ['GB', 'DE', 'FR', 'IT', 'ES', 'NL', 'BE', 'AT', 'CH'],
asia: ['JP', 'KR', 'CN', 'IN', 'SG', 'HK', 'TH', 'MY'],
oceania: ['AU', 'NZ'],
latinAmerica: ['BR', 'AR', 'CL', 'CO', 'PE']
};
// Build territories for a region
const europeTerritory = {
code: 'Europe',
applicableTerritoryCode: territoryGroups.europe.join(',')
};
Territory Hierarchy
Territories can have hierarchical relationships:
// Country is part of larger region
const nestedTerritories = {
worldwide: {
code: 'Worldwide',
excludedTerritories: []
},
northAmerica: {
code: 'NorthAmerica',
includes: ['US', 'CA', 'MX']
},
unitedStates: {
code: 'US',
parentTerritory: 'NorthAmerica'
}
};
See Also
- Deal Models - Territory usage in licensing
- DateTime Models - Territory-specific dates and periods
- Technical Models - Territory-specific technical requirements