-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A Haskell Vault KVv2 secret engine client -- -- A Haskell HashiCorp Vault KVv2 secret engine client library @package gothic @version 0.1.4 module Database.Vault.KVv2.Client.Internal runRequest :: Manager -> Request -> IO (Either String Value) fromVaultResponse :: Text -> (Value -> Either String a) -> Value -> Either String a vaultHeaders :: ByteString -> [(HeaderName, ByteString)] toJSONName :: String -> String jsonErrors :: Value -> String toString :: Value -> String expectedJSONField :: String -> String unexpectedJSONType :: Either String b toInt :: Scientific -> Int hasTrailingSlash :: String -> Bool removeTrailingSlash :: String -> String hasLeadingSlash :: String -> Bool removeLeadingSlash :: String -> String module Database.Vault.KVv2.Client.Types type VaultToken = String type Error = String data VaultConnection VaultConnection :: !String -> !String -> !ByteString -> !Manager -> VaultConnection [vaultAddr] :: VaultConnection -> !String [kvEnginePath] :: VaultConnection -> !String [vaultToken] :: VaultConnection -> !ByteString [manager] :: VaultConnection -> !Manager newtype SecretVersions SecretVersions :: [SecretVersion] -> SecretVersions newtype SecretVersion SecretVersion :: Int -> SecretVersion newtype SecretMetadata SecretMetadata :: HashMap SecretVersion Metadata -> SecretMetadata data Metadata Metadata :: !Bool -> !Text -> !Text -> Metadata [destroyed] :: Metadata -> !Bool [deletion_time] :: Metadata -> !Text [created_time] :: Metadata -> !Text newtype SecretData SecretData :: HashMap Text Text -> SecretData data SecretSettings SecretSettings :: Int -> Bool -> SecretSettings [max_versions] :: SecretSettings -> Int [cas_required] :: SecretSettings -> Bool newtype SecretPath SecretPath :: String -> SecretPath [path] :: SecretPath -> String data CheckAndSet WriteAllowed :: CheckAndSet CreateOnly :: CheckAndSet CurrentVersion :: !Int -> CheckAndSet newtype PutSecretOptions PutSecretOptions :: CheckAndSet -> PutSecretOptions [cas] :: PutSecretOptions -> CheckAndSet data PutSecretRequestBody PutSecretRequestBody :: PutSecretOptions -> SecretData -> PutSecretRequestBody [options] :: PutSecretRequestBody -> PutSecretOptions [put_data] :: PutSecretRequestBody -> SecretData data VaultKey VaultKey :: !String -> VaultKey VaultFolder :: !String -> VaultKey instance GHC.Show.Show Database.Vault.KVv2.Client.Types.VaultKey instance GHC.Show.Show Database.Vault.KVv2.Client.Types.PutSecretOptions instance Data.Aeson.Types.ToJSON.ToJSON Database.Vault.KVv2.Client.Types.CheckAndSet instance GHC.Generics.Generic Database.Vault.KVv2.Client.Types.CheckAndSet instance GHC.Show.Show Database.Vault.KVv2.Client.Types.CheckAndSet instance Data.Aeson.Types.ToJSON.ToJSON Database.Vault.KVv2.Client.Types.SecretPath instance GHC.Generics.Generic Database.Vault.KVv2.Client.Types.SecretPath instance GHC.Show.Show Database.Vault.KVv2.Client.Types.SecretPath instance Data.Aeson.Types.FromJSON.FromJSON Database.Vault.KVv2.Client.Types.SecretSettings instance Data.Aeson.Types.ToJSON.ToJSON Database.Vault.KVv2.Client.Types.SecretSettings instance GHC.Generics.Generic Database.Vault.KVv2.Client.Types.SecretSettings instance GHC.Show.Show Database.Vault.KVv2.Client.Types.SecretSettings instance Data.Aeson.Types.FromJSON.FromJSON Database.Vault.KVv2.Client.Types.SecretData instance Data.Aeson.Types.ToJSON.ToJSON Database.Vault.KVv2.Client.Types.SecretData instance GHC.Generics.Generic Database.Vault.KVv2.Client.Types.SecretData instance GHC.Show.Show Database.Vault.KVv2.Client.Types.SecretData instance GHC.Classes.Eq Database.Vault.KVv2.Client.Types.SecretMetadata instance GHC.Show.Show Database.Vault.KVv2.Client.Types.SecretMetadata instance Data.Aeson.Types.FromJSON.FromJSON Database.Vault.KVv2.Client.Types.Metadata instance Data.Aeson.Types.ToJSON.ToJSON Database.Vault.KVv2.Client.Types.Metadata instance GHC.Generics.Generic Database.Vault.KVv2.Client.Types.Metadata instance GHC.Classes.Eq Database.Vault.KVv2.Client.Types.Metadata instance GHC.Show.Show Database.Vault.KVv2.Client.Types.Metadata instance GHC.Classes.Eq Database.Vault.KVv2.Client.Types.SecretVersions instance GHC.Show.Show Database.Vault.KVv2.Client.Types.SecretVersions instance Data.Hashable.Class.Hashable Database.Vault.KVv2.Client.Types.SecretVersion instance GHC.Generics.Generic Database.Vault.KVv2.Client.Types.SecretVersion instance GHC.Classes.Eq Database.Vault.KVv2.Client.Types.SecretVersion instance GHC.Show.Show Database.Vault.KVv2.Client.Types.SecretVersion instance Data.Aeson.Types.ToJSON.ToJSON Database.Vault.KVv2.Client.Types.PutSecretRequestBody instance Data.Aeson.Types.ToJSON.ToJSON Database.Vault.KVv2.Client.Types.PutSecretOptions instance Data.Aeson.Types.FromJSON.FromJSON Database.Vault.KVv2.Client.Types.SecretMetadata instance Data.Aeson.Types.ToJSON.ToJSON Database.Vault.KVv2.Client.Types.SecretVersions instance GHC.Show.Show Database.Vault.KVv2.Client.Types.VaultConnection module Database.Vault.KVv2.Client.Requests configR :: [String] -> VaultConnection -> Int -> Bool -> IO (Either String Value) getSecretR :: VaultConnection -> SecretPath -> Maybe SecretVersion -> IO (Either String Value) putSecretR :: VaultConnection -> CheckAndSet -> SecretPath -> SecretData -> IO (Either String Value) deleteSecretR :: VaultConnection -> SecretPath -> IO (Either String Value) destroySecretR :: VaultConnection -> SecretPath -> IO (Either String Value) secretVersionsR :: [String] -> VaultConnection -> SecretVersions -> IO (Either String Value) readSecretMetadataR :: VaultConnection -> SecretPath -> IO (Either String Value) secretsListR :: VaultConnection -> SecretPath -> IO (Either String Value) module Database.Vault.KVv2.Client.Lens current :: Value -> Either String SecretVersion list :: Value -> Either String [VaultKey] metadata :: Value -> Either String SecretMetadata maybeError :: Either String Value -> Maybe Error secret :: Value -> Either String SecretData version :: Value -> Either String SecretVersion -- | See https://www.vaultproject.io/api/secret/kv/kv-v2.html for -- HashiCorp Vault KVv2 API details module Database.Vault.KVv2.Client data VaultConnection -- | Get a VaultConnection, or an error message. -- --
--   λ: vaultConnect (Just "https://vault.local.lan:8200/") "/secret" Nothing False
--   
vaultConnect :: Maybe String -> String -> Maybe VaultToken -> Bool -> IO (Either String VaultConnection) -- | Set default secret settings for the KVv2 engine. kvEngineConfig :: VaultConnection -> Int -> Bool -> IO (Either String Value) -- | Override default secret settings for the given secret. secretConfig :: VaultConnection -> SecretPath -> Int -> Bool -> IO (Either String Value) -- | Put SecretData into Vault at the given location. putSecret :: VaultConnection -> CheckAndSet -> SecretPath -> SecretData -> IO (Either String SecretVersion) -- | Get a secret from Vault. Give Just the SecretVersion to -- retrieve or Nothing to get the current one. -- --
--   λ>getSecret conn (SecretPath "MySecret") Nothing
--   Right (SecretData (fromList [("my","password")]))
--   
getSecret :: VaultConnection -> SecretPath -> Maybe SecretVersion -> IO (Either String SecretData) deleteSecret :: VaultConnection -> SecretPath -> IO (Maybe Error) deleteSecretVersions :: VaultConnection -> SecretPath -> SecretVersions -> IO (Maybe Error) unDeleteSecretVersions :: VaultConnection -> SecretPath -> SecretVersions -> IO (Maybe Error) -- | Permanently delete a secret, i.e. all its versions and metadata. destroySecret :: VaultConnection -> SecretPath -> IO (Maybe Error) destroySecretVersions :: VaultConnection -> SecretPath -> SecretVersions -> IO (Either String Value) -- | Get version number of the current given secret. currentSecretVersion :: VaultConnection -> SecretPath -> IO (Either String SecretVersion) -- | Retrieve versions history of the given secret. -- --
--   λ: readSecretMetadata conn (SecretPath "MySecret") 
--   Right (SecretMetadata (fromList [(SecretVersion 1,Metadata {destroyed = True, deletion_time = "", created_time = "2019-05-30T13:22:58.416399224Z"}),(SecretVersion 2,Metadata {destroyed = True, deletion_time = "2019-06-29T15:28:46.145302138Z"})]))
--   
readSecretMetadata :: VaultConnection -> SecretPath -> IO (Either String SecretMetadata) -- | Get list of secrets and folders at the given location. secretsList :: VaultConnection -> SecretPath -> IO (Either String [VaultKey]) toSecretData :: [(Text, Text)] -> SecretData fromSecretData :: SecretData -> [(Text, Text)] toSecretVersions :: [Int] -> SecretVersions