diff --git a/hw-prelude.cabal b/hw-prelude.cabal
--- a/hw-prelude.cabal
+++ b/hw-prelude.cabal
@@ -1,6 +1,6 @@
 cabal-version:          3.4
 name:                   hw-prelude
-version:                0.0.4.1
+version:                0.0.4.2
 synopsis:               Opinionated prelude library
 description:            Opinionated prelude library.
 license:                Apache-2.0
@@ -96,7 +96,9 @@
                         HaskellWorks.Error
                         HaskellWorks.Error.Types
                         HaskellWorks.Error.Types.GenericError
+                        HaskellWorks.Error.Types.JsonDecodeError
                         HaskellWorks.Error.Types.TimedOut
+                        HaskellWorks.Error.Types.YamlDecodeError
                         HaskellWorks.FilePath
                         HaskellWorks.IO.Network.NamedPipe
                         HaskellWorks.IO.Network.Port
diff --git a/src/HaskellWorks/Error/Types.hs b/src/HaskellWorks/Error/Types.hs
--- a/src/HaskellWorks/Error/Types.hs
+++ b/src/HaskellWorks/Error/Types.hs
@@ -1,7 +1,11 @@
 module HaskellWorks.Error.Types (
     GenericError (..),
+    JsonDecodeError (..),
     TimedOut(..),
+    YamlDecodeError (..)
 ) where
 
 import           HaskellWorks.Error.Types.GenericError
+import           HaskellWorks.Error.Types.JsonDecodeError
 import           HaskellWorks.Error.Types.TimedOut
+import           HaskellWorks.Error.Types.YamlDecodeError
diff --git a/src/HaskellWorks/Error/Types/JsonDecodeError.hs b/src/HaskellWorks/Error/Types/JsonDecodeError.hs
new file mode 100644
--- /dev/null
+++ b/src/HaskellWorks/Error/Types/JsonDecodeError.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE DeriveGeneric         #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NoFieldSelectors      #-}
+{-# LANGUAGE OverloadedRecordDot   #-}
+
+module HaskellWorks.Error.Types.JsonDecodeError
+  ( JsonDecodeError(..)
+  , newJsonDecodeError
+  ) where
+
+
+import           Data.Aeson           (ToJSON (..), Value, (.=))
+import qualified Data.Aeson           as J
+import           GHC.Generics
+
+import           HaskellWorks.Prelude
+import           HaskellWorks.ToText
+
+data JsonDecodeError =
+  JsonDecodeError
+  { message    :: Text
+  , bytestring :: Maybe ByteString
+  , text       :: Maybe Text
+  , json       :: Maybe Value
+  }
+  deriving (Eq, Generic, Show)
+
+newJsonDecodeError :: ToText a => a -> JsonDecodeError
+newJsonDecodeError message =
+  JsonDecodeError
+    { message    = toText message
+    , bytestring = Nothing
+    , text       = Nothing
+    , json       = Nothing
+    }
+
+instance ToJSON JsonDecodeError where
+  toJSON e =
+    J.object
+        [ "error" .= id @Text "JsonDecodeError"
+        , "message" .= e.message
+        , "text" .= e.text
+        , "json" .= e.json
+        ]
diff --git a/src/HaskellWorks/Error/Types/YamlDecodeError.hs b/src/HaskellWorks/Error/Types/YamlDecodeError.hs
new file mode 100644
--- /dev/null
+++ b/src/HaskellWorks/Error/Types/YamlDecodeError.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE DataKinds             #-}
+{-# LANGUAGE DeriveGeneric         #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+
+module HaskellWorks.Error.Types.YamlDecodeError
+  ( YamlDecodeError(..)
+  ) where
+
+
+import           Data.Aeson           (ToJSON (..), (.=))
+import qualified Data.Aeson           as J
+import           GHC.Generics
+import           HaskellWorks.Prelude
+newtype YamlDecodeError =
+  YamlDecodeError
+  { message :: Text
+  }
+  deriving (Eq, Generic, Show)
+
+instance ToJSON YamlDecodeError where
+  toJSON e =
+        J.object
+            [ "error" .= id @Text "YamlDecodeError"
+            , "message" .= e.message
+            ]
