dev.pythonplayer123.music.scrobbleBatch
A container of listens. Writers fill it by bytes: its createRecord or putRecord JSON body stays under the PDS write limit, so the 10,000-entry bound is a resource ceiling that no record of valid entries reaches. Each entry has a stable TID id and every single-scrobble field, including its own createdAt. The envelope also has createdAt.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | music.pythonplayer123.dev |
| Indexed |
Checks
Validunlimited-stringdefs.main.record.properties.listens.items.properties.recordingMbidNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A container of listens. Writers fill it by bytes: its createRecord or putRecord JSON body stays under the PDS write limit, so the 10,000-entry bound is a resource ceiling that no record of valid entries reaches. Each entry has a stable TID id and every single-scrobble field, including its own createdAt. The envelope also has createdAt.",
"key": "tid",
"record": {
"properties": {
"createdAt": {
"description": "Envelope creation time, validated against event receipt time.",
"format": "datetime",
"type": "string"
},
"listens": {
"items": {
"properties": {
"album": {
"description": "If present, raw 1–256 Unicode scalar values, and nonempty after trimming; enforced by the validator.",
"maxLength": 1024,
"minLength": 1,
"type": "string"
},
"albumArtist": {
"description": "Optional album artist (Last.fm albumArtist, ListenBrainz release_artist_name); raw 1–256 Unicode scalar values, and nonempty after trimming; enforced by the validator.",
"maxLength": 1024,
"minLength": 1,
"type": "string"
},
"artist": {
"description": "One credited display string; raw 1–256 Unicode scalar values, and nonempty after trimming. The scalar limit is enforced by the validator.",
"maxLength": 1024,
"minLength": 1,
"type": "string"
},
"artistMbids": {
"description": "Optional unverified MusicBrainz artist UUIDs, at most 10 and distinct; runtime validates UUID syntax.",
"items": {
"maxLength": 36,
"type": "string"
},
"maxLength": 10,
"type": "array"
},
"createdAt": {
"description": "Explicit UTC RFC3339, from 1970-01-01 through event receipt time plus 300 seconds inclusive.",
"format": "datetime",
"type": "string"
},
"durationSeconds": {
"maximum": 86400,
"minimum": 1,
"type": "integer"
},
"id": {
"description": "Stable unique TID listen id within this container.",
"format": "tid",
"type": "string"
},
"isrc": {
"description": "Optional ISRC, uppercase, matching ^[A-Z]{2}[A-Z0-9]{3}[0-9]{7}$; enforced by the validator.",
"maxLength": 12,
"minLength": 12,
"type": "string"
},
"listenedAt": {
"description": "Explicit UTC RFC3339, from 1970-01-01 through event receipt time plus 300 seconds inclusive.",
"format": "datetime",
"type": "string"
},
"musicService": {
"description": "Optional lowercase DNS name of the music service the listen came from (ListenBrainz music_service); enforced by the validator.",
"maxLength": 253,
"minLength": 1,
"type": "string"
},
"recordingMbid": {
"description": "Optional unverified recording UUID; runtime validates UUID syntax. Not a grouping key.",
"type": "string"
},
"releaseGroupMbid": {
"description": "Optional unverified MusicBrainz release-group UUID; runtime validates UUID syntax.",
"maxLength": 36,
"type": "string"
},
"releaseMbid": {
"description": "Optional unverified MusicBrainz release UUID; runtime validates UUID syntax.",
"maxLength": 36,
"type": "string"
},
"submissionClient": {
"description": "Optional name (and version) of the submitting client; raw 1–64 Unicode scalar values and at most 256 UTF-8 bytes; enforced by the validator.",
"maxLength": 256,
"minLength": 1,
"type": "string"
},
"track": {
"description": "Raw 1–256 Unicode scalar values, and nonempty after trimming; enforced by the validator.",
"maxLength": 1024,
"minLength": 1,
"type": "string"
},
"trackNumber": {
"description": "Optional position of the track on its release.",
"maximum": 9999,
"minimum": 1,
"type": "integer"
}
},
"required": [
"id",
"artist",
"track",
"listenedAt",
"createdAt"
],
"type": "object"
},
"maxLength": 10000,
"minLength": 1,
"type": "array"
}
},
"required": [
"createdAt",
"listens"
],
"type": "object"
},
"type": "record"
}
},
"description": "Candidate schema for an unpublished container of completed listens. The production namespace must publish and review this schema separately before enabling batch writes.",
"id": "dev.pythonplayer123.music.scrobbleBatch",
"lexicon": 1
}