diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,3 +3,14 @@
 ## 0.1 -- 2021-05-28
 
 * Initial release
+
+## 0.1.1 -- 2021-06-08
+
+* Relax base constraint
+
+## 0.2 -- 2021-11-16
+
+* Add missing FromHttpApiData instance for ObjectType
+* Fix incorrect ToHttpApiData instance for ObjectType
+* Rename incorrectly named data constructor for CryptokeysAPI
+* Add versions endpoint
diff --git a/PowerDNS/API.hs b/PowerDNS/API.hs
--- a/PowerDNS/API.hs
+++ b/PowerDNS/API.hs
@@ -11,6 +11,7 @@
   ( API
   , api
   , PowerDNS(..)
+  , module PowerDNS.API.Version
   , module PowerDNS.API.Zones
   , module PowerDNS.API.Servers
   , module PowerDNS.API.Cryptokeys
@@ -25,6 +26,7 @@
 import           Servant.API
 import           Servant.API.Generic ((:-), ToServantApi)
 
+import           PowerDNS.API.Version
 import           PowerDNS.API.Zones
 import           PowerDNS.API.Servers
 import           PowerDNS.API.Cryptokeys
@@ -34,13 +36,14 @@
 api :: Proxy API
 api = Proxy
 
-type API = "api" :> "v1" :> ToServantApi PowerDNS
+type API = ToServantApi PowerDNS
 
 data PowerDNS f = PowerDNS
-  { servers    :: f :- ToServantApi ServersAPI
-  , zones      :: f :- ToServantApi ZonesAPI
-  , cryptokeys :: f :- ToServantApi CryptokeysAPI
-  , metadata   :: f :- ToServantApi MetadataAPI
-  , tsigkeys   :: f :- ToServantApi TSIGKeysAPI
+  { versions   :: f :- "api" :>         ToServantApi VersionsAPI
+  , servers    :: f :- "api" :> "v1" :> ToServantApi ServersAPI
+  , zones      :: f :- "api" :> "v1" :> ToServantApi ZonesAPI
+  , cryptokeys :: f :- "api" :> "v1" :> ToServantApi CryptokeysAPI
+  , metadata   :: f :- "api" :> "v1" :> ToServantApi MetadataAPI
+  , tsigkeys   :: f :- "api" :> "v1" :> ToServantApi TSIGKeysAPI
   } deriving Generic
 
diff --git a/PowerDNS/API/Cryptokeys.hs b/PowerDNS/API/Cryptokeys.hs
--- a/PowerDNS/API/Cryptokeys.hs
+++ b/PowerDNS/API/Cryptokeys.hs
@@ -31,7 +31,7 @@
 
 import           PowerDNS.Internal.Utils (Empty(..), strip)
 
-data CryptokeysAPI f = Cryptokeys
+data CryptokeysAPI f = CryptokeysAPI
     { apiListCryptokeys :: f  :- "servers" :> Capture "server_id" T.Text :> "zones" :> Capture "zone_id" T.Text :> "cryptokeys"
                               :> Get '[JSON] [Cryptokey]
 
diff --git a/PowerDNS/API/Servers.hs b/PowerDNS/API/Servers.hs
--- a/PowerDNS/API/Servers.hs
+++ b/PowerDNS/API/Servers.hs
@@ -127,10 +127,17 @@
   parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = fmap toLower . strip "Ty"
                                               , allNullaryToStringTag = True }
 
+instance FromHttpApiData ObjectType where
+  parseQueryParam "all" = Right TyAll
+  parseQueryParam "zone" = Right TyZone
+  parseQueryParam "record" = Right TyRecord
+  parseQueryParam "comment" = Right TyComment
+  parseQueryParam x = Left ("Unknown ObjectType: " <> x)
+
 instance ToHttpApiData ObjectType where
   toQueryParam TyAll = "all"
   toQueryParam TyZone = "zone"
-  toQueryParam TyRecord = "all"
+  toQueryParam TyRecord = "record"
   toQueryParam TyComment = "comment"
 
 ----------------------------------------------------------------------------------------
diff --git a/PowerDNS/API/Version.hs b/PowerDNS/API/Version.hs
new file mode 100644
--- /dev/null
+++ b/PowerDNS/API/Version.hs
@@ -0,0 +1,48 @@
+-- |
+-- Module: PowerDNS.API.Zones
+-- Description: API version endpoint for PowerDNS API
+--
+-- Datatype for version API endpoint
+
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveAnyClass     #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE TypeOperators      #-}
+module PowerDNS.API.Version
+  (
+  -- * API
+    VersionsAPI(..)
+
+  -- * Data types
+  , Version(..)
+  )
+where
+
+import           Data.Data (Data)
+
+import           Control.DeepSeq (NFData)
+import           Data.Aeson (FromJSON(..), ToJSON(..), defaultOptions, fieldLabelModifier,
+                             genericParseJSON, genericToJSON)
+
+import qualified Data.Text as T
+import           Servant.API
+import           Servant.API.Generic
+
+import           PowerDNS.Internal.Utils (strip)
+
+data VersionsAPI f = VersionsAPI
+  { apiListVersions :: f :- Get '[JSON] [Version]
+  } deriving Generic
+
+data Version = Version
+  { version_version :: Int
+  , version_url :: T.Text
+  } deriving (Eq, Ord, Show, Generic, NFData, Data)
+
+instance ToJSON Version where
+  toJSON = genericToJSON defaultOptions { fieldLabelModifier = strip "version_" }
+
+instance FromJSON Version where
+  parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = strip "version_" }
+  
diff --git a/PowerDNS/Client.hs b/PowerDNS/Client.hs
--- a/PowerDNS/Client.hs
+++ b/PowerDNS/Client.hs
@@ -11,6 +11,10 @@
   -- * Authentication
     applyXApiKey
 
+  -- * Version
+  , listVersions
+  , Version(..)
+
   -- * Zones
   --
   -- | See documentation at [PowerDNS Zones API](https://doc.powerdns.com/authoritative/http-api/zone.html)
@@ -136,6 +140,17 @@
 
 pdnsClient :: PowerDNS (AsClientT ClientM)
 pdnsClient = fromServant (client api)
+
+----------------------------------------------------------------------------------------
+
+versionsClient :: VersionsAPI (AsClientT ClientM)
+versionsClient = fromServant (versions pdnsClient)
+
+-- | List the API versions and urls from the server. This is an undocumented endpoint.
+listVersions :: ClientM [Version]
+listVersions = apiListVersions versionsClient
+
+----------------------------------------------------------------------------------------
 
 zonesClient :: ZonesAPI (AsClientT ClientM)
 zonesClient = fromServant (zones pdnsClient)
diff --git a/powerdns.cabal b/powerdns.cabal
--- a/powerdns.cabal
+++ b/powerdns.cabal
@@ -1,6 +1,6 @@
 cabal-version:      >=1.10
 name:               powerdns
-version:            0.1.1
+version:            0.2.0
 license:            BSD3
 license-file:       LICENSE
 copyright:          (c) 2021 Victor Nawothnig
@@ -38,6 +38,7 @@
 library
     exposed-modules:
         PowerDNS.API
+        PowerDNS.API.Version
         PowerDNS.API.Zones
         PowerDNS.API.Servers
         PowerDNS.API.Cryptokeys
@@ -68,7 +69,7 @@
     hs-source-dirs:   spec
     default-language: Haskell2010
     build-depends:
-        base >=4.12 && <4.14,
+        base >=4.12 && <4.15,
         powerdns -any,
         tasty >=1.4.1 && <1.5,
         tasty-hunit >=0.10.0.3 && <0.11,
diff --git a/spec/Spec.hs b/spec/Spec.hs
--- a/spec/Spec.hs
+++ b/spec/Spec.hs
@@ -31,7 +31,8 @@
 main = defaultMain tree
 
 tree :: TestTree
-tree = testGroup "All specs" [ authSpecs
+tree = testGroup "All specs" [ versionSpec
+                             , authSpecs
                              , zoneSpecs
                              ]
 
@@ -43,6 +44,11 @@
   r <- run c
   assertRight "ClientM result" r
 
+versionSpec :: TestTree
+versionSpec = testCase "Verifies API version" $ do
+    ver <- run listVersions
+    assertEqual "API versions" ver (Right [Version 1 "/api/v1"])
+
 zoneSpecs :: TestTree
 zoneSpecs = testCaseSteps "Verifies zones can be created, displayed and deleted" $ \step -> do
     step "Ensure no zone is currently found"
@@ -65,7 +71,7 @@
     step "Ensure no zone is left over"
     r <- run (listZones "localhost" Nothing Nothing)
     assertEqual "list of zones" (Right []) r
-    
+
     step "Done"
 
   where
@@ -78,7 +84,7 @@
                    , rrset_type = A
                    , rrset_ttl = 86003
                    , rrset_changetype = Nothing
-                   , rrset_records = Just [Record "127.0.0.1" Nothing]
+                   , rrset_records = Just [Record "127.0.0.1" False]
                    , rrset_comments = Nothing
                    }
            ]
@@ -90,9 +96,9 @@
                     , rrset_type = AAAA
                     , rrset_ttl = 1234
                     , rrset_changetype = Nothing
-                    , rrset_records = Just [Record "::1" Nothing]
+                    , rrset_records = Just [Record "::1" False]
                     , rrset_comments = Nothing
-                    } 
+                    }
             ]
 
 -- | Erases all server generated data from a zone. Used to test for equality.
@@ -134,7 +140,7 @@
 
 assertIsSuccess :: Show a => Either ClientError a -> Assertion
 assertIsSuccess = assertPredicate "successful HTTP response" isRight
-  
+
 assertJust :: HasCallStack => String -> Maybe a -> IO a
 assertJust preface = maybe (assertFailure msg) pure
  where msg = (if null preface then "" else preface ++ "\n") ++
