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'])
+ })