diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,23 @@
+50200.1.2
+=========
+
+Bug fixes:
+ * The server response to an uploaded file may report "null" for
+   client_ids.  This previously failed the parse attempt to create a
+   `Seq ClientId`; this fix updates to conver null to an empty `Seq`.
+   This typically manifested in attempting to attach a file in a
+   common channel.
+
+Compatibility:
+ * Updated supported/tested GHC versions: 8.2.2, 8.4.4, and 8.6.3.
+
+50200.1.1
+=========
+
+Bug fixes:
+ * The `userCreateAt`, `userUpdateAt`, and `userAuthData` fields of
+   `User` are now permitted to be optional in the user JSON encoding to
+   be consistent with the server.
 
 50200.1.0
 =========
diff --git a/mattermost-api.cabal b/mattermost-api.cabal
--- a/mattermost-api.cabal
+++ b/mattermost-api.cabal
@@ -1,5 +1,5 @@
 name:                mattermost-api
-version:             50200.1.0
+version:             50200.1.2
 synopsis:            Client API for Mattermost chat system
 description:         Client API for Mattermost chat system
 license:             BSD3
@@ -67,7 +67,7 @@
                      , pretty-show
   hs-source-dirs:      src
   default-language:    Haskell2010
-  ghc-options:       -Wall
+  ghc-options:       -Wall -Wcompat
 
 executable mm-get-teams
   if !flag(build-examples)
diff --git a/src/Network/Mattermost/Types.hs b/src/Network/Mattermost/Types.hs
--- a/src/Network/Mattermost/Types.hs
+++ b/src/Network/Mattermost/Types.hs
@@ -175,10 +175,10 @@
 
 instance A.FromJSON Type where
   parseJSON = A.withText "Type" $ \t ->
-      return $ if | t == "O"  -> Ordinary
-                  | t == "D"  -> Direct
-                  | t == "P"  -> Private
-                  | t == "G"  -> Group
+      return $ if | t == "O"  -> Ordinary   -- public chat channels
+                  | t == "D"  -> Direct     -- between two users only
+                  | t == "P"  -> Private    -- like Ordinary but not visible to non-members
+                  | t == "G"  -> Group      -- between a selected set of users
                   | otherwise -> Unknown t
 
 instance A.ToJSON Type where
@@ -574,11 +574,11 @@
 data User
   = User
   { userId                 :: UserId
-  , userCreateAt           :: ServerTime
-  , userUpdateAt           :: ServerTime
+  , userCreateAt           :: Maybe ServerTime
+  , userUpdateAt           :: Maybe ServerTime
   , userDeleteAt           :: ServerTime
   , userUsername           :: Text
-  , userAuthData           :: Text
+  , userAuthData           :: Maybe Text
   , userAuthService        :: Text
   , userEmail              :: UserText
   , userEmailVerified      :: Bool
@@ -595,11 +595,11 @@
 instance A.FromJSON User where
   parseJSON = A.withObject "User" $ \o -> do
     userId                 <- o .: "id"
-    userCreateAt           <- timeFromServer <$> o .: "create_at"
-    userUpdateAt           <- timeFromServer <$> o .: "update_at"
+    userCreateAt           <- (timeFromServer <$>) <$> o .:? "create_at"
+    userUpdateAt           <- (timeFromServer <$>) <$> o .:? "update_at"
     userDeleteAt           <- timeFromServer <$> o .: "delete_at"
     userUsername           <- o .:  "username"
-    userAuthData           <- o .:  "auth_data"
+    userAuthData           <- o .:?  "auth_data"
     userAuthService        <- o .:  "auth_service"
     userEmail              <- o .:  "email"
     userEmailVerified      <- o .:? "email_verified" .!= False
