-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | interface to MusicBrainz XML2 and JSON web services
--   
--   interface to MusicBrainz XML2 and JSON web services
@package MusicBrainz
@version 0.4.1

module Network.Protocol.MusicBrainz.Types
newtype MBID
MBID :: Text -> MBID
[unMBID] :: MBID -> Text
data Release
Release :: MBID -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe TextRepresentation -> [ArtistCredit] -> Maybe Day -> Maybe Text -> [ReleaseEvent] -> Maybe Text -> Maybe Text -> Maybe CoverArtArchive -> Vector Medium -> Release
[_releaseId] :: Release -> MBID
[_releaseTitle] :: Release -> Text
[_releaseStatus] :: Release -> Maybe Text
[_releaseQuality] :: Release -> Maybe Text
[_releasePackaging] :: Release -> Maybe Text
[_releaseTextRepresentation] :: Release -> Maybe TextRepresentation
[_releaseArtistCredit] :: Release -> [ArtistCredit]
[_releaseDate] :: Release -> Maybe Day
[_releaseCountry] :: Release -> Maybe Text
[_releaseEvents] :: Release -> [ReleaseEvent]
[_releaseBarcode] :: Release -> Maybe Text
[_releaseASIN] :: Release -> Maybe Text
[_releaseCoverArtArchive] :: Release -> Maybe CoverArtArchive
[_releaseMedia] :: Release -> Vector Medium
data TextRepresentation
TextRepresentation :: Maybe Text -> Maybe Text -> TextRepresentation
[_textRepLanguage] :: TextRepresentation -> Maybe Text
[_textRepScript] :: TextRepresentation -> Maybe Text
data Medium
Medium :: Maybe Text -> Maybe Integer -> Maybe Text -> Integer -> Maybe Integer -> Maybe [Track] -> Medium
[_mediumTitle] :: Medium -> Maybe Text
[_mediumPosition] :: Medium -> Maybe Integer
[_mediumFormat] :: Medium -> Maybe Text
[_mediumTrackCount] :: Medium -> Integer
[_mediumTrackOffset] :: Medium -> Maybe Integer
[_mediumTrackList] :: Medium -> Maybe [Track]
data Track
Track :: MBID -> [ArtistCredit] -> Maybe Integer -> Maybe Text -> Maybe Integer -> Recording -> Track
[_trackId] :: Track -> MBID
[_trackArtistCredit] :: Track -> [ArtistCredit]
[_trackPosition] :: Track -> Maybe Integer
[_trackNumber] :: Track -> Maybe Text
[_trackLength] :: Track -> Maybe Integer
[_trackRecording] :: Track -> Recording
data Recording
Recording :: MBID -> Maybe Text -> Maybe Integer -> [ArtistCredit] -> Recording
[_recordingId] :: Recording -> MBID
[_recordingTitle] :: Recording -> Maybe Text
[_recordingLength] :: Recording -> Maybe Integer
[_recordingArtistCredit] :: Recording -> [ArtistCredit]
data ArtistCredit
ArtistCredit :: Artist -> Maybe Text -> Maybe Text -> ArtistCredit
[_artistCreditArtist] :: ArtistCredit -> Artist
[_artistCreditJoinPhrase] :: ArtistCredit -> Maybe Text
[_artistCreditName] :: ArtistCredit -> Maybe Text
data Artist
Artist :: MBID -> Maybe Text -> Maybe Text -> Maybe Text -> Artist
[_artistId] :: Artist -> MBID
[_artistName] :: Artist -> Maybe Text
[_artistSortName] :: Artist -> Maybe Text
[_artistDisambiguation] :: Artist -> Maybe Text
data ReleaseGroup
ReleaseGroup :: MBID -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> [ArtistCredit] -> ReleaseGroup
[_releaseGroupId] :: ReleaseGroup -> MBID
[_releaseGroupType] :: ReleaseGroup -> Text
[_releaseGroupTitle] :: ReleaseGroup -> Maybe Text
[_releaseGroupFirstReleaseDate] :: ReleaseGroup -> Maybe Text
[_releaseGroupPrimaryType] :: ReleaseGroup -> Maybe Text
[_releaseGroupArtistCredit] :: ReleaseGroup -> [ArtistCredit]
data LabelInfo
LabelInfo :: Maybe Text -> Label -> LabelInfo
[_labelInfoCatalogNumber] :: LabelInfo -> Maybe Text
[_labelInfoLabel] :: LabelInfo -> Label
data Label
Label :: MBID -> Maybe Text -> Maybe Text -> Maybe Text -> Label
[_labelId] :: Label -> MBID
[_labelName] :: Label -> Maybe Text
[_labelSortName] :: Label -> Maybe Text
[_labelLabelCode] :: Label -> Maybe Text
data ReleaseEvent
ReleaseEvent :: Maybe Day -> Maybe Area -> ReleaseEvent
[_releaseEventDate] :: ReleaseEvent -> Maybe Day
[_releaseEventArea] :: ReleaseEvent -> Maybe Area
data Area
Area :: MBID -> Maybe Text -> Maybe Text -> [ISO3166Code] -> [ISO3166Code] -> [ISO3166Code] -> Area
[_areaId] :: Area -> MBID
[_areaName] :: Area -> Maybe Text
[_areaSortName] :: Area -> Maybe Text
[_areaISO3166_1Codes] :: Area -> [ISO3166Code]
[_areaISO3166_2Codes] :: Area -> [ISO3166Code]
[_areaISO3166_3Codes] :: Area -> [ISO3166Code]
newtype ISO3166Code
ISO3166Code :: Text -> ISO3166Code
[unISO3166Code] :: ISO3166Code -> Text
data CoverArtArchive
CoverArtArchive :: Maybe Bool -> Maybe Integer -> Maybe Bool -> Maybe Bool -> CoverArtArchive
[_coverArtArchiveArtwork] :: CoverArtArchive -> Maybe Bool
[_coverArtArchiveCount] :: CoverArtArchive -> Maybe Integer
[_coverArtArchiveFront] :: CoverArtArchive -> Maybe Bool
[_coverArtArchiveBack] :: CoverArtArchive -> Maybe Bool
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.Area
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.Artist
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.ArtistCredit
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.CoverArtArchive
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.ISO3166Code
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.Label
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.LabelInfo
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.MBID
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.Medium
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.Recording
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.Release
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.ReleaseEvent
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.ReleaseGroup
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.TextRepresentation
instance GHC.Classes.Eq Network.Protocol.MusicBrainz.Types.Track
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.Area
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.Artist
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.ArtistCredit
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.CoverArtArchive
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.ISO3166Code
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.Medium
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.Recording
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.Release
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.ReleaseEvent
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.TextRepresentation
instance Data.Aeson.Types.FromJSON.FromJSON Network.Protocol.MusicBrainz.Types.Track
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.Area
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.Artist
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.ArtistCredit
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.CoverArtArchive
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.ISO3166Code
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.Label
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.LabelInfo
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.MBID
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.Medium
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.Recording
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.Release
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.ReleaseEvent
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.ReleaseGroup
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.TextRepresentation
instance GHC.Internal.Show.Show Network.Protocol.MusicBrainz.Types.Track

module Network.Protocol.MusicBrainz.JSON.WebService
getRecordingById :: MonadIO m => MBID -> m (Either String Recording)
getReleaseById :: MonadIO m => MBID -> m (Either String Release)
searchReleasesByArtistAndRelease :: MonadIO m => Text -> Text -> Maybe Int -> Maybe Int -> m (Either String [(Int, Release)])

module Network.Protocol.MusicBrainz.Utils
nameCreditsToArtistName :: [ArtistCredit] -> Text
nameCreditsToArtistSortName :: [ArtistCredit] -> Text

module Network.Protocol.MusicBrainz.XML2.WebService
getRecordingById :: (MonadBaseControl IO m, MonadIO m, MonadThrow m, MonadUnliftIO m) => MBID -> m Recording
getReleaseById :: (MonadBaseControl IO m, MonadIO m, MonadThrow m, MonadUnliftIO m) => MBID -> m Release
searchReleasesByArtistAndRelease :: (MonadIO m, MonadBaseControl IO m, MonadThrow m, MonadUnliftIO m) => Text -> Text -> Maybe Int -> Maybe Int -> m [(Int, Release)]
