fm.freemix.license.grant
A FreeMix license grant defining permissions for a track or stem
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | license.freemix.fm |
| Indexed |
Checks
Valid Lint pass{
"$type": "com.atproto.lexicon.schema",
"defs": {
"grants": {
"description": "Machine-readable permissions granted by this license",
"properties": {
"aiTraining": {
"description": "Can use for AI/ML training",
"type": "boolean"
},
"commercialUse": {
"description": "Commercial use allowed",
"type": "boolean"
},
"djEdit": {
"description": "Can create DJ edits (extended intros/outros, instrumentals)",
"type": "boolean"
},
"djPerformance": {
"description": "Public DJ performance allowed",
"type": "boolean"
},
"mixDistribution": {
"description": "Can distribute recorded mix",
"type": "boolean"
},
"mixInclusion": {
"description": "Can include in continuous DJ mix",
"type": "boolean"
},
"redistribute": {
"description": "Can redistribute full track",
"type": "boolean"
},
"remix": {
"description": "Can create remixes",
"type": "boolean"
},
"sample": {
"description": "Can sample portions",
"type": "boolean"
},
"stemAccess": {
"description": "Stems available for use",
"type": "boolean"
}
},
"required": [
"remix",
"sample",
"redistribute",
"commercialUse",
"stemAccess",
"djPerformance",
"djEdit",
"mixInclusion",
"mixDistribution",
"aiTraining"
],
"type": "object"
},
"main": {
"description": "A FreeMix license grant defining permissions for a track or stem",
"key": "tid",
"record": {
"properties": {
"createdAt": {
"description": "Record creation timestamp",
"format": "datetime",
"maxLength": 100,
"type": "string"
},
"grants": {
"description": "Machine-readable permissions granted by this license",
"ref": "#grants",
"type": "ref"
},
"legalText": {
"description": "URI to the full license legal text",
"format": "uri",
"maxLength": 3000,
"type": "string"
},
"modifiers": {
"description": "Optional license modifiers",
"ref": "#modifiers",
"type": "ref"
},
"requires": {
"description": "Obligations required when using this content",
"ref": "#requires",
"type": "ref"
},
"restrictions": {
"description": "Restrictions on use",
"ref": "#restrictions",
"type": "ref"
},
"tier": {
"description": "License tier: open (public domain), remix (full rights), noncommercial (NC use), stems (stems for creative use), dj (DJ edits/performance), samples (sample packs, 0% royalty)",
"knownValues": [
"open",
"remix",
"noncommercial",
"stems",
"dj",
"samples"
],
"maxLength": 100,
"type": "string"
}
},
"required": [
"tier",
"modifiers",
"grants",
"requires",
"restrictions",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"modifiers": {
"description": "License modifiers that can be combined with tiers",
"properties": {
"credit": {
"default": false,
"description": "Attribution required",
"type": "boolean"
},
"mix": {
"default": false,
"description": "Inclusion in DJ mixes allowed",
"type": "boolean"
},
"noAI": {
"default": false,
"description": "Excludes from AI/ML training",
"type": "boolean"
},
"royaltyRate": {
"description": "Royalty on derivative sales, in BASIS POINTS (x100 of percent): 250 = 2.5%, 500 = 5%, 10000 = 100%. FM-426: scaled to an integer because ATProto has no float type and creators may set fractional rates (e.g. 2.5%); matches the royalty_sales/royalty_legs bps convention. The human percent is rendered in the canonical license string (e.g. Royalty(2.5%)) and the DB licenseModifiers jsonb stays float percent — convert at this PDS-record boundary only. Not active until Phase 3 but recorded from day one.",
"maximum": 10000,
"minimum": 1,
"type": "integer"
},
"shareAlike": {
"default": false,
"description": "Derivatives must carry a FreeMix license",
"type": "boolean"
},
"shareAlikeStems": {
"default": false,
"description": "FM-464: strengthens shareAlike — Remix derivatives must also include stems. Requires shareAlike to also be true. Additive; existing records omit it (defaults false).",
"type": "boolean"
}
},
"type": "object"
},
"requires": {
"description": "Obligations required when using this content",
"properties": {
"attribution": {
"description": "Must credit original creator",
"type": "boolean"
},
"attributionCascade": {
"description": "Attribution required through full remix chain",
"type": "boolean"
},
"negotiateCommercial": {
"description": "Commercial use requires separate agreement",
"type": "boolean"
},
"royalty": {
"description": "Royalty payment required on derivative sales (rate specified in modifiers.royaltyRate)",
"type": "boolean"
},
"shareAlike": {
"description": "Derivatives must carry FreeMix license",
"type": "boolean"
},
"tracklist": {
"description": "Mixes must include timestamped tracklist",
"type": "boolean"
}
},
"required": [
"attribution",
"attributionCascade",
"tracklist",
"royalty",
"shareAlike",
"negotiateCommercial"
],
"type": "object"
},
"restrictions": {
"description": "Restrictions on use",
"properties": {
"noAiTraining": {
"description": "Cannot use for AI/ML training",
"type": "boolean"
},
"noFullTrackRedistribution": {
"description": "Cannot redistribute full track (StemsOnly, DJ)",
"type": "boolean"
},
"noSourceRedistribution": {
"description": "Cannot redistribute source files (DJ)",
"type": "boolean"
},
"nonCommercialOnly": {
"description": "Only non-commercial use (NonCommercial)",
"type": "boolean"
}
},
"required": [
"noFullTrackRedistribution",
"noSourceRedistribution",
"nonCommercialOnly",
"noAiTraining"
],
"type": "object"
}
},
"id": "fm.freemix.license.grant",
"lexicon": 1
}