diff --git a/docs/schema.md b/docs/schema.md index 584771e..21540d9 100644 --- a/docs/schema.md +++ b/docs/schema.md @@ -177,6 +177,14 @@ type Artist implements Node, Entity { # field. typeID: MBID + # List of [Interested Parties Information](https://musicbrainz.org/doc/IPI) + # (IPI) codes for the artist. + ipis: [IPI] + + # List of [International Standard Name Identifier](https://musicbrainz.org/doc/ISNI) + # (ISNI) codes for the artist. + isnis: [ISNI] + # A list of recordings linked to this entity. recordings(after: String, first: Int): RecordingConnection @@ -587,11 +595,16 @@ type InstrumentEdge { score: Int } -# An [IPI](https://musicbrainz.org/doc/IPI) (interested party -# information) code is an identifying number assigned by the CISAC database for -# musical rights management. +# An [Interested Parties Information](https://musicbrainz.org/doc/IPI) +# (IPI) code is an identifying number assigned by the CISAC database for musical +# rights management. scalar IPI +# The [International Standard Name Identifier](https://musicbrainz.org/doc/ISNI) +# (ISNI) is an ISO standard for uniquely identifying the public identities of +# contributors to media content. +scalar ISNI + # [Labels](https://musicbrainz.org/doc/Label) represent mostly # (but not only) imprints. To a lesser extent, a label entity may be created to # represent a record company. @@ -631,8 +644,8 @@ type Label implements Node, Entity { # of the label. labelCode: Int - # List of IPI (interested party information) codes for the - # label. + # List of [Interested Parties Information](https://musicbrainz.org/doc/IPI) + # codes for the label. ipis: [IPI] # A type describing the main activity of the label, e.g. diff --git a/docs/types.md b/docs/types.md index 5618c62..f7f625e 100644 --- a/docs/types.md +++ b/docs/types.md @@ -67,6 +67,7 @@ You may also be interested in reading the [schema in GraphQL syntax](schema.md).
  • [Degrees](#degrees)
  • [ID](#id)
  • [IPI](#ipi)
  • +
  • [ISNI](#isni)
  • [Int](#int)
  • [Locale](#locale)
  • [MBID](#mbid)
  • @@ -487,6 +488,18 @@ field. MBID The MBID associated with the value of the type field. + + + ipis + [IPI] + List of Interested Parties Information +(IPI) codes for the artist. + + + isnis + [ISNI] + List of International Standard Name Identifier +(ISNI) codes for the artist. recordings @@ -1388,8 +1401,8 @@ of the label. ipis [IPI] - List of IPI (interested party information) codes for the -label. + List of Interested Parties Information +codes for the label. type @@ -3985,9 +3998,15 @@ The `ID` scalar type represents a unique identifier, often used to refetch an ob ### IPI -An [IPI](https://musicbrainz.org/doc/IPI) (interested party -information) code is an identifying number assigned by the CISAC database for -musical rights management. +An [Interested Parties Information](https://musicbrainz.org/doc/IPI) +(IPI) code is an identifying number assigned by the CISAC database for musical +rights management. + +### ISNI + +The [International Standard Name Identifier](https://musicbrainz.org/doc/ISNI) +(ISNI) is an ISO standard for uniquely identifying the public identities of +contributors to media content. ### Int diff --git a/schema.json b/schema.json index 96091d6..d16e86b 100644 --- a/schema.json +++ b/schema.json @@ -1471,6 +1471,38 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "ipis", + "description": "List of [Interested Parties Information](https://musicbrainz.org/doc/IPI)\n(IPI) codes for the artist.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "IPI", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "isnis", + "description": "List of [International Standard Name Identifier](https://musicbrainz.org/doc/ISNI)\n(ISNI) codes for the artist.", + "args": [], + "type": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ISNI", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "recordings", "description": "A list of recordings linked to this entity.", @@ -1764,6 +1796,26 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "SCALAR", + "name": "IPI", + "description": "An [Interested Parties Information](https://musicbrainz.org/doc/IPI)\n(IPI) code is an identifying number assigned by the CISAC database for musical\nrights management.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "SCALAR", + "name": "ISNI", + "description": "The [International Standard Name Identifier](https://musicbrainz.org/doc/ISNI)\n(ISNI) is an ISO standard for uniquely identifying the public identities of\ncontributors to media content.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "RecordingConnection", @@ -3153,7 +3205,7 @@ }, { "name": "ipis", - "description": "List of IPI (interested party information) codes for the\nlabel.", + "description": "List of [Interested Parties Information](https://musicbrainz.org/doc/IPI)\ncodes for the label.", "args": [], "type": { "kind": "LIST", @@ -3314,16 +3366,6 @@ "enumValues": null, "possibleTypes": null }, - { - "kind": "SCALAR", - "name": "IPI", - "description": "An [IPI](https://musicbrainz.org/doc/IPI) (interested party\ninformation) code is an identifying number assigned by the CISAC database for\nmusical rights management.", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, { "kind": "OBJECT", "name": "Relationships", diff --git a/src/types/artist.js b/src/types/artist.js index da7661f..9ec6fb8 100644 --- a/src/types/artist.js +++ b/src/types/artist.js @@ -1,7 +1,8 @@ -import { GraphQLObjectType, GraphQLString } from 'graphql/type' +import { GraphQLObjectType, GraphQLString, GraphQLList } from 'graphql/type' import Node from './node' import Entity from './entity' import Area from './area' +import { IPI, ISNI } from './scalars' import { resolveWithFallback, fieldWithID, @@ -66,6 +67,16 @@ neither. Groups do not have genders.` ...fieldWithID('type', { description: 'Whether an artist is a person, a group, or something else.' }), + ipis: { + type: new GraphQLList(IPI), + description: `List of [Interested Parties Information](https://musicbrainz.org/doc/IPI) +(IPI) codes for the artist.` + }, + isnis: { + type: new GraphQLList(ISNI), + description: `List of [International Standard Name Identifier](https://musicbrainz.org/doc/ISNI) +(ISNI) codes for the artist.` + }, recordings, releases, releaseGroups, diff --git a/src/types/label.js b/src/types/label.js index 2b4c1c4..fca312b 100644 --- a/src/types/label.js +++ b/src/types/label.js @@ -52,8 +52,8 @@ of the label.` }, ipis: { type: new GraphQLList(IPI), - description: `List of IPI (interested party information) codes for the -label.` + description: `List of [Interested Parties Information](https://musicbrainz.org/doc/IPI) +codes for the label.` }, ...fieldWithID('type', { description: `A type describing the main activity of the label, e.g. diff --git a/src/types/scalars.js b/src/types/scalars.js index f77b4a6..1f1934f 100644 --- a/src/types/scalars.js +++ b/src/types/scalars.js @@ -80,9 +80,9 @@ export const Duration = createScalar({ export const IPI = createScalar({ name: 'IPI', - description: `An [IPI](https://musicbrainz.org/doc/IPI) (interested party -information) code is an identifying number assigned by the CISAC database for -musical rights management.` + description: `An [Interested Parties Information](https://musicbrainz.org/doc/IPI) +(IPI) code is an identifying number assigned by the CISAC database for musical +rights management.` }) export const ISNI = createScalar({ diff --git a/test/schema.js b/test/schema.js index fdd74b3..2bc8372 100644 --- a/test/schema.js +++ b/test/schema.js @@ -463,3 +463,19 @@ test('Releases have an ASIN field', testData, const { release } = data.lookup t.is(release.asin, 'B01KN6XDS6') }) + +test('Artists have a list of ISNIs and IPIs', testData, + ` + { + lookup { + artist(mbid: "65314b12-0e08-43fa-ba33-baaa7b874c15") { + ipis + isnis + } + } + } + `, (t, data) => { + const { artist } = data.lookup + t.deepEqual(artist.ipis, ['00006457004']) + t.deepEqual(artist.isnis, ['0000000110273481']) + })