fm.freemix.release

lex-publisher.freemix.fm

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A release: a top-level container that groups member leaves into a put-out work (FM-549 s38). Single-owner (distinct from collection.*, the curatorial multi-owner lens). Container points DOWN at its members.",
      "key": "tid",
      "record": {
        "properties": {
          "coverArtHash": {
            "description": "SHA-256 hash of the cover art.",
            "maxLength": 200,
            "type": "string"
          },
          "coverArtUrl": {
            "description": "URL to cover art image.",
            "format": "uri",
            "maxLength": 3000,
            "type": "string"
          },
          "createdAt": {
            "description": "Record creation timestamp.",
            "format": "datetime",
            "maxLength": 100,
            "type": "string"
          },
          "currency": {
            "description": "ISO-4217 currency code. Phase 1 = USD only. INLINE sellability shape — keep in sync across sellable types.",
            "knownValues": [
              "USD"
            ],
            "maxLength": 3,
            "type": "string"
          },
          "description": {
            "description": "Release description.",
            "maxLength": 5000,
            "type": "string"
          },
          "kind": {
            "description": "The product form of the release (FM-549 s41: 8 values). OPEN enum by design — adding a kind later is a data change, not a lexicon change. `stems` = a stems bundle; `trackWithStems` = track + its stems; `samplePack` = samples as members; `djSet` = a DJ set.",
            "knownValues": [
              "single",
              "ep",
              "album",
              "compilation",
              "stems",
              "trackWithStems",
              "samplePack",
              "djSet"
            ],
            "maxLength": 50,
            "type": "string"
          },
          "licenseSummary": {
            "description": "DERIVED summary cache (FM-549 s40): the shared license value when all member leaves agree, or 'mixed' when they differ. Powers Browse license search + display. Recomputed at publish and on any post-publish leaf edit. READ-ONLY for sort/display — NEVER read by enforcement (gate/cascade/charge read the LEAF, not this).",
            "maxLength": 100,
            "type": "string"
          },
          "members": {
            "description": "Ordered member leaves of this release (FM-549 s38: containers point DOWN at members). Each is an AT-URI ref to a track / stem / sample / group.stems record.",
            "items": {
              "properties": {
                "cid": {
                  "description": "CID of the member record (pins to exact version). Optional.",
                  "format": "cid",
                  "maxLength": 200,
                  "type": "string"
                },
                "position": {
                  "description": "Display order within the release (0-indexed).",
                  "minimum": 0,
                  "type": "integer"
                },
                "uri": {
                  "description": "AT URI of the member leaf record (fm.freemix.track / .stem / .sample / .group.stems).",
                  "format": "at-uri",
                  "maxLength": 3000,
                  "type": "string"
                }
              },
              "required": [
                "uri"
              ],
              "type": "object"
            },
            "maxLength": 200,
            "type": "array"
          },
          "priceCents": {
            "description": "On-network price in integer cents (FM-549: price on-network; offer public, sale private). 0 or absent = free. Hard price floor enforced in app, not schema. INLINE sellability shape — authored identically in fm.freemix.release and fm.freemix.group.stemsGroup; keep in sync (s41).",
            "minimum": 0,
            "type": "integer"
          },
          "royaltySummary": {
            "description": "DERIVED summary cache (FM-549 s40): the shared royalty posture when member leaves agree, or 'mixed' when they differ. Same rules as licenseSummary — read-only, never read by enforcement. Royalties themselves stay track-level only.",
            "maxLength": 100,
            "type": "string"
          },
          "seller": {
            "description": "parties.seller (s39): the single account DID that owns and sells this release (owner = seller = uploader; may be an org account). Charge/entitlement read THIS field. INLINE — keep in sync.",
            "format": "did",
            "type": "string"
          },
          "title": {
            "description": "Release title.",
            "maxLength": 300,
            "type": "string"
          }
        },
        "required": [
          "kind",
          "title",
          "seller",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "fm.freemix.release",
  "lexicon": 1
}

Validate Record

Validate a record against fm.freemix.release

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:bt7c6cqevgefnvej5cmgke4g
CID
bafyreie7ktqct3lep6m2ezffwn36sngwxwdqpyjl5kykkfg3qgdjgfb7hm
Indexed At
2026-07-26 20:07 UTC
AT-URI
at://did:plc:bt7c6cqevgefnvej5cmgke4g/com.atproto.lexicon.schema/fm.freemix.release

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A stems group: a structural grouping of stems that is downloadable/sellable as a unit, independent of any release (FM-549 s38). First record under the net-new group.* segment (named group.stems, not group.stemsGroup —…

  • A samples group: a structural grouping of samples uploaded and presented as a unit, independent of any release (FM-824; mirrors fm.freemix.group.stems, FM-549 s38). A sample PACK is this same record with a price — one…

  • A music track record on FreeMix. Top-level leaf (FM-549 s38: pulled out from under the release.* prefix; release.track -> track).

  • A music track record on FreeMix

  • A stem (isolated track component) belonging to a parent track

Lexicon Garden

@