···132132 "minimum": 1
133133 }
134134 }
135135+ },
136136+ "artists": {
137137+ "type": "object",
138138+ "properties": {
139139+ "mbid": {
140140+ "type": "string",
141141+ "description": "The MusicBrainz Identifier (MBID) of the artist."
142142+ },
143143+ "name": {
144144+ "type": "string",
145145+ "description": "The name of the artist.",
146146+ "minLength": 1,
147147+ "maxLength": 256
148148+ }
149149+ }
135150 }
136151 }
137152}
+8
apps/api/lexicons/scrobble/scrobble.json
···2929 "minLength": 1,
3030 "maxLength": 256
3131 },
3232+ "artists": {
3333+ "type": "array",
3434+ "description": "The artists of the song with MusicBrainz IDs.",
3535+ "items": {
3636+ "type": "ref",
3737+ "ref": "app.rocksky.artist.defs#artistMbid"
3838+ }
3939+ },
3240 "albumArtist": {
3341 "type": "string",
3442 "description": "The album artist of the song.",
+8
apps/api/lexicons/song/song.json
···2929 "minLength": 1,
3030 "maxLength": 256
3131 },
3232+ "artists": {
3333+ "type": "array",
3434+ "description": "The artists of the song with MusicBrainz IDs.",
3535+ "items": {
3636+ "type": "ref",
3737+ "ref": "app.rocksky.artist.defs#artistMbid"
3838+ }
3939+ },
3240 "albumArtist": {
3341 "type": "string",
3442 "description": "The album artist of the song.",
+16
apps/api/pkl/defs/artist/defs.pkl
···161161162162 }
163163 }
164164+165165+ ["artists"] {
166166+ type = "object"
167167+ properties {
168168+ ["mbid"] = new StringType {
169169+ type = "string"
170170+ description = "The MusicBrainz Identifier (MBID) of the artist."
171171+ }
172172+ ["name"] = new StringType {
173173+ type = "string"
174174+ description = "The name of the artist."
175175+ minLength = 1
176176+ maxLength = 256
177177+ }
178178+ }
179179+ }
164180}
+10
apps/api/pkl/defs/scrobble/scrobble.pkl
···2525 maxLength = 256
2626 }
27272828+2929+3030+ ["artists"] = new Array {
3131+ type = "array"
3232+ description = "The artists of the song with MusicBrainz IDs."
3333+ items = new Ref {
3434+ ref = "app.rocksky.artist.defs#artistMbid"
3535+ }
3636+ }
3737+2838 ["albumArtist"] = new StringType {
2939 type = "string"
3040 description = "The album artist of the song."
+8
apps/api/pkl/defs/song/song.pkl
···2525 maxLength = 256
2626 }
27272828+ ["artists"] = new Array {
2929+ type = "array"
3030+ description = "The artists of the song with MusicBrainz IDs."
3131+ items = new Ref {
3232+ ref = "app.rocksky.artist.defs#artistMbid"
3333+ }
3434+ }
3535+2836 ["albumArtist"] = new StringType {
2937 type = "string"
3038 description = "The album artist of the song."
+31
apps/api/src/lexicon/lexicons.ts
···17201720 },
17211721 },
17221722 },
17231723+ artists: {
17241724+ type: "object",
17251725+ properties: {
17261726+ mbid: {
17271727+ type: "string",
17281728+ description: "The MusicBrainz Identifier (MBID) of the artist.",
17291729+ },
17301730+ name: {
17311731+ type: "string",
17321732+ description: "The name of the artist.",
17331733+ minLength: 1,
17341734+ maxLength: 256,
17351735+ },
17361736+ },
17371737+ },
17231738 },
17241739 },
17251740 AppRockskyArtistGetArtistAlbums: {
···37693784 minLength: 1,
37703785 maxLength: 256,
37713786 },
37873787+ artists: {
37883788+ type: "array",
37893789+ description: "The artists of the song with MusicBrainz IDs.",
37903790+ items: {
37913791+ type: "ref",
37923792+ ref: "lex:app.rocksky.artist.defs#artistMbid",
37933793+ },
37943794+ },
37723795 albumArtist: {
37733796 type: "string",
37743797 description: "The album artist of the song.",
···46754698 description: "The artist of the song.",
46764699 minLength: 1,
46774700 maxLength: 256,
47014701+ },
47024702+ artists: {
47034703+ type: "array",
47044704+ description: "The artists of the song with MusicBrainz IDs.",
47054705+ items: {
47064706+ type: "ref",
47074707+ ref: "lex:app.rocksky.artist.defs#artistMbid",
47084708+ },
46784709 },
46794710 albumArtist: {
46804711 type: "string",
···55import { lexicons } from "../../../lexicons";
66import { isObj, hasProp } from "../../../util";
77import { CID } from "multiformats/cid";
88+import type * as AppRockskyArtistDefs from "./artist/defs";
89910export interface Record {
1011 /** The title of the song. */
1112 title: string;
1213 /** The artist of the song. */
1314 artist: string;
1515+ /** The artists of the song with MusicBrainz IDs. */
1616+ artists?: AppRockskyArtistDefs.ArtistMbid[];
1417 /** The album artist of the song. */
1518 albumArtist: string;
1619 /** The album of the song. */
+3
apps/api/src/lexicon/types/app/rocksky/song.ts
···55import { lexicons } from "../../../lexicons";
66import { isObj, hasProp } from "../../../util";
77import { CID } from "multiformats/cid";
88+import type * as AppRockskyArtistDefs from "./artist/defs";
89910export interface Record {
1011 /** The title of the song. */
1112 title: string;
1213 /** The artist of the song. */
1314 artist: string;
1515+ /** The artists of the song with MusicBrainz IDs. */
1616+ artists?: AppRockskyArtistDefs.ArtistMbid[];
1417 /** The album artist of the song. */
1518 albumArtist: string;
1619 /** The album of the song. */