{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeOperators #-}
module PowerDNS.API
( API
, api
, PowerDNS(..)
, module PowerDNS.API.Version
, module PowerDNS.API.Zones
, module PowerDNS.API.Servers
, module PowerDNS.API.Cryptokeys
, module PowerDNS.API.Metadata
, module PowerDNS.API.TSIGKeys
)
where
import Data.Proxy (Proxy(..))
import GHC.Generics (Generic)
import Servant.API
import PowerDNS.API.Cryptokeys
import PowerDNS.API.Metadata
import PowerDNS.API.Servers
import PowerDNS.API.TSIGKeys
import PowerDNS.API.Version
import PowerDNS.API.Zones
api :: Proxy API
api :: Proxy API
api = Proxy
((("api" :> (Summary "List versions" :> Get '[JSON] [Version]))
:<|> (("api"
:> ("v1"
:> (((Summary "List servers"
:> ("servers" :> Get '[JSON] [Server]))
:<|> (Summary "Get server"
:> ("servers"
:> (Capture "server_id" Text :> Get '[JSON] Server))))
:<|> ((Summary "Search"
:> ("servers"
:> (Capture "server_id" Text
:> ("search-data"
:> (QueryParamReq "q" Text
:> (QueryParamReq "max" Integer
:> (QueryParam "object_type" ObjectType
:> Get '[JSON] [SearchResult])))))))
:<|> ((Summary "Flush cache"
:> ("servers"
:> (Capture "server_id" Text
:> (QueryParamReq "domain" Text
:> Put '[JSON] CacheFlushResult))))
:<|> (Summary "Statistics"
:> ("servers"
:> (Capture "server_id" Text
:> ("statistics"
:> (QueryParam "statistic" Text
:> (QueryParam "includerings" Bool
:> Get
'[JSON] [AnyStatisticItem])))))))))))
:<|> ("api"
:> ("v1"
:> ((((Summary "List zones"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (QueryParam "zone" Text
:> (QueryParam "dnssec" Bool :> Get '[JSON] [Zone]))))))
:<|> (Summary "Create zone"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (QueryParam "rrset" Bool
:> (ReqBody '[JSON] Zone
:> PostCreated '[JSON] Zone)))))))
:<|> ((Summary "Get zone"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> (QueryParam "rrsets" Bool
:> Get '[JSON] Zone))))))
:<|> ((Summary "Delete zone"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text :> DeleteNoContent)))))
:<|> (Summary "Update records"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> (ReqBody '[JSON] RRSets
:> PatchNoContent)))))))))
:<|> (((Summary "Update zone"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> (ReqBody '[JSON] Zone :> PutNoContent))))))
:<|> (Summary "Trigger AXFR"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("axfr-retrieve"
:> Put '[JSON] Result)))))))
:<|> ((Summary "Notify slaves"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("notify" :> Put '[JSON] Result))))))
:<|> ((Summary "Get zone AXFR"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("export" :> Get '[JSON] Result))))))
:<|> (Summary "Rectify zone"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("rectify"
:> Put
'[JSON]
Result))))))))))))))
:<|> (("api"
:> ("v1"
:> (((Summary "List cryptokeys"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("cryptokeys" :> Get '[JSON] [Cryptokey]))))))
:<|> (Summary "Create cryptokey"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("cryptokeys"
:> (ReqBody '[JSON] Cryptokey
:> PostCreated '[JSON] Cryptokey))))))))
:<|> ((Summary "Get cryptokey"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("cryptokeys"
:> (Capture "cryptokey_id" Text
:> Get '[JSON] Cryptokey)))))))
:<|> ((Summary "Update cryptokey"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("cryptokeys"
:> (Capture "cryptokey_id" Text
:> (ReqBody '[JSON] Cryptokey
:> PutNoContent))))))))
:<|> (Summary "Delete cryptokey"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("cryptokeys"
:> (Capture "cryptokey_id" Text
:> DeleteNoContent))))))))))))
:<|> (("api"
:> ("v1"
:> (((Summary "List metadata"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("metadata" :> Get '[JSON] [Metadata]))))))
:<|> (Summary "Create metadata"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("metadata"
:> (ReqBody '[JSON] Metadata
:> PostNoContent))))))))
:<|> ((Summary "Get metadata"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("metadata"
:> (Capture "kind" Text
:> Get '[JSON] Metadata)))))))
:<|> ((Summary "Update metadata"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("metadata"
:> (Capture "kind" Text
:> (ReqBody '[JSON] Metadata
:> Put '[JSON] Metadata))))))))
:<|> (Summary "Delete metadata"
:> ("servers"
:> (Capture "server_id" Text
:> ("zones"
:> (Capture "zone_id" Text
:> ("metadata"
:> (Capture "kind" Text
:> DeleteNoContent))))))))))))
:<|> ("api"
:> ("v1"
:> (((Summary "List TSIG keys"
:> ("servers"
:> (Capture "server_id" Text
:> ("tsigkeys" :> Get '[JSON] [TSIGKey]))))
:<|> (Summary "Create TSIG key"
:> ("servers"
:> (Capture "server_id" Text
:> ("tsigkeys"
:> (ReqBody '[JSON] TSIGKey
:> PostCreated '[JSON] TSIGKey))))))
:<|> ((Summary "Get TSIG key"
:> ("servers"
:> (Capture "server_id" Text
:> ("tsigkeys"
:> (Capture "tsigkey_id" Text
:> Get '[JSON] TSIGKey)))))
:<|> ((Summary "Update TSIG key"
:> ("servers"
:> (Capture "server_id" Text
:> ("tsigkeys"
:> (Capture "tsigkey_id" Text
:> (ReqBody '[JSON] TSIGKey
:> Put '[JSON] TSIGKey))))))
:<|> (Summary "DElete TSIG key"
:> ("servers"
:> (Capture "server_id" Text
:> ("tsigkeys"
:> (Capture "tsigkey_id" Text
:> DeleteNoContent)))))))))))))
Proxy API
forall {k} (t :: k). Proxy t
Proxy
type API = ToServantApi PowerDNS
data PowerDNS f = PowerDNS
{ forall f. PowerDNS f -> f :- ("api" :> ToServantApi VersionsAPI)
versions :: f :- "api" :> ToServantApi VersionsAPI
, forall f.
PowerDNS f -> f :- ("api" :> ("v1" :> ToServantApi ServersAPI))
servers :: f :- "api" :> "v1" :> ToServantApi ServersAPI
, forall f.
PowerDNS f -> f :- ("api" :> ("v1" :> ToServantApi ZonesAPI))
zones :: f :- "api" :> "v1" :> ToServantApi ZonesAPI
, forall f.
PowerDNS f -> f :- ("api" :> ("v1" :> ToServantApi CryptokeysAPI))
cryptokeys :: f :- "api" :> "v1" :> ToServantApi CryptokeysAPI
, forall f.
PowerDNS f -> f :- ("api" :> ("v1" :> ToServantApi MetadataAPI))
metadata :: f :- "api" :> "v1" :> ToServantApi MetadataAPI
, forall f.
PowerDNS f -> f :- ("api" :> ("v1" :> ToServantApi TSIGKeysAPI))
tsigkeys :: f :- "api" :> "v1" :> ToServantApi TSIGKeysAPI
} deriving (forall x. PowerDNS f -> Rep (PowerDNS f) x)
-> (forall x. Rep (PowerDNS f) x -> PowerDNS f)
-> Generic (PowerDNS f)
forall x. Rep (PowerDNS f) x -> PowerDNS f
forall x. PowerDNS f -> Rep (PowerDNS f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall f x. Rep (PowerDNS f) x -> PowerDNS f
forall f x. PowerDNS f -> Rep (PowerDNS f) x
$cfrom :: forall f x. PowerDNS f -> Rep (PowerDNS f) x
from :: forall x. PowerDNS f -> Rep (PowerDNS f) x
$cto :: forall f x. Rep (PowerDNS f) x -> PowerDNS f
to :: forall x. Rep (PowerDNS f) x -> PowerDNS f
Generic