mirror of
https://github.com/BradNut/graphbrainz
synced 2025-09-08 17:40:32 +00:00
34 KiB
34 KiB
graphbrainz
GraphQL server for accessing the MusicBrainz API.
Schema
# [Aliases](https://musicbrainz.org/doc/Aliases) are variant
# names that are mostly used as search help: if a search matches an entity’s
# alias, the entity will be given as a result – even if the actual name wouldn’t
# be. They are available for artists, labels, and works.
type Alias {
# The aliased name of the entity.
name: String
# The string to use for the purpose of ordering by name (for
# example, by moving articles like ‘the’ to the end or a person’s last name to
# the front).
sortName: String
# The locale (language and/or country) in which the alias is
# used.
locale: String
# Whether this is the main alias for the entity in the
# specified locale (this could mean the most recent or the most common).
primary: Boolean
# The type or purpose of the alias – whether it is a variant,
# search hint, etc.
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
}
# [Areas](https://musicbrainz.org/doc/Area) are geographic regions
# or settlements (countries, cities, or the like).
type Area implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official name of the entity.
name: String
# The string to use for the purpose of ordering by name (for
# example, by moving articles like ‘the’ to the end or a person’s last name to
# the front).
sortName: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
isoCodes: [String]
# A list of artist entities linked to this entity.
artists(after: String, first: Int): ArtistConnection
# A list of event entities linked to this entity.
events(after: String, first: Int): EventConnection
# A list of label entities linked to this entity.
labels(after: String, first: Int): LabelConnection
# A list of place entities linked to this entity.
places(after: String, first: Int): PlaceConnection
# A list of release entities linked to this entity.
releases(after: String, first: Int, type: [ReleaseGroupType], status: [ReleaseStatus]): ReleaseConnection
}
# A connection to a list of items.
type AreaConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [AreaEdge]
}
# An edge in a connection.
type AreaEdge {
# The item at the end of the edge
node: Area
# A cursor for use in pagination
cursor: String!
}
# An [artist](https://musicbrainz.org/doc/Artist) is generally a
# musician, group of musicians, or other music professional (like a producer or
# engineer). Occasionally, it can also be a non-musical person (like a
# photographer, an illustrator, or a poet whose writings are set to music), or
# even a fictional character.
type Artist implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official name of the entity.
name: String
# The string to use for the purpose of ordering by name (for
# example, by moving articles like ‘the’ to the end or a person’s last name to
# the front).
sortName: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# [Aliases](https://musicbrainz.org/doc/Aliases) are used to
# store alternate names or misspellings.
aliases: [Alias]
country: String
# The area with which an artist is primarily identified. It
# is often, but not always, its birth/formation country.
area: Area
beginArea: Area
endArea: Area
# The begin and end dates of the entity’s existence. Its exact
# meaning depends on the type of entity.
lifeSpan: LifeSpan
# Whether a person or character identifies as male, female or
# neither. Groups do not have genders.
gender: String
# The MBID associated with the
# value of the `gender` field.
genderID: MBID
# Whether an artist is a person, a group, or something else.
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
# A list of recording entities linked to this entity.
recordings(after: String, first: Int): RecordingConnection
# A list of release entities linked to this entity.
releases(after: String, first: Int, type: [ReleaseGroupType], status: [ReleaseStatus]): ReleaseConnection
# A list of release group entities linked to this entity.
releaseGroups(after: String, first: Int, type: ReleaseGroupType, types: [ReleaseGroupType]): ReleaseGroupConnection
# A list of work entities linked to this entity.
works(after: String, first: Int): WorkConnection
# Relations between this entity and other entitites.
relations: Relations
}
# A connection to a list of items.
type ArtistConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [ArtistEdge]
}
# [Artist credits](https://musicbrainz.org/doc/Artist_Credits)
# indicate who is the main credited artist (or artists) for releases, release
# groups, tracks and recordings, and how they are credited. They consist of
# artists, with (optionally) their names as credited in the specific release,
# track, etc., and join phrases between them.
type ArtistCredit {
# The entity representing the artist referenced in the
# credits.
artist: Artist
# The name of the artist as credited in the specific release,
# track, etc.
name: String
# Join phrases might include words and/or punctuation to
# separate artist names as they appear on the release, track, etc.
joinPhrase: String
}
# An edge in a connection.
type ArtistEdge {
# The item at the end of the edge
node: Artist
# A cursor for use in pagination
cursor: String!
}
# A query for all MusicBrainz entities directly linked to another
# entity.
type BrowseQuery {
# Browse artist entities linked to the given arguments.
artists(
after: String
first: Int
# The MBID of an Area to which the entity is linked.
area: MBID
# The MBID of a Recording to which the entity is linked.
recording: MBID
# The MBID of a Release to which the entity is linked.
release: MBID
# The MBID of a Release Group to which the entity is linked.
releaseGroup: MBID
# The MBID of a Work to which the Artist is linked.
work: MBID
): ArtistConnection
# Browse event entities linked to the given arguments.
events(
after: String
first: Int
# The MBID of an Area to which the entity is linked.
area: MBID
# The MBID of an Artist to which the entity is linked.
artist: MBID
# The MBID of a Place to which the Event is linked.
place: MBID
): EventConnection
# Browse label entities linked to the given arguments.
labels(
after: String
first: Int
# The MBID of an Area to which the entity is linked.
area: MBID
# The MBID of a Release to which the entity is linked.
release: MBID
): LabelConnection
# Browse place entities linked to the given arguments.
places(
after: String
first: Int
# The MBID of an Area to which the entity is linked.
area: MBID
): PlaceConnection
# Browse recording entities linked to the given arguments.
recordings(
after: String
first: Int
# The MBID of an Artist to which the entity is linked.
artist: MBID
# The MBID of a Release to which the entity is linked.
release: MBID
): RecordingConnection
# Browse release entities linked to the given arguments.
releases(
after: String
first: Int
# The MBID of an Area to which the entity is linked.
area: MBID
# The MBID of an Artist to which the entity is linked.
artist: MBID
# The MBID of a Label to which the Release is linked.
label: MBID
# The MBID of a Track that is included in the Release.
track: MBID
# The MBID of an Artist that appears on a Track in the
# release, but is not included in the credits for the Release itself.
trackArtist: MBID
# The MBID of a Recording to which the entity is linked.
recording: MBID
# The MBID of a Release Group to which the entity is linked.
releaseGroup: MBID
): ReleaseConnection
# Browse release group entities linked to the given arguments.
releaseGroups(
after: String
first: Int
# The MBID of an Artist to which the entity is linked.
artist: MBID
# The MBID of a Release to which the entity is linked.
release: MBID
): ReleaseGroupConnection
# Browse work entities linked to the given arguments.
works(
after: String
first: Int
# The MBID of an Artist to which the entity is linked.
artist: MBID
): WorkConnection
# Browse URL entities linked to the given arguments.
urls(
after: String
first: Int
# The web address for which to browse URL entities.
resource: URLString
): URLConnection
}
# Geographic coordinates described with latitude and longitude.
type Coordinates {
# The north–south position of a point on the Earth’s surface.
latitude: Degrees
# The east–west position of a point on the Earth’s surface.
longitude: Degrees
}
# Year, month (optional), and day (optional) in YYYY-MM-DD format.
scalar Date
# Decimal degrees, used for latitude and longitude.
scalar Degrees
# An entity in the MusicBrainz schema.
interface Entity {
# The MBID of the entity.
mbid: MBID!
}
# An [event](https://musicbrainz.org/doc/Event) refers to an
# organised event which people can attend, and is relevant to MusicBrainz.
# Generally this means live performances, like concerts and festivals.
type Event implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official name of the entity.
name: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# The begin and end dates of the entity’s existence. Its exact
# meaning depends on the type of entity.
lifeSpan: LifeSpan
time: Time
cancelled: Boolean
setlist: String
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
}
# A connection to a list of items.
type EventConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [EventEdge]
}
# An edge in a connection.
type EventEdge {
# The item at the end of the edge
node: Event
# A cursor for use in pagination
cursor: String!
}
# [Instruments](https://musicbrainz.org/doc/Instrument) are
# devices created or adapted to make musical sounds. Instruments are primarily
# used in relationships between two other entities.
type Instrument implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official name of the entity.
name: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# A brief description of the main characteristics of the
# instrument.
description: String
# The type categorises the instrument by the way the sound is
# created, similar to the [Hornbostel-Sachs](https://en.wikipedia.org/wiki/Hornbostel%E2%80%93Sachs)
# classification.
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
}
# An [IPI](https://musicbrainz.org/doc/IPI) (interested party
# information) code is an identifying number assigned by the CISAC database for
# musical rights management.
scalar IPI
# [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.
type Label implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official name of the entity.
name: String
# The string to use for the purpose of ordering by name (for
# example, by moving articles like ‘the’ to the end or a person’s last name to
# the front).
sortName: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# The country of origin for the label.
country: String
# The area in which the label is based.
area: Area
# The begin and end dates of the entity’s existence. Its exact
# meaning depends on the type of entity.
lifeSpan: LifeSpan
# The [“LC” code](https://musicbrainz.org/doc/Label/Label_Code)
# of the label.
labelCode: Int
# List of IPI (interested party information) codes for the
# label.
ipis: [IPI]
# A type describing the main activity of the label, e.g.
# imprint, production, distributor, rights society, etc.
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
# A list of release entities linked to this entity.
releases(after: String, first: Int, type: [ReleaseGroupType], status: [ReleaseStatus]): ReleaseConnection
}
# A connection to a list of items.
type LabelConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [LabelEdge]
}
# An edge in a connection.
type LabelEdge {
# The item at the end of the edge
node: Label
# A cursor for use in pagination
cursor: String!
}
# Fields indicating the begin and end date of an entity’s
# lifetime, including whether it has ended (even if the date is unknown).
type LifeSpan {
begin: Date
end: Date
ended: Boolean
}
# A lookup of an individual MusicBrainz entity by its MBID.
type LookupQuery {
# Look up a specific area by its MBID.
area(
# The MBID of the entity.
mbid: MBID!
): Area
# Look up a specific artist by its MBID.
artist(
# The MBID of the entity.
mbid: MBID!
): Artist
# Look up a specific event by its MBID.
event(
# The MBID of the entity.
mbid: MBID!
): Event
# Look up a specific instrument by its MBID.
instrument(
# The MBID of the entity.
mbid: MBID!
): Instrument
# Look up a specific label by its MBID.
label(
# The MBID of the entity.
mbid: MBID!
): Label
# Look up a specific place by its MBID.
place(
# The MBID of the entity.
mbid: MBID!
): Place
# Look up a specific recording by its MBID.
recording(
# The MBID of the entity.
mbid: MBID!
): Recording
# Look up a specific release by its MBID.
release(
# The MBID of the entity.
mbid: MBID!
): Release
# Look up a specific release group by its MBID.
releaseGroup(
# The MBID of the entity.
mbid: MBID!
): ReleaseGroup
# Look up a specific series by its MBID.
series(
# The MBID of the entity.
mbid: MBID!
): Series
# Look up a specific URL by its MBID.
url(
# The MBID of the entity.
mbid: MBID!
): URL
# Look up a specific work by its MBID.
work(
# The MBID of the entity.
mbid: MBID!
): Work
}
# The MBID scalar represents MusicBrainz identifiers, which are
# 36-character UUIDs.
scalar MBID
# An object with an ID
interface Node {
# The id of the object.
id: ID!
}
# Information about pagination in a connection.
type PageInfo {
# When paginating forwards, are there more items?
hasNextPage: Boolean!
# When paginating backwards, are there more items?
hasPreviousPage: Boolean!
# When paginating backwards, the cursor to continue.
startCursor: String
# When paginating forwards, the cursor to continue.
endCursor: String
}
# A [place](https://musicbrainz.org/doc/Place) is a venue, studio
# or other place where music is performed, recorded, engineered, etc.
type Place implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official name of the entity.
name: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# The address describes the location of the place using the
# standard addressing format for the country it is located in.
address: String
# The area entity representing the area, such as the city, in
# which the place is located.
area: Area
# The geographic coordinates of the place.
coordinates: Coordinates
# The begin and end dates of the entity’s existence. Its exact
# meaning depends on the type of entity.
lifeSpan: LifeSpan
# The type categorises the place based on its primary
# function.
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
# A list of event entities linked to this entity.
events(after: String, first: Int): EventConnection
}
# A connection to a list of items.
type PlaceConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [PlaceEdge]
}
# An edge in a connection.
type PlaceEdge {
# The item at the end of the edge
node: Place
# A cursor for use in pagination
cursor: String!
}
# The query root, from which multiple types of MusicBrainz
# requests can be made.
type Query {
# Fetches an object given its ID
node(
# The ID of an object
id: ID!
): Node
# Perform a lookup of a MusicBrainz entity by its MBID.
lookup: LookupQuery
# Browse all MusicBrainz entities directly linked to another
# entity.
browse: BrowseQuery
# Search for MusicBrainz entities using Lucene query
# syntax.
search: SearchQuery
}
# A [recording](https://musicbrainz.org/doc/Recording) is an
# entity in MusicBrainz which can be linked to tracks on releases. Each track must
# always be associated with a single recording, but a recording can be linked to
# any number of tracks.
#
# A recording represents distinct audio that has been used to produce at least one
# released track through copying or mastering. A recording itself is never
# produced solely through copying or mastering.
#
# Generally, the audio represented by a recording corresponds to the audio at a
# stage in the production process before any final mastering but after any editing
# or mixing.
type Recording implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official title of the entity.
title: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# The main credited artist(s).
artistCredit: [ArtistCredit]
# An approximation to the length of the recording, calculated
# from the lengths of the tracks using it.
length: Int
# Whether this is a video recording.
video: Boolean
# A list of artist entities linked to this entity.
artists(after: String, first: Int): ArtistConnection
# A list of release entities linked to this entity.
releases(after: String, first: Int, type: [ReleaseGroupType], status: [ReleaseStatus]): ReleaseConnection
# Relations between this entity and other entitites.
relations: Relations
}
# A connection to a list of items.
type RecordingConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [RecordingEdge]
}
# An edge in a connection.
type RecordingEdge {
# The item at the end of the edge
node: Recording
# A cursor for use in pagination
cursor: String!
}
type Relation {
target: Entity!
direction: String!
targetType: String!
sourceCredit: String
targetCredit: String
begin: Date
end: Date
ended: Boolean
attributes: [String]
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
}
# A connection to a list of items.
type RelationConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [RelationEdge]
}
# An edge in a connection.
type RelationEdge {
# The item at the end of the edge
node: Relation
# A cursor for use in pagination
cursor: String!
}
# Related entities.
type Relations {
area(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
artist(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
event(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
instrument(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
label(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
place(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
recording(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
release(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
releaseGroup(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
series(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
url(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
work(after: String, first: Int, before: String, last: Int, direction: String, type: String, typeID: MBID): RelationConnection
}
# A [release](https://musicbrainz.org/doc/Release) represents the
# unique release (i.e. issuing) of a product on a specific date with specific
# release information such as the country, label, barcode, packaging, etc. If you
# walk into a store and purchase an album or single, they’re each represented in
# MusicBrainz as one release.
type Release implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official title of the entity.
title: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# The main credited artist(s).
artistCredit: [ArtistCredit]
# The release event for this release.
releaseEvents: [ReleaseEvent]
# The [release date](https://musicbrainz.org/doc/Release/Date)
# is the date in which a release was made available through some sort of
# distribution mechanism.
date: Date
# The country in which the release was issued.
country: String
# The [barcode](https://en.wikipedia.org/wiki/Barcode), if the
# release has one. The most common types found on releases are 12-digit
# [UPCs](https://en.wikipedia.org/wiki/Universal_Product_Code) and 13-digit
# [EANs](https://en.wikipedia.org/wiki/International_Article_Number).
barcode: String
# The status describes how “official” a release is.
status: ReleaseStatus
# The MBID associated with the
# value of the `status` field.
statusID: MBID
# The physical packaging that accompanies the release. See
# the [list of packaging](https://musicbrainz.org/doc/Release/Packaging) for more
# information.
packaging: String
# The MBID associated with the
# value of the `packaging` field.
packagingID: MBID
# Data quality indicates how good the data for a release is.
# It is not a mark of how good or bad the music itself is – for that, use
# [ratings](https://musicbrainz.org/doc/Rating_System).
quality: String
# A list of artist entities linked to this entity.
artists(after: String, first: Int): ArtistConnection
# A list of label entities linked to this entity.
labels(after: String, first: Int): LabelConnection
# A list of recording entities linked to this entity.
recordings(after: String, first: Int): RecordingConnection
# A list of release group entities linked to this entity.
releaseGroups(after: String, first: Int, type: ReleaseGroupType, types: [ReleaseGroupType]): ReleaseGroupConnection
# Relations between this entity and other entitites.
relations: Relations
}
# A connection to a list of items.
type ReleaseConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [ReleaseEdge]
}
# An edge in a connection.
type ReleaseEdge {
# The item at the end of the edge
node: Release
# A cursor for use in pagination
cursor: String!
}
# Date on which a release was released in a country/region with a
# particular label, catalog number, barcode, and what release format was used.
type ReleaseEvent {
area: Area
date: Date
}
# A [release group](https://musicbrainz.org/doc/Release_Group) is
# used to group several different releases into a single logical entity. Every
# release belongs to one, and only one release group.
#
# Both release groups and releases are “albums” in a general sense, but with an
# important difference: a release is something you can buy as media such as a CD
# or a vinyl record, while a release group embraces the overall concept of an
# album – it doesn’t matter how many CDs or editions/versions it had.
type ReleaseGroup implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official title of the entity.
title: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# The main credited artist(s).
artistCredit: [ArtistCredit]
# The date of the earliest release in the group.
firstReleaseDate: Date
# The [type](https://musicbrainz.org/doc/Release_Group/Type)
# of a release group describes what kind of releases the release group represents,
# e.g. album, single, soundtrack, compilation, etc. A release group can have a
# “main” type and an unspecified number of additional types.
primaryType: ReleaseGroupType
# The MBID associated with the
# value of the `primaryType` field.
primaryTypeID: MBID
# Additional [types](https://musicbrainz.org/doc/Release_Group/Type)
# that apply to this release group.
secondaryTypes: [ReleaseGroupType]
# The MBIDs associated with the
# values of the `secondaryTypes` field.
secondaryTypeIDs: [MBID]
# A list of artist entities linked to this entity.
artists(after: String, first: Int): ArtistConnection
# A list of release entities linked to this entity.
releases(after: String, first: Int, type: [ReleaseGroupType], status: [ReleaseStatus]): ReleaseConnection
# Relations between this entity and other entitites.
relations: Relations
}
# A connection to a list of items.
type ReleaseGroupConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [ReleaseGroupEdge]
}
# An edge in a connection.
type ReleaseGroupEdge {
# The item at the end of the edge
node: ReleaseGroup
# A cursor for use in pagination
cursor: String!
}
enum ReleaseGroupType {
# An album, perhaps better defined as a “Long Play” (LP)
# release, generally consists of previously unreleased material (unless this type
# is combined with secondary types which change that, such as “Compilation”). This
# includes album re-issues, with or without bonus tracks.
ALBUM
# A single typically has one main song and possibly a handful
# of additional tracks or remixes of the main track. A single is usually named
# after its main song.
SINGLE
# An EP is a so-called “Extended Play” release and often
# contains the letters EP in the title. Generally an EP will be shorter than a
# full length release (an LP or “Long Play”) and the tracks are usually exclusive
# to the EP, in other words the tracks don’t come from a previously issued
# release. EP is fairly difficult to define; usually it should only be assumed
# that a release is an EP if the artist defines it as such.
EP
# Any release that does not fit any of the other categories.
OTHER
# An episodic release that was originally broadcast via radio,
# television, or the Internet, including podcasts.
BROADCAST
# A compilation is a collection of previously released tracks
# by one or more artists.
COMPILATION
# A soundtrack is the musical score to a movie, TV series,
# stage show, computer game etc.
SOUNDTRACK
# A non-music spoken word release.
SPOKENWORD
# An interview release contains an interview, generally with
# an artist.
INTERVIEW
# An audiobook is a book read by a narrator without music.
AUDIOBOOK
# A release that was recorded live.
LIVE
# A release that was (re)mixed from previously released
# material.
REMIX
# A DJ-mix is a sequence of several recordings played one
# after the other, each one modified so that they blend together into a continuous
# flow of music. A DJ mix release requires that the recordings be modified in some
# manner, and the DJ who does this modification is usually (although not always)
# credited in a fairly prominent way.
DJMIX
# Promotional in nature (but not necessarily free), mixtapes
# and street albums are often released by artists to promote new artists, or
# upcoming studio albums by prominent artists. They are also sometimes used to
# keep fans’ attention between studio releases and are most common in rap & hip
# hop genres. They are often not sanctioned by the artist’s label, may lack proper
# sample or song clearances and vary widely in production and recording quality.
# While mixtapes are generally DJ-mixed, they are distinct from commercial DJ
# mixes (which are usually deemed compilations) and are defined by having a
# significant proportion of new material, including original production or
# original vocals over top of other artists’ instrumentals. They are distinct from
# demos in that they are designed for release directly to the public and fans; not
# to labels.
MIXTAPE
# A release that was recorded for limited circulation or
# reference use rather than for general public release.
DEMO
# A non-album track (special case).
NAT
}
enum ReleaseStatus {
# Any release officially sanctioned by the artist and/or their
# record company. (Most releases will fit into this category.)
OFFICIAL
# A giveaway release or a release intended to promote an
# upcoming official release. (e.g. prerelease albums or releases included with a
# magazine)
PROMOTION
# An unofficial/underground release that was not sanctioned by
# the artist and/or the record company.
BOOTLEG
# A pseudo-release is a duplicate release for
# translation/transliteration purposes.
PSEUDORELEASE
}
# A search for MusicBrainz entities using Lucene query syntax.
type SearchQuery {
# Search for area entities matching the given query.
areas(query: String!, after: String, first: Int): AreaConnection
# Search for artist entities matching the given query.
artists(query: String!, after: String, first: Int): ArtistConnection
# Search for label entities matching the given query.
labels(query: String!, after: String, first: Int): LabelConnection
# Search for place entities matching the given query.
places(query: String!, after: String, first: Int): PlaceConnection
# Search for recording entities matching the given query.
recordings(query: String!, after: String, first: Int): RecordingConnection
# Search for release entities matching the given query.
releases(query: String!, after: String, first: Int): ReleaseConnection
# Search for release group entities matching the given query.
releaseGroups(query: String!, after: String, first: Int): ReleaseGroupConnection
# Search for work entities matching the given query.
works(query: String!, after: String, first: Int): WorkConnection
}
# A [series](https://musicbrainz.org/doc/Series) is a sequence of
# separate release groups, releases, recordings, works or events with a common
# theme.
type Series implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official name of the entity.
name: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# The type primarily describes what type of entity the series
# contains.
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
}
# A time of day, in 24-hour hh:mm notation.
scalar Time
# A [URL](https://musicbrainz.org/doc/URL) pointing to a resource
# external to MusicBrainz, i.e. an official homepage, a site where music can be
# acquired, an entry in another database, etc.
type URL implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The actual URL string.
resource: URLString!
# Relations between this entity and other entitites.
relations: Relations
}
# A connection to a list of items.
type URLConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [URLEdge]
}
# An edge in a connection.
type URLEdge {
# The item at the end of the edge
node: URL
# A cursor for use in pagination
cursor: String!
}
# A web address.
scalar URLString
# A [work](https://musicbrainz.org/doc/Work) is a distinct
# intellectual or artistic creation, which can be expressed in the form of one or
# more audio recordings.
type Work implements Node, Entity {
# The ID of an object
id: ID!
# The MBID of the entity.
mbid: MBID!
# The official title of the entity.
title: String
# A comment used to help distinguish identically named entitites.
disambiguation: String
# A list of [ISWCs](https://musicbrainz.org/doc/ISWC) assigned
# to the work by copyright collecting agencies.
iswcs: [String]
# The language in which the work was originally written.
language: String
# The type of work.
type: String
# The MBID associated with the
# value of the `type` field.
typeID: MBID
# A list of artist entities linked to this entity.
artists(after: String, first: Int): ArtistConnection
# Relations between this entity and other entitites.
relations: Relations
}
# A connection to a list of items.
type WorkConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# A list of edges.
edges: [WorkEdge]
}
# An edge in a connection.
type WorkEdge {
# The item at the end of the edge
node: Work
# A cursor for use in pagination
cursor: String!
}