Overview
The Default Settings system provides a powerful way to define reusable configurations that automatically apply to your catalog items (assets, products, and releases). Settings cascade through a hierarchical inheritance chain, allowing you to set defaults at different organizational levels while maintaining the flexibility to override them when needed.
Key Benefits
- Reduce Repetitive Data Entry: Set common values once and have them automatically applied to new items
- Maintain Consistency: Ensure catalog items follow organizational standards and branding
- Flexible Inheritance: Override defaults at any level in the hierarchy
- Template Library: Create and share reusable configuration presets
- Preview Before Apply: Test how defaults will affect items without modifying data
Inheritance Chain
Default settings follow a priority-based inheritance chain, with higher levels overriding lower levels:
User Settings (Highest Priority)
↓
Artist Settings
↓
Label Settings
↓
Catalog Settings
↓
Tenant Settings (Lowest Priority)
Example Scenario:
- Tenant Level: Set default language to “en” for all content
- Label Level: Override with genre [“Rock”, “Alternative”] for a specific label
- Artist Level: Add explicit content flag for a particular artist
- User Level: Individual users can set their own defaults
When creating a new product, the system merges all applicable defaults, with more specific settings taking precedence.
Settings Categories
Default settings are organized into four categories:
1. Content Settings
Metadata related to the creative content:
- type: Media type (Audio, Video, Ringtone, YouTube)
- format: Release format (Single, EP, Album, LP)
- version: Version info (Deluxe Edition, Remastered, etc.)
- explicit: Content rating (explicit, clean)
- language: Primary language (ISO 639-1 code)
- mainGenre: Primary genre classifications
- subGenre: Secondary genre classifications
- contributors: Role-based contributors map
Example:
{
"content": {
"type": "Audio",
"format": "Album",
"mainGenre": ["Hip-Hop", "Rap"],
"explicit": "explicit",
"language": "en",
"contributors": {
"Producer": ["Dr. Dre", "Scott Storch"],
"Mixer": ["Mike Dean"]
}
}
}
2. Business Settings
Rights, ownership, and commercial metadata:
- label: Record label name
- copyright: Copyright notice (e.g., ”© 2024 Label Name”)
- publisher: Music publisher name
- copyrightOwner: Copyright holder
- distribution: Distribution method or partner
- status: Default release status (Live, Scheduled, Pending)
Example:
{
"business": {
"label": "Aftermath Entertainment",
"copyright": "© 2024 Aftermath Entertainment",
"publisher": "Universal Music Publishing",
"distribution": "Empire Distribution",
"status": "Pending"
}
}
3. DDEX Settings
DDEX message generation configuration:
- enableDDEX: Enable automatic DDEX message generation
- labelName: Label name for DDEX messages
- resourceReference: Resource reference pattern
- grid: Global Release Identifier
- icpn: International Catalog Product Number
Example:
{
"ddex": {
"enableDDEX": true,
"labelName": "Aftermath",
"resourceReference": "AFT-{YEAR}-{SEQUENCE}"
}
}
4. Validation Settings
Business rules and requirements:
- requireGenre: Enforce genre selection
- requireLyrics: Require lyrics for tracks
- requireDescription: Require description field
- minimumTrackCount: Minimum tracks per release
- maximumTrackCount: Maximum tracks per release
Example:
{
"validation": {
"requireGenre": true,
"requireLyrics": true,
"minimumTrackCount": 1,
"maximumTrackCount": 30
}
}
Quick Start Guide
Step 1: Set Tenant-Wide Defaults
Start by setting defaults that apply to your entire workspace:
POST /defaultsettings/tenant
{
"category": "content",
"settings": {
"content": {
"language": "en",
"type": "Audio"
}
}
}
Step 2: Create Label-Specific Overrides
Customize settings for specific labels:
POST /defaultsettings/label/{labelId}
{
"category": "content",
"settings": {
"content": {
"format": "Album",
"mainGenre": ["Electronic", "Dance"]
}
}
}
Step 3: Preview Before Creating Items
Test how defaults will apply to a new product:
POST /defaultsettings/preview/product
{
"labelId": "550e8400-e29b-41d4-a716-446655440000",
"productData": {
"productName": "New Album",
"releaseDate": "2024-12-01"
}
}
Response:
{
"success": true,
"data": {
"original": {
"productName": "New Album",
"releaseDate": "2024-12-01"
},
"withDefaults": {
"productName": "New Album",
"releaseDate": "2024-12-01",
"language": "en",
"type": "Audio",
"format": "Album",
"mainGenre": ["Electronic", "Dance"]
},
"appliedDefaults": [
{
"field": "language",
"value": "en",
"source": {
"entityType": "tenant",
"category": "content"
}
},
{
"field": "format",
"value": "Album",
"source": {
"entityType": "label",
"entityId": "550e8400-e29b-41d4-a716-446655440000",
"category": "content"
}
}
]
}
}
Working with Templates
Templates provide reusable configuration presets that can be quickly applied to entities.
Creating a Template
POST /defaultsettings/templates
{
"name": "Hip-Hop Album Standard",
"description": "Standard settings for hip-hop album releases",
"category": "content",
"entityType": "release",
"settings": {
"content": {
"type": "Audio",
"format": "Album",
"mainGenre": ["Hip-Hop", "Rap"],
"language": "en"
}
},
"isPublic": true,
"tags": ["hip-hop", "album", "standard"]
}
Applying a Template
Apply a template to create default settings for an artist:
POST /defaultsettings/templates/{templateId}/apply
{
"entityType": "artist",
"entityId": "660e8400-e29b-41d4-a716-446655440001"
}
Updating a Template
Modify an existing template (only the creator can update):
PUT /defaultsettings/templates/{templateId}
{
"name": "Updated Hip-Hop Album Standard",
"description": "Revised settings with new industry standards",
"tags": ["hip-hop", "album", "2024-update"]
}
Deleting a Template
Remove a template permanently (only the creator can delete):
DELETE /defaultsettings/templates/{templateId}
Deleting a template does not affect default settings that were created from it. Those settings remain intact.
Browsing Popular Templates
Discover frequently used templates:
GET /defaultsettings/templates/popular?limit=10
Searching Templates
Find templates by tags or search terms:
GET /defaultsettings/templates?tags=hip-hop,album&search=standard&limit=20
Advanced Use Cases
Use Case 1: Multi-Label Organization
Scenario: You manage multiple labels with different branding requirements.
Solution:
- Set tenant defaults for universal requirements (language, basic validation)
- Create label-specific settings for each imprint’s branding
- Use templates for genre-specific configurations
# Universal tenant settings
POST /defaultsettings/tenant
{
"category": "validation",
"settings": {
"validation": {
"requireGenre": true,
"requireDescription": true
}
}
}
# Label A: Electronic Music Focus
POST /defaultsettings/label/{labelAId}
{
"category": "content",
"settings": {
"content": {
"mainGenre": ["Electronic", "Dance"],
"format": "Single"
}
}
}
# Label B: Hip-Hop Focus
POST /defaultsettings/label/{labelBId}
{
"category": "content",
"settings": {
"content": {
"mainGenre": ["Hip-Hop", "Rap"],
"format": "Album",
"explicit": "explicit"
}
}
}
Use Case 2: Artist-Specific Branding
Scenario: An artist has consistent branding across all releases.
Solution:
- Set artist-level defaults for consistent metadata
- Include contributor information
- Set DDEX configuration for automated distribution
POST /defaultsettings/artist/{artistId}
{
"category": "content",
"settings": {
"content": {
"contributors": {
"Producer": ["Artist's Producer"],
"Mixer": ["Artist's Engineer"]
}
}
}
}
POST /defaultsettings/artist/{artistId}
{
"category": "business",
"settings": {
"business": {
"label": "Artist's Label",
"copyright": "© 2024 Artist Name",
"publisher": "Artist's Publishing"
}
}
}
Use Case 3: Cloning Settings
Scenario: You want to replicate settings from one artist to a similar artist.
Solution: Use the clone endpoint to copy all settings:
POST /defaultsettings/clone
{
"sourceEntityType": "artist",
"sourceEntityId": "550e8400-e29b-41d4-a716-446655440000",
"targetEntityType": "artist",
"targetEntityId": "660e8400-e29b-41d4-a716-446655440001"
}
Resolution and Preview Endpoints
Understanding Resolution
The resolution process merges settings from all applicable levels in the inheritance chain:
POST /defaultsettings/preview/resolve
{
"labelId": "550e8400-e29b-41d4-a716-446655440000",
"artistId": "660e8400-e29b-41d4-a716-446655440001",
"targetType": "release"
}
Response shows the complete resolution chain:
{
"success": true,
"data": {
"resolved": {
"content": {
"language": "en",
"type": "Audio",
"format": "Album",
"mainGenre": ["Hip-Hop", "Rap"],
"explicit": "explicit"
}
},
"chain": [
{
"entityType": "tenant",
"category": "content",
"settings": { "content": { "language": "en" } },
"priority": 0
},
{
"entityType": "label",
"entityId": "550e8400-...",
"category": "content",
"settings": { "content": { "type": "Audio" } },
"priority": 0
},
{
"entityType": "artist",
"entityId": "660e8400-...",
"category": "content",
"settings": {
"content": {
"format": "Album",
"mainGenre": ["Hip-Hop", "Rap"],
"explicit": "explicit"
}
},
"priority": 0
}
]
}
}
Preview by Entity Type
Test defaults for specific catalog item types:
Assets:
POST /defaultsettings/preview/asset
{
"artistId": "660e8400-e29b-41d4-a716-446655440001",
"assetData": {
"assetName": "New Track",
"duration": 180
}
}
Products:
POST /defaultsettings/preview/product
{
"labelId": "550e8400-e29b-41d4-a716-446655440000",
"productData": {
"productName": "New Album"
}
}
Releases:
POST /defaultsettings/preview/release
{
"artistId": "660e8400-e29b-41d4-a716-446655440001",
"releaseData": {
"title": "New Release",
"releaseDate": "2024-12-01"
}
}
Managing Settings
Retrieving Settings
Get all settings for an entity:
GET /defaultsettings/{entityType}/{entityId}
Filter by category:
GET /defaultsettings/artist/{artistId}?category=content
Include inactive settings:
GET /defaultsettings/label/{labelId}?includeInactive=true
Get a single setting by ID:
GET /defaultsettings/settings/{settingId}
This is useful when you have a setting ID from a previous response and want to retrieve just that specific setting without filtering through all entity settings.
Updating Settings
Update existing default settings (deep merge within category):
PUT /defaultsettings/{entityType}/{entityId}/{settingId}
{
"settings": {
"content": {
"explicit": "clean",
"version": "Radio Edit"
}
}
}
Deactivate without deleting:
PUT /defaultsettings/artist/{artistId}/{settingId}
{
"isActive": false
}
Deleting Settings
Permanently remove a setting:
DELETE /defaultsettings/{entityType}/{entityId}/{settingId}
Priority System
By default, all settings at the same level have equal priority (0). You can adjust priority for conflict resolution:
POST /defaultsettings/label/{labelId}
{
"category": "content",
"settings": {
"content": {
"mainGenre": ["Rock", "Alternative"]
}
},
"priority": 10
}
Higher priority values win within the same entity type.
Best Practices
1. Start Broad, Then Specialize
Begin with tenant-wide defaults for universal requirements, then add specificity at lower levels:
- Tenant: Language, basic validation rules
- Catalog: Default content type
- Label: Branding, genre preferences
- Artist: Specific contributors, copyright
- User: Personal workflow preferences
2. Use Templates for Reusable Patterns
Create templates for common configurations:
- Genre-specific settings (Hip-Hop Album, Rock Single, etc.)
- Release type patterns (Deluxe Edition, Remastered, Live)
- Territory-specific configurations
3. Preview Before Committing
Always use preview endpoints to verify:
- Default inheritance is working as expected
- No unintended overwrites
- All required fields will be populated
4. Document Your Template Library
Add clear descriptions and tags to templates:
{
"name": "Explicit Hip-Hop Album",
"description": "Standard explicit hip-hop album with advisory labeling",
"tags": ["hip-hop", "explicit", "album", "parental-advisory"],
"isPublic": true
}
5. Regularly Audit Settings
Periodically review and clean up:
- Inactive settings that should be deleted
- Outdated configuration values
- Unused templates
6. Consider Settings Succession
For time-based changes (e.g., label rebranding), create new settings with higher priority rather than modifying existing ones. This maintains audit trails.
Integration with Catalog Creation
Default settings automatically integrate with catalog creation workflows:
Asset Creation
POST /asset
{
"assetName": "New Track",
"artistId": "660e8400-e29b-41d4-a716-446655440001",
"duration": 180
// Defaults are automatically applied during creation
}
Product Creation
POST /product
{
"productName": "New Album",
"labelId": "550e8400-e29b-41d4-a716-446655440000",
"releaseDate": "2024-12-01"
// Label defaults + tenant defaults are merged
}
Release Creation
POST /releases
{
"title": "New Release",
"artistId": "660e8400-e29b-41d4-a716-446655440001"
// Full inheritance chain is applied
}
Error Handling
Common Errors
409 Conflict - Duplicate Setting:
{
"success": false,
"error": {
"code": "CONFLICT",
"message": "A default setting for this entity and category already exists"
}
}
Solution: Use PUT to update the existing setting instead.
404 Not Found - Entity Doesn’t Exist:
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Artist with ID 660e8400-... not found"
}
}
Solution: Verify the entity exists before creating settings.
400 Bad Request - Invalid Category:
{
"success": false,
"error": {
"code": "BAD_REQUEST",
"message": "Invalid category. Must be one of: content, business, ddex, validation"
}
}
API Reference
For complete endpoint documentation, see:
Default Settings Management
Template Management
Preview & Testing
Support
For questions or issues with Default Settings: