{- |
Module representing a JSON-API meta object.

Specification: <http://jsonapi.org/format/#document-meta>
-}
module Network.JSONApi.Meta where

import Data.Aeson (ToJSON, FromJSON)
import Data.Map (Map)
import Data.Text (Text)
import qualified GHC.Generics as G

{- |
Type representing a JSON-API meta object.

Meta is an abstraction around an underlying Map consisting of
resource-specific metadata.

Example JSON:
@
"meta": {
  "copyright": "Copyright 2015 Example Corp.",
  "authors": [
    "Andre Dawson",
    "Kirby Puckett",
    "Don Mattingly",
    "Ozzie Guillen"
  ]
}
@

Specification: <http://jsonapi.org/format/#document-meta>
-}
data Meta a = Meta (Map Text a)
  deriving (Show, Eq, Ord, G.Generic)

instance ToJSON a   => ToJSON (Meta a)
instance FromJSON a => FromJSON (Meta a)