{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE StrictData #-}

-- This file is part of the Wire Server implementation.
--
-- Copyright (C) 2022 Wire Swiss GmbH <opensource@wire.com>
--
-- This program is free software: you can redistribute it and/or modify it under
-- the terms of the GNU Affero General Public License as published by the Free
-- Software Foundation, either version 3 of the License, or (at your option) any
-- later version.
--
-- This program is distributed in the hope that it will be useful, but WITHOUT
-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-- FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
-- details.
--
-- You should have received a copy of the GNU Affero General Public License along
-- with this program. If not, see <https://www.gnu.org/licenses/>.

-- | Types for the (internal) provider API.
--
-- FUTUREWORK: Deduplicate with 'Wire.API.User'?
module Wire.API.Provider
  ( -- * Provider
    Provider (..),
    ProviderProfile (..),

    -- * NewProvider
    NewProvider (..),
    NewProviderResponse (..),

    -- * UpdateProvider
    UpdateProvider (..),

    -- * ProviderActivationResponse
    ProviderActivationResponse (..),
    ProviderLogin (..),
    DeleteProvider (..),

    -- * Password Change/Reset
    PasswordReset (..),
    CompletePasswordReset (..),
    PasswordChange (..),
    EmailUpdate (..),

    -- * Re-exports
    HttpsUrl (..),
    ServiceToken (..),
    ServiceTag (..),
  )
where

import Data.Aeson qualified as A
import Data.Id
import Data.Misc (HttpsUrl (..), PlainTextPassword6, PlainTextPassword8)
import Data.OpenApi qualified as S
import Data.Range
import Data.Schema
import Imports
import Wire.API.Conversation.Code as Code
import Wire.API.Provider.Service (ServiceToken (..))
import Wire.API.Provider.Service.Tag (ServiceTag (..))
import Wire.API.User.EmailAddress
import Wire.API.User.Profile (Name)
import Wire.Arbitrary (Arbitrary, GenericUniform (..))

--------------------------------------------------------------------------------
-- Provider

-- | Full provider definition as seen by a verified provider itself.
data Provider = Provider
  { Provider -> ProviderId
providerId :: ProviderId,
    Provider -> Name
providerName :: Name,
    Provider -> EmailAddress
providerEmail :: EmailAddress,
    Provider -> HttpsUrl
providerUrl :: HttpsUrl,
    Provider -> Text
providerDescr :: Text
  }
  deriving stock (Provider -> Provider -> Bool
(Provider -> Provider -> Bool)
-> (Provider -> Provider -> Bool) -> Eq Provider
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Provider -> Provider -> Bool
== :: Provider -> Provider -> Bool
$c/= :: Provider -> Provider -> Bool
/= :: Provider -> Provider -> Bool
Eq, Int -> Provider -> ShowS
[Provider] -> ShowS
Provider -> String
(Int -> Provider -> ShowS)
-> (Provider -> String) -> ([Provider] -> ShowS) -> Show Provider
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Provider -> ShowS
showsPrec :: Int -> Provider -> ShowS
$cshow :: Provider -> String
show :: Provider -> String
$cshowList :: [Provider] -> ShowS
showList :: [Provider] -> ShowS
Show, (forall x. Provider -> Rep Provider x)
-> (forall x. Rep Provider x -> Provider) -> Generic Provider
forall x. Rep Provider x -> Provider
forall x. Provider -> Rep Provider x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Provider -> Rep Provider x
from :: forall x. Provider -> Rep Provider x
$cto :: forall x. Rep Provider x -> Provider
to :: forall x. Rep Provider x -> Provider
Generic)
  deriving (Gen Provider
Gen Provider -> (Provider -> [Provider]) -> Arbitrary Provider
Provider -> [Provider]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen Provider
arbitrary :: Gen Provider
$cshrink :: Provider -> [Provider]
shrink :: Provider -> [Provider]
Arbitrary) via (GenericUniform Provider)
  deriving ([Provider] -> Value
[Provider] -> Encoding
Provider -> Value
Provider -> Encoding
(Provider -> Value)
-> (Provider -> Encoding)
-> ([Provider] -> Value)
-> ([Provider] -> Encoding)
-> ToJSON Provider
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: Provider -> Value
toJSON :: Provider -> Value
$ctoEncoding :: Provider -> Encoding
toEncoding :: Provider -> Encoding
$ctoJSONList :: [Provider] -> Value
toJSONList :: [Provider] -> Value
$ctoEncodingList :: [Provider] -> Encoding
toEncodingList :: [Provider] -> Encoding
A.ToJSON, Value -> Parser [Provider]
Value -> Parser Provider
(Value -> Parser Provider)
-> (Value -> Parser [Provider]) -> FromJSON Provider
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser Provider
parseJSON :: Value -> Parser Provider
$cparseJSONList :: Value -> Parser [Provider]
parseJSONList :: Value -> Parser [Provider]
A.FromJSON, Typeable Provider
Typeable Provider =>
(Proxy Provider -> Declare (Definitions Schema) NamedSchema)
-> ToSchema Provider
Proxy Provider -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy Provider -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy Provider -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema Provider

instance ToSchema Provider where
  schema :: ValueSchema NamedSwaggerDoc Provider
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] Provider Provider
-> ValueSchema NamedSwaggerDoc Provider
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"Provider" (SchemaP SwaggerDoc Object [Pair] Provider Provider
 -> ValueSchema NamedSwaggerDoc Provider)
-> SchemaP SwaggerDoc Object [Pair] Provider Provider
-> ValueSchema NamedSwaggerDoc Provider
forall a b. (a -> b) -> a -> b
$
      ProviderId -> Name -> EmailAddress -> HttpsUrl -> Text -> Provider
Provider
        (ProviderId
 -> Name -> EmailAddress -> HttpsUrl -> Text -> Provider)
-> SchemaP SwaggerDoc Object [Pair] Provider ProviderId
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     Provider
     (Name -> EmailAddress -> HttpsUrl -> Text -> Provider)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Provider -> ProviderId
providerId (Provider -> ProviderId)
-> SchemaP SwaggerDoc Object [Pair] ProviderId ProviderId
-> SchemaP SwaggerDoc Object [Pair] Provider ProviderId
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value ProviderId ProviderId
-> SchemaP SwaggerDoc Object [Pair] ProviderId ProviderId
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"id" SchemaP NamedSwaggerDoc Value Value ProviderId ProviderId
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  Provider
  (Name -> EmailAddress -> HttpsUrl -> Text -> Provider)
-> SchemaP SwaggerDoc Object [Pair] Provider Name
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     Provider
     (EmailAddress -> HttpsUrl -> Text -> Provider)
forall a b.
SchemaP SwaggerDoc Object [Pair] Provider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Provider a
-> SchemaP SwaggerDoc Object [Pair] Provider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Provider -> Name
providerName (Provider -> Name)
-> SchemaP SwaggerDoc Object [Pair] Name Name
-> SchemaP SwaggerDoc Object [Pair] Provider Name
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value Name Name
-> SchemaP SwaggerDoc Object [Pair] Name Name
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"name" SchemaP NamedSwaggerDoc Value Value Name Name
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  Provider
  (EmailAddress -> HttpsUrl -> Text -> Provider)
-> SchemaP SwaggerDoc Object [Pair] Provider EmailAddress
-> SchemaP
     SwaggerDoc Object [Pair] Provider (HttpsUrl -> Text -> Provider)
forall a b.
SchemaP SwaggerDoc Object [Pair] Provider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Provider a
-> SchemaP SwaggerDoc Object [Pair] Provider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Provider -> EmailAddress
providerEmail (Provider -> EmailAddress)
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] Provider EmailAddress
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"email" SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc Object [Pair] Provider (HttpsUrl -> Text -> Provider)
-> SchemaP SwaggerDoc Object [Pair] Provider HttpsUrl
-> SchemaP SwaggerDoc Object [Pair] Provider (Text -> Provider)
forall a b.
SchemaP SwaggerDoc Object [Pair] Provider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Provider a
-> SchemaP SwaggerDoc Object [Pair] Provider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Provider -> HttpsUrl
providerUrl (Provider -> HttpsUrl)
-> SchemaP SwaggerDoc Object [Pair] HttpsUrl HttpsUrl
-> SchemaP SwaggerDoc Object [Pair] Provider HttpsUrl
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value HttpsUrl HttpsUrl
-> SchemaP SwaggerDoc Object [Pair] HttpsUrl HttpsUrl
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"url" SchemaP NamedSwaggerDoc Value Value HttpsUrl HttpsUrl
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP SwaggerDoc Object [Pair] Provider (Text -> Provider)
-> SchemaP SwaggerDoc Object [Pair] Provider Text
-> SchemaP SwaggerDoc Object [Pair] Provider Provider
forall a b.
SchemaP SwaggerDoc Object [Pair] Provider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] Provider a
-> SchemaP SwaggerDoc Object [Pair] Provider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Provider -> Text
providerDescr (Provider -> Text)
-> SchemaP SwaggerDoc Object [Pair] Text Text
-> SchemaP SwaggerDoc Object [Pair] Provider Text
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value Text Text
-> SchemaP SwaggerDoc Object [Pair] Text Text
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"description" SchemaP NamedSwaggerDoc Value Value Text Text
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema

-- | A provider profile as seen by regular users.
-- Note: This is a placeholder that may evolve to contain only a subset of
-- the full provider information.
newtype ProviderProfile = ProviderProfile Provider
  deriving stock (ProviderProfile -> ProviderProfile -> Bool
(ProviderProfile -> ProviderProfile -> Bool)
-> (ProviderProfile -> ProviderProfile -> Bool)
-> Eq ProviderProfile
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProviderProfile -> ProviderProfile -> Bool
== :: ProviderProfile -> ProviderProfile -> Bool
$c/= :: ProviderProfile -> ProviderProfile -> Bool
/= :: ProviderProfile -> ProviderProfile -> Bool
Eq, Int -> ProviderProfile -> ShowS
[ProviderProfile] -> ShowS
ProviderProfile -> String
(Int -> ProviderProfile -> ShowS)
-> (ProviderProfile -> String)
-> ([ProviderProfile] -> ShowS)
-> Show ProviderProfile
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProviderProfile -> ShowS
showsPrec :: Int -> ProviderProfile -> ShowS
$cshow :: ProviderProfile -> String
show :: ProviderProfile -> String
$cshowList :: [ProviderProfile] -> ShowS
showList :: [ProviderProfile] -> ShowS
Show)
  deriving newtype (Value -> Parser [ProviderProfile]
Value -> Parser ProviderProfile
(Value -> Parser ProviderProfile)
-> (Value -> Parser [ProviderProfile]) -> FromJSON ProviderProfile
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser ProviderProfile
parseJSON :: Value -> Parser ProviderProfile
$cparseJSONList :: Value -> Parser [ProviderProfile]
parseJSONList :: Value -> Parser [ProviderProfile]
A.FromJSON, [ProviderProfile] -> Value
[ProviderProfile] -> Encoding
ProviderProfile -> Value
ProviderProfile -> Encoding
(ProviderProfile -> Value)
-> (ProviderProfile -> Encoding)
-> ([ProviderProfile] -> Value)
-> ([ProviderProfile] -> Encoding)
-> ToJSON ProviderProfile
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: ProviderProfile -> Value
toJSON :: ProviderProfile -> Value
$ctoEncoding :: ProviderProfile -> Encoding
toEncoding :: ProviderProfile -> Encoding
$ctoJSONList :: [ProviderProfile] -> Value
toJSONList :: [ProviderProfile] -> Value
$ctoEncodingList :: [ProviderProfile] -> Encoding
toEncodingList :: [ProviderProfile] -> Encoding
A.ToJSON, Gen ProviderProfile
Gen ProviderProfile
-> (ProviderProfile -> [ProviderProfile])
-> Arbitrary ProviderProfile
ProviderProfile -> [ProviderProfile]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen ProviderProfile
arbitrary :: Gen ProviderProfile
$cshrink :: ProviderProfile -> [ProviderProfile]
shrink :: ProviderProfile -> [ProviderProfile]
Arbitrary, Typeable ProviderProfile
Typeable ProviderProfile =>
(Proxy ProviderProfile -> Declare (Definitions Schema) NamedSchema)
-> ToSchema ProviderProfile
Proxy ProviderProfile -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy ProviderProfile -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy ProviderProfile -> Declare (Definitions Schema) NamedSchema
S.ToSchema)

--------------------------------------------------------------------------------
-- NewProvider

-- | Input data for registering a new provider.
data NewProvider = NewProvider
  { NewProvider -> Name
newProviderName :: Name,
    NewProvider -> EmailAddress
newProviderEmail :: EmailAddress,
    NewProvider -> HttpsUrl
newProviderUrl :: HttpsUrl,
    NewProvider -> Range 1 1024 Text
newProviderDescr :: Range 1 1024 Text,
    -- | If none provided, a password is generated.
    NewProvider -> Maybe PlainTextPassword6
newProviderPassword :: Maybe PlainTextPassword6
  }
  deriving stock (NewProvider -> NewProvider -> Bool
(NewProvider -> NewProvider -> Bool)
-> (NewProvider -> NewProvider -> Bool) -> Eq NewProvider
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NewProvider -> NewProvider -> Bool
== :: NewProvider -> NewProvider -> Bool
$c/= :: NewProvider -> NewProvider -> Bool
/= :: NewProvider -> NewProvider -> Bool
Eq, Int -> NewProvider -> ShowS
[NewProvider] -> ShowS
NewProvider -> String
(Int -> NewProvider -> ShowS)
-> (NewProvider -> String)
-> ([NewProvider] -> ShowS)
-> Show NewProvider
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NewProvider -> ShowS
showsPrec :: Int -> NewProvider -> ShowS
$cshow :: NewProvider -> String
show :: NewProvider -> String
$cshowList :: [NewProvider] -> ShowS
showList :: [NewProvider] -> ShowS
Show, (forall x. NewProvider -> Rep NewProvider x)
-> (forall x. Rep NewProvider x -> NewProvider)
-> Generic NewProvider
forall x. Rep NewProvider x -> NewProvider
forall x. NewProvider -> Rep NewProvider x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. NewProvider -> Rep NewProvider x
from :: forall x. NewProvider -> Rep NewProvider x
$cto :: forall x. Rep NewProvider x -> NewProvider
to :: forall x. Rep NewProvider x -> NewProvider
Generic)
  deriving (Gen NewProvider
Gen NewProvider
-> (NewProvider -> [NewProvider]) -> Arbitrary NewProvider
NewProvider -> [NewProvider]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen NewProvider
arbitrary :: Gen NewProvider
$cshrink :: NewProvider -> [NewProvider]
shrink :: NewProvider -> [NewProvider]
Arbitrary) via (GenericUniform NewProvider)
  deriving ([NewProvider] -> Value
[NewProvider] -> Encoding
NewProvider -> Value
NewProvider -> Encoding
(NewProvider -> Value)
-> (NewProvider -> Encoding)
-> ([NewProvider] -> Value)
-> ([NewProvider] -> Encoding)
-> ToJSON NewProvider
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: NewProvider -> Value
toJSON :: NewProvider -> Value
$ctoEncoding :: NewProvider -> Encoding
toEncoding :: NewProvider -> Encoding
$ctoJSONList :: [NewProvider] -> Value
toJSONList :: [NewProvider] -> Value
$ctoEncodingList :: [NewProvider] -> Encoding
toEncodingList :: [NewProvider] -> Encoding
A.ToJSON, Value -> Parser [NewProvider]
Value -> Parser NewProvider
(Value -> Parser NewProvider)
-> (Value -> Parser [NewProvider]) -> FromJSON NewProvider
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser NewProvider
parseJSON :: Value -> Parser NewProvider
$cparseJSONList :: Value -> Parser [NewProvider]
parseJSONList :: Value -> Parser [NewProvider]
A.FromJSON, Typeable NewProvider
Typeable NewProvider =>
(Proxy NewProvider -> Declare (Definitions Schema) NamedSchema)
-> ToSchema NewProvider
Proxy NewProvider -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy NewProvider -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy NewProvider -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema NewProvider

instance ToSchema NewProvider where
  schema :: ValueSchema NamedSwaggerDoc NewProvider
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] NewProvider NewProvider
-> ValueSchema NamedSwaggerDoc NewProvider
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"NewProvider" (SchemaP SwaggerDoc Object [Pair] NewProvider NewProvider
 -> ValueSchema NamedSwaggerDoc NewProvider)
-> SchemaP SwaggerDoc Object [Pair] NewProvider NewProvider
-> ValueSchema NamedSwaggerDoc NewProvider
forall a b. (a -> b) -> a -> b
$
      Name
-> EmailAddress
-> HttpsUrl
-> Range 1 1024 Text
-> Maybe PlainTextPassword6
-> NewProvider
NewProvider
        (Name
 -> EmailAddress
 -> HttpsUrl
 -> Range 1 1024 Text
 -> Maybe PlainTextPassword6
 -> NewProvider)
-> SchemaP SwaggerDoc Object [Pair] NewProvider Name
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewProvider
     (EmailAddress
      -> HttpsUrl
      -> Range 1 1024 Text
      -> Maybe PlainTextPassword6
      -> NewProvider)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NewProvider -> Name
newProviderName (NewProvider -> Name)
-> SchemaP SwaggerDoc Object [Pair] Name Name
-> SchemaP SwaggerDoc Object [Pair] NewProvider Name
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value Name Name
-> SchemaP SwaggerDoc Object [Pair] Name Name
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"name" SchemaP NamedSwaggerDoc Value Value Name Name
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  NewProvider
  (EmailAddress
   -> HttpsUrl
   -> Range 1 1024 Text
   -> Maybe PlainTextPassword6
   -> NewProvider)
-> SchemaP SwaggerDoc Object [Pair] NewProvider EmailAddress
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewProvider
     (HttpsUrl
      -> Range 1 1024 Text -> Maybe PlainTextPassword6 -> NewProvider)
forall a b.
SchemaP SwaggerDoc Object [Pair] NewProvider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] NewProvider a
-> SchemaP SwaggerDoc Object [Pair] NewProvider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NewProvider -> EmailAddress
newProviderEmail (NewProvider -> EmailAddress)
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] NewProvider EmailAddress
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"email" SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  NewProvider
  (HttpsUrl
   -> Range 1 1024 Text -> Maybe PlainTextPassword6 -> NewProvider)
-> SchemaP SwaggerDoc Object [Pair] NewProvider HttpsUrl
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewProvider
     (Range 1 1024 Text -> Maybe PlainTextPassword6 -> NewProvider)
forall a b.
SchemaP SwaggerDoc Object [Pair] NewProvider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] NewProvider a
-> SchemaP SwaggerDoc Object [Pair] NewProvider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NewProvider -> HttpsUrl
newProviderUrl (NewProvider -> HttpsUrl)
-> SchemaP SwaggerDoc Object [Pair] HttpsUrl HttpsUrl
-> SchemaP SwaggerDoc Object [Pair] NewProvider HttpsUrl
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value HttpsUrl HttpsUrl
-> SchemaP SwaggerDoc Object [Pair] HttpsUrl HttpsUrl
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"url" SchemaP NamedSwaggerDoc Value Value HttpsUrl HttpsUrl
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  NewProvider
  (Range 1 1024 Text -> Maybe PlainTextPassword6 -> NewProvider)
-> SchemaP SwaggerDoc Object [Pair] NewProvider (Range 1 1024 Text)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewProvider
     (Maybe PlainTextPassword6 -> NewProvider)
forall a b.
SchemaP SwaggerDoc Object [Pair] NewProvider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] NewProvider a
-> SchemaP SwaggerDoc Object [Pair] NewProvider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NewProvider -> Range 1 1024 Text
newProviderDescr (NewProvider -> Range 1 1024 Text)
-> SchemaP
     SwaggerDoc Object [Pair] (Range 1 1024 Text) (Range 1 1024 Text)
-> SchemaP SwaggerDoc Object [Pair] NewProvider (Range 1 1024 Text)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value (Range 1 1024 Text) (Range 1 1024 Text)
-> SchemaP
     SwaggerDoc Object [Pair] (Range 1 1024 Text) (Range 1 1024 Text)
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"description" SchemaP
  NamedSwaggerDoc Value Value (Range 1 1024 Text) (Range 1 1024 Text)
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  NewProvider
  (Maybe PlainTextPassword6 -> NewProvider)
-> SchemaP
     SwaggerDoc Object [Pair] NewProvider (Maybe PlainTextPassword6)
-> SchemaP SwaggerDoc Object [Pair] NewProvider NewProvider
forall a b.
SchemaP SwaggerDoc Object [Pair] NewProvider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] NewProvider a
-> SchemaP SwaggerDoc Object [Pair] NewProvider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NewProvider -> Maybe PlainTextPassword6
newProviderPassword (NewProvider -> Maybe PlainTextPassword6)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe PlainTextPassword6)
     (Maybe PlainTextPassword6)
-> SchemaP
     SwaggerDoc Object [Pair] NewProvider (Maybe PlainTextPassword6)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP
  SwaggerDoc
  Object
  [Pair]
  PlainTextPassword6
  (Maybe PlainTextPassword6)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe PlainTextPassword6)
     (Maybe PlainTextPassword6)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP
     NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     PlainTextPassword6
     (Maybe PlainTextPassword6)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"password" SchemaP
  NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)

-- | Response data upon registering a new provider.
data NewProviderResponse = NewProviderResponse
  { NewProviderResponse -> ProviderId
rsNewProviderId :: ProviderId,
    -- | The generated password, if none was provided
    -- in the 'NewProvider' request.
    NewProviderResponse -> Maybe PlainTextPassword8
rsNewProviderPassword :: Maybe PlainTextPassword8
  }
  deriving stock (NewProviderResponse -> NewProviderResponse -> Bool
(NewProviderResponse -> NewProviderResponse -> Bool)
-> (NewProviderResponse -> NewProviderResponse -> Bool)
-> Eq NewProviderResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NewProviderResponse -> NewProviderResponse -> Bool
== :: NewProviderResponse -> NewProviderResponse -> Bool
$c/= :: NewProviderResponse -> NewProviderResponse -> Bool
/= :: NewProviderResponse -> NewProviderResponse -> Bool
Eq, Int -> NewProviderResponse -> ShowS
[NewProviderResponse] -> ShowS
NewProviderResponse -> String
(Int -> NewProviderResponse -> ShowS)
-> (NewProviderResponse -> String)
-> ([NewProviderResponse] -> ShowS)
-> Show NewProviderResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> NewProviderResponse -> ShowS
showsPrec :: Int -> NewProviderResponse -> ShowS
$cshow :: NewProviderResponse -> String
show :: NewProviderResponse -> String
$cshowList :: [NewProviderResponse] -> ShowS
showList :: [NewProviderResponse] -> ShowS
Show, (forall x. NewProviderResponse -> Rep NewProviderResponse x)
-> (forall x. Rep NewProviderResponse x -> NewProviderResponse)
-> Generic NewProviderResponse
forall x. Rep NewProviderResponse x -> NewProviderResponse
forall x. NewProviderResponse -> Rep NewProviderResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. NewProviderResponse -> Rep NewProviderResponse x
from :: forall x. NewProviderResponse -> Rep NewProviderResponse x
$cto :: forall x. Rep NewProviderResponse x -> NewProviderResponse
to :: forall x. Rep NewProviderResponse x -> NewProviderResponse
Generic)
  deriving (Gen NewProviderResponse
Gen NewProviderResponse
-> (NewProviderResponse -> [NewProviderResponse])
-> Arbitrary NewProviderResponse
NewProviderResponse -> [NewProviderResponse]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen NewProviderResponse
arbitrary :: Gen NewProviderResponse
$cshrink :: NewProviderResponse -> [NewProviderResponse]
shrink :: NewProviderResponse -> [NewProviderResponse]
Arbitrary) via (GenericUniform NewProviderResponse)
  deriving ([NewProviderResponse] -> Value
[NewProviderResponse] -> Encoding
NewProviderResponse -> Value
NewProviderResponse -> Encoding
(NewProviderResponse -> Value)
-> (NewProviderResponse -> Encoding)
-> ([NewProviderResponse] -> Value)
-> ([NewProviderResponse] -> Encoding)
-> ToJSON NewProviderResponse
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: NewProviderResponse -> Value
toJSON :: NewProviderResponse -> Value
$ctoEncoding :: NewProviderResponse -> Encoding
toEncoding :: NewProviderResponse -> Encoding
$ctoJSONList :: [NewProviderResponse] -> Value
toJSONList :: [NewProviderResponse] -> Value
$ctoEncodingList :: [NewProviderResponse] -> Encoding
toEncodingList :: [NewProviderResponse] -> Encoding
A.ToJSON, Value -> Parser [NewProviderResponse]
Value -> Parser NewProviderResponse
(Value -> Parser NewProviderResponse)
-> (Value -> Parser [NewProviderResponse])
-> FromJSON NewProviderResponse
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser NewProviderResponse
parseJSON :: Value -> Parser NewProviderResponse
$cparseJSONList :: Value -> Parser [NewProviderResponse]
parseJSONList :: Value -> Parser [NewProviderResponse]
A.FromJSON, Typeable NewProviderResponse
Typeable NewProviderResponse =>
(Proxy NewProviderResponse
 -> Declare (Definitions Schema) NamedSchema)
-> ToSchema NewProviderResponse
Proxy NewProviderResponse
-> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy NewProviderResponse
-> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy NewProviderResponse
-> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema NewProviderResponse

instance ToSchema NewProviderResponse where
  schema :: ValueSchema NamedSwaggerDoc NewProviderResponse
schema =
    Text
-> SchemaP
     SwaggerDoc Object [Pair] NewProviderResponse NewProviderResponse
-> ValueSchema NamedSwaggerDoc NewProviderResponse
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"NewProviderResponse" (SchemaP
   SwaggerDoc Object [Pair] NewProviderResponse NewProviderResponse
 -> ValueSchema NamedSwaggerDoc NewProviderResponse)
-> SchemaP
     SwaggerDoc Object [Pair] NewProviderResponse NewProviderResponse
-> ValueSchema NamedSwaggerDoc NewProviderResponse
forall a b. (a -> b) -> a -> b
$
      ProviderId -> Maybe PlainTextPassword8 -> NewProviderResponse
NewProviderResponse
        (ProviderId -> Maybe PlainTextPassword8 -> NewProviderResponse)
-> SchemaP SwaggerDoc Object [Pair] NewProviderResponse ProviderId
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewProviderResponse
     (Maybe PlainTextPassword8 -> NewProviderResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> NewProviderResponse -> ProviderId
rsNewProviderId (NewProviderResponse -> ProviderId)
-> SchemaP SwaggerDoc Object [Pair] ProviderId ProviderId
-> SchemaP SwaggerDoc Object [Pair] NewProviderResponse ProviderId
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value ProviderId ProviderId
-> SchemaP SwaggerDoc Object [Pair] ProviderId ProviderId
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"id" SchemaP NamedSwaggerDoc Value Value ProviderId ProviderId
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  NewProviderResponse
  (Maybe PlainTextPassword8 -> NewProviderResponse)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewProviderResponse
     (Maybe PlainTextPassword8)
-> SchemaP
     SwaggerDoc Object [Pair] NewProviderResponse NewProviderResponse
forall a b.
SchemaP SwaggerDoc Object [Pair] NewProviderResponse (a -> b)
-> SchemaP SwaggerDoc Object [Pair] NewProviderResponse a
-> SchemaP SwaggerDoc Object [Pair] NewProviderResponse b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> NewProviderResponse -> Maybe PlainTextPassword8
rsNewProviderPassword (NewProviderResponse -> Maybe PlainTextPassword8)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe PlainTextPassword8)
     (Maybe PlainTextPassword8)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     NewProviderResponse
     (Maybe PlainTextPassword8)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP
  SwaggerDoc
  Object
  [Pair]
  PlainTextPassword8
  (Maybe PlainTextPassword8)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     (Maybe PlainTextPassword8)
     (Maybe PlainTextPassword8)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP
     NamedSwaggerDoc Value Value PlainTextPassword8 PlainTextPassword8
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     PlainTextPassword8
     (Maybe PlainTextPassword8)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"password" SchemaP
  NamedSwaggerDoc Value Value PlainTextPassword8 PlainTextPassword8
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)

--------------------------------------------------------------------------------
-- UpdateProvider

-- | Input data for updating general provider information.
data UpdateProvider = UpdateProvider
  { UpdateProvider -> Maybe Name
updateProviderName :: Maybe Name,
    UpdateProvider -> Maybe HttpsUrl
updateProviderUrl :: Maybe HttpsUrl,
    UpdateProvider -> Maybe Text
updateProviderDescr :: Maybe Text
  }
  deriving stock (UpdateProvider -> UpdateProvider -> Bool
(UpdateProvider -> UpdateProvider -> Bool)
-> (UpdateProvider -> UpdateProvider -> Bool) -> Eq UpdateProvider
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: UpdateProvider -> UpdateProvider -> Bool
== :: UpdateProvider -> UpdateProvider -> Bool
$c/= :: UpdateProvider -> UpdateProvider -> Bool
/= :: UpdateProvider -> UpdateProvider -> Bool
Eq, Int -> UpdateProvider -> ShowS
[UpdateProvider] -> ShowS
UpdateProvider -> String
(Int -> UpdateProvider -> ShowS)
-> (UpdateProvider -> String)
-> ([UpdateProvider] -> ShowS)
-> Show UpdateProvider
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> UpdateProvider -> ShowS
showsPrec :: Int -> UpdateProvider -> ShowS
$cshow :: UpdateProvider -> String
show :: UpdateProvider -> String
$cshowList :: [UpdateProvider] -> ShowS
showList :: [UpdateProvider] -> ShowS
Show, (forall x. UpdateProvider -> Rep UpdateProvider x)
-> (forall x. Rep UpdateProvider x -> UpdateProvider)
-> Generic UpdateProvider
forall x. Rep UpdateProvider x -> UpdateProvider
forall x. UpdateProvider -> Rep UpdateProvider x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. UpdateProvider -> Rep UpdateProvider x
from :: forall x. UpdateProvider -> Rep UpdateProvider x
$cto :: forall x. Rep UpdateProvider x -> UpdateProvider
to :: forall x. Rep UpdateProvider x -> UpdateProvider
Generic)
  deriving (Gen UpdateProvider
Gen UpdateProvider
-> (UpdateProvider -> [UpdateProvider]) -> Arbitrary UpdateProvider
UpdateProvider -> [UpdateProvider]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen UpdateProvider
arbitrary :: Gen UpdateProvider
$cshrink :: UpdateProvider -> [UpdateProvider]
shrink :: UpdateProvider -> [UpdateProvider]
Arbitrary) via (GenericUniform UpdateProvider)
  deriving ([UpdateProvider] -> Value
[UpdateProvider] -> Encoding
UpdateProvider -> Value
UpdateProvider -> Encoding
(UpdateProvider -> Value)
-> (UpdateProvider -> Encoding)
-> ([UpdateProvider] -> Value)
-> ([UpdateProvider] -> Encoding)
-> ToJSON UpdateProvider
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: UpdateProvider -> Value
toJSON :: UpdateProvider -> Value
$ctoEncoding :: UpdateProvider -> Encoding
toEncoding :: UpdateProvider -> Encoding
$ctoJSONList :: [UpdateProvider] -> Value
toJSONList :: [UpdateProvider] -> Value
$ctoEncodingList :: [UpdateProvider] -> Encoding
toEncodingList :: [UpdateProvider] -> Encoding
A.ToJSON, Value -> Parser [UpdateProvider]
Value -> Parser UpdateProvider
(Value -> Parser UpdateProvider)
-> (Value -> Parser [UpdateProvider]) -> FromJSON UpdateProvider
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser UpdateProvider
parseJSON :: Value -> Parser UpdateProvider
$cparseJSONList :: Value -> Parser [UpdateProvider]
parseJSONList :: Value -> Parser [UpdateProvider]
A.FromJSON, Typeable UpdateProvider
Typeable UpdateProvider =>
(Proxy UpdateProvider -> Declare (Definitions Schema) NamedSchema)
-> ToSchema UpdateProvider
Proxy UpdateProvider -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy UpdateProvider -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy UpdateProvider -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema UpdateProvider

instance ToSchema UpdateProvider where
  schema :: ValueSchema NamedSwaggerDoc UpdateProvider
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider UpdateProvider
-> ValueSchema NamedSwaggerDoc UpdateProvider
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"UpdateProvider" (SchemaP SwaggerDoc Object [Pair] UpdateProvider UpdateProvider
 -> ValueSchema NamedSwaggerDoc UpdateProvider)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider UpdateProvider
-> ValueSchema NamedSwaggerDoc UpdateProvider
forall a b. (a -> b) -> a -> b
$
      Maybe Name -> Maybe HttpsUrl -> Maybe Text -> UpdateProvider
UpdateProvider
        (Maybe Name -> Maybe HttpsUrl -> Maybe Text -> UpdateProvider)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider (Maybe Name)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpdateProvider
     (Maybe HttpsUrl -> Maybe Text -> UpdateProvider)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> UpdateProvider -> Maybe Name
updateProviderName (UpdateProvider -> Maybe Name)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Name) (Maybe Name)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider (Maybe Name)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP SwaggerDoc Object [Pair] Name (Maybe Name)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Name) (Maybe Name)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP NamedSwaggerDoc Value Value Name Name
-> SchemaP SwaggerDoc Object [Pair] Name (Maybe Name)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"name" SchemaP NamedSwaggerDoc Value Value Name Name
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  UpdateProvider
  (Maybe HttpsUrl -> Maybe Text -> UpdateProvider)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider (Maybe HttpsUrl)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     UpdateProvider
     (Maybe Text -> UpdateProvider)
forall a b.
SchemaP SwaggerDoc Object [Pair] UpdateProvider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider a
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> UpdateProvider -> Maybe HttpsUrl
updateProviderUrl (UpdateProvider -> Maybe HttpsUrl)
-> SchemaP
     SwaggerDoc Object [Pair] (Maybe HttpsUrl) (Maybe HttpsUrl)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider (Maybe HttpsUrl)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP SwaggerDoc Object [Pair] HttpsUrl (Maybe HttpsUrl)
-> SchemaP
     SwaggerDoc Object [Pair] (Maybe HttpsUrl) (Maybe HttpsUrl)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP NamedSwaggerDoc Value Value HttpsUrl HttpsUrl
-> SchemaP SwaggerDoc Object [Pair] HttpsUrl (Maybe HttpsUrl)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"url" SchemaP NamedSwaggerDoc Value Value HttpsUrl HttpsUrl
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  UpdateProvider
  (Maybe Text -> UpdateProvider)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider (Maybe Text)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider UpdateProvider
forall a b.
SchemaP SwaggerDoc Object [Pair] UpdateProvider (a -> b)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider a
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> UpdateProvider -> Maybe Text
updateProviderDescr (UpdateProvider -> Maybe Text)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Text) (Maybe Text)
-> SchemaP SwaggerDoc Object [Pair] UpdateProvider (Maybe Text)
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= SchemaP SwaggerDoc Object [Pair] Text (Maybe Text)
-> SchemaP SwaggerDoc Object [Pair] (Maybe Text) (Maybe Text)
forall w d v a b.
Monoid w =>
SchemaP d v w a b -> SchemaP d v w (Maybe a) b
maybe_ (Text
-> SchemaP NamedSwaggerDoc Value Value Text Text
-> SchemaP SwaggerDoc Object [Pair] Text (Maybe Text)
forall doc doc' a b.
(HasOpt doc, HasField doc' doc) =>
Text
-> SchemaP doc' Value Value a b
-> SchemaP doc Object [Pair] a (Maybe b)
optField Text
"description" SchemaP NamedSwaggerDoc Value Value Text Text
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema)

--------------------------------------------------------------------------------
-- ProviderActivationResponse

-- | Successful response upon activating an email address (or possibly phone
-- number in the future) of a provider.
newtype ProviderActivationResponse = ProviderActivationResponse
  {ProviderActivationResponse -> EmailAddress
activatedProviderIdentity :: EmailAddress}
  deriving stock (ProviderActivationResponse -> ProviderActivationResponse -> Bool
(ProviderActivationResponse -> ProviderActivationResponse -> Bool)
-> (ProviderActivationResponse
    -> ProviderActivationResponse -> Bool)
-> Eq ProviderActivationResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProviderActivationResponse -> ProviderActivationResponse -> Bool
== :: ProviderActivationResponse -> ProviderActivationResponse -> Bool
$c/= :: ProviderActivationResponse -> ProviderActivationResponse -> Bool
/= :: ProviderActivationResponse -> ProviderActivationResponse -> Bool
Eq, Int -> ProviderActivationResponse -> ShowS
[ProviderActivationResponse] -> ShowS
ProviderActivationResponse -> String
(Int -> ProviderActivationResponse -> ShowS)
-> (ProviderActivationResponse -> String)
-> ([ProviderActivationResponse] -> ShowS)
-> Show ProviderActivationResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProviderActivationResponse -> ShowS
showsPrec :: Int -> ProviderActivationResponse -> ShowS
$cshow :: ProviderActivationResponse -> String
show :: ProviderActivationResponse -> String
$cshowList :: [ProviderActivationResponse] -> ShowS
showList :: [ProviderActivationResponse] -> ShowS
Show)
  deriving newtype (Gen ProviderActivationResponse
Gen ProviderActivationResponse
-> (ProviderActivationResponse -> [ProviderActivationResponse])
-> Arbitrary ProviderActivationResponse
ProviderActivationResponse -> [ProviderActivationResponse]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen ProviderActivationResponse
arbitrary :: Gen ProviderActivationResponse
$cshrink :: ProviderActivationResponse -> [ProviderActivationResponse]
shrink :: ProviderActivationResponse -> [ProviderActivationResponse]
Arbitrary)
  deriving ([ProviderActivationResponse] -> Value
[ProviderActivationResponse] -> Encoding
ProviderActivationResponse -> Value
ProviderActivationResponse -> Encoding
(ProviderActivationResponse -> Value)
-> (ProviderActivationResponse -> Encoding)
-> ([ProviderActivationResponse] -> Value)
-> ([ProviderActivationResponse] -> Encoding)
-> ToJSON ProviderActivationResponse
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: ProviderActivationResponse -> Value
toJSON :: ProviderActivationResponse -> Value
$ctoEncoding :: ProviderActivationResponse -> Encoding
toEncoding :: ProviderActivationResponse -> Encoding
$ctoJSONList :: [ProviderActivationResponse] -> Value
toJSONList :: [ProviderActivationResponse] -> Value
$ctoEncodingList :: [ProviderActivationResponse] -> Encoding
toEncodingList :: [ProviderActivationResponse] -> Encoding
A.ToJSON, Value -> Parser [ProviderActivationResponse]
Value -> Parser ProviderActivationResponse
(Value -> Parser ProviderActivationResponse)
-> (Value -> Parser [ProviderActivationResponse])
-> FromJSON ProviderActivationResponse
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser ProviderActivationResponse
parseJSON :: Value -> Parser ProviderActivationResponse
$cparseJSONList :: Value -> Parser [ProviderActivationResponse]
parseJSONList :: Value -> Parser [ProviderActivationResponse]
A.FromJSON, Typeable ProviderActivationResponse
Typeable ProviderActivationResponse =>
(Proxy ProviderActivationResponse
 -> Declare (Definitions Schema) NamedSchema)
-> ToSchema ProviderActivationResponse
Proxy ProviderActivationResponse
-> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy ProviderActivationResponse
-> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy ProviderActivationResponse
-> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema ProviderActivationResponse

instance ToSchema ProviderActivationResponse where
  schema :: ValueSchema NamedSwaggerDoc ProviderActivationResponse
schema =
    Text
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     ProviderActivationResponse
     ProviderActivationResponse
-> ValueSchema NamedSwaggerDoc ProviderActivationResponse
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"ProviderActivationResponse" (SchemaP
   SwaggerDoc
   Object
   [Pair]
   ProviderActivationResponse
   ProviderActivationResponse
 -> ValueSchema NamedSwaggerDoc ProviderActivationResponse)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     ProviderActivationResponse
     ProviderActivationResponse
-> ValueSchema NamedSwaggerDoc ProviderActivationResponse
forall a b. (a -> b) -> a -> b
$
      EmailAddress -> ProviderActivationResponse
ProviderActivationResponse
        (EmailAddress -> ProviderActivationResponse)
-> SchemaP
     SwaggerDoc Object [Pair] ProviderActivationResponse EmailAddress
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     ProviderActivationResponse
     ProviderActivationResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProviderActivationResponse -> EmailAddress
activatedProviderIdentity (ProviderActivationResponse -> EmailAddress)
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
-> SchemaP
     SwaggerDoc Object [Pair] ProviderActivationResponse EmailAddress
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"email" SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema

--------------------------------------------------------------------------------
-- ProviderLogin

-- | Input data for a provider login request.
data ProviderLogin = ProviderLogin
  { ProviderLogin -> EmailAddress
providerLoginEmail :: EmailAddress,
    ProviderLogin -> PlainTextPassword6
providerLoginPassword :: PlainTextPassword6
  }
  deriving stock (ProviderLogin -> ProviderLogin -> Bool
(ProviderLogin -> ProviderLogin -> Bool)
-> (ProviderLogin -> ProviderLogin -> Bool) -> Eq ProviderLogin
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ProviderLogin -> ProviderLogin -> Bool
== :: ProviderLogin -> ProviderLogin -> Bool
$c/= :: ProviderLogin -> ProviderLogin -> Bool
/= :: ProviderLogin -> ProviderLogin -> Bool
Eq, Int -> ProviderLogin -> ShowS
[ProviderLogin] -> ShowS
ProviderLogin -> String
(Int -> ProviderLogin -> ShowS)
-> (ProviderLogin -> String)
-> ([ProviderLogin] -> ShowS)
-> Show ProviderLogin
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ProviderLogin -> ShowS
showsPrec :: Int -> ProviderLogin -> ShowS
$cshow :: ProviderLogin -> String
show :: ProviderLogin -> String
$cshowList :: [ProviderLogin] -> ShowS
showList :: [ProviderLogin] -> ShowS
Show, (forall x. ProviderLogin -> Rep ProviderLogin x)
-> (forall x. Rep ProviderLogin x -> ProviderLogin)
-> Generic ProviderLogin
forall x. Rep ProviderLogin x -> ProviderLogin
forall x. ProviderLogin -> Rep ProviderLogin x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ProviderLogin -> Rep ProviderLogin x
from :: forall x. ProviderLogin -> Rep ProviderLogin x
$cto :: forall x. Rep ProviderLogin x -> ProviderLogin
to :: forall x. Rep ProviderLogin x -> ProviderLogin
Generic)
  deriving (Gen ProviderLogin
Gen ProviderLogin
-> (ProviderLogin -> [ProviderLogin]) -> Arbitrary ProviderLogin
ProviderLogin -> [ProviderLogin]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen ProviderLogin
arbitrary :: Gen ProviderLogin
$cshrink :: ProviderLogin -> [ProviderLogin]
shrink :: ProviderLogin -> [ProviderLogin]
Arbitrary) via (GenericUniform ProviderLogin)
  deriving ([ProviderLogin] -> Value
[ProviderLogin] -> Encoding
ProviderLogin -> Value
ProviderLogin -> Encoding
(ProviderLogin -> Value)
-> (ProviderLogin -> Encoding)
-> ([ProviderLogin] -> Value)
-> ([ProviderLogin] -> Encoding)
-> ToJSON ProviderLogin
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: ProviderLogin -> Value
toJSON :: ProviderLogin -> Value
$ctoEncoding :: ProviderLogin -> Encoding
toEncoding :: ProviderLogin -> Encoding
$ctoJSONList :: [ProviderLogin] -> Value
toJSONList :: [ProviderLogin] -> Value
$ctoEncodingList :: [ProviderLogin] -> Encoding
toEncodingList :: [ProviderLogin] -> Encoding
A.ToJSON, Value -> Parser [ProviderLogin]
Value -> Parser ProviderLogin
(Value -> Parser ProviderLogin)
-> (Value -> Parser [ProviderLogin]) -> FromJSON ProviderLogin
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser ProviderLogin
parseJSON :: Value -> Parser ProviderLogin
$cparseJSONList :: Value -> Parser [ProviderLogin]
parseJSONList :: Value -> Parser [ProviderLogin]
A.FromJSON, Typeable ProviderLogin
Typeable ProviderLogin =>
(Proxy ProviderLogin -> Declare (Definitions Schema) NamedSchema)
-> ToSchema ProviderLogin
Proxy ProviderLogin -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy ProviderLogin -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy ProviderLogin -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema ProviderLogin

instance ToSchema ProviderLogin where
  schema :: ValueSchema NamedSwaggerDoc ProviderLogin
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] ProviderLogin ProviderLogin
-> ValueSchema NamedSwaggerDoc ProviderLogin
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"ProviderLogin" (SchemaP SwaggerDoc Object [Pair] ProviderLogin ProviderLogin
 -> ValueSchema NamedSwaggerDoc ProviderLogin)
-> SchemaP SwaggerDoc Object [Pair] ProviderLogin ProviderLogin
-> ValueSchema NamedSwaggerDoc ProviderLogin
forall a b. (a -> b) -> a -> b
$
      EmailAddress -> PlainTextPassword6 -> ProviderLogin
ProviderLogin
        (EmailAddress -> PlainTextPassword6 -> ProviderLogin)
-> SchemaP SwaggerDoc Object [Pair] ProviderLogin EmailAddress
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     ProviderLogin
     (PlainTextPassword6 -> ProviderLogin)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ProviderLogin -> EmailAddress
providerLoginEmail (ProviderLogin -> EmailAddress)
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] ProviderLogin EmailAddress
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"email" SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  ProviderLogin
  (PlainTextPassword6 -> ProviderLogin)
-> SchemaP
     SwaggerDoc Object [Pair] ProviderLogin PlainTextPassword6
-> SchemaP SwaggerDoc Object [Pair] ProviderLogin ProviderLogin
forall a b.
SchemaP SwaggerDoc Object [Pair] ProviderLogin (a -> b)
-> SchemaP SwaggerDoc Object [Pair] ProviderLogin a
-> SchemaP SwaggerDoc Object [Pair] ProviderLogin b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ProviderLogin -> PlainTextPassword6
providerLoginPassword (ProviderLogin -> PlainTextPassword6)
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] ProviderLogin PlainTextPassword6
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"password" SchemaP
  NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema

--------------------------------------------------------------------------------
-- DeleteProvider

-- | Input data for a provider deletion request.
-- | FUTUREWORK: look into a phase out of PlainTextPassword6
newtype DeleteProvider = DeleteProvider
  {DeleteProvider -> PlainTextPassword6
deleteProviderPassword :: PlainTextPassword6}
  deriving stock (DeleteProvider -> DeleteProvider -> Bool
(DeleteProvider -> DeleteProvider -> Bool)
-> (DeleteProvider -> DeleteProvider -> Bool) -> Eq DeleteProvider
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DeleteProvider -> DeleteProvider -> Bool
== :: DeleteProvider -> DeleteProvider -> Bool
$c/= :: DeleteProvider -> DeleteProvider -> Bool
/= :: DeleteProvider -> DeleteProvider -> Bool
Eq, Int -> DeleteProvider -> ShowS
[DeleteProvider] -> ShowS
DeleteProvider -> String
(Int -> DeleteProvider -> ShowS)
-> (DeleteProvider -> String)
-> ([DeleteProvider] -> ShowS)
-> Show DeleteProvider
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DeleteProvider -> ShowS
showsPrec :: Int -> DeleteProvider -> ShowS
$cshow :: DeleteProvider -> String
show :: DeleteProvider -> String
$cshowList :: [DeleteProvider] -> ShowS
showList :: [DeleteProvider] -> ShowS
Show)
  deriving newtype (Gen DeleteProvider
Gen DeleteProvider
-> (DeleteProvider -> [DeleteProvider]) -> Arbitrary DeleteProvider
DeleteProvider -> [DeleteProvider]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen DeleteProvider
arbitrary :: Gen DeleteProvider
$cshrink :: DeleteProvider -> [DeleteProvider]
shrink :: DeleteProvider -> [DeleteProvider]
Arbitrary)
  deriving ([DeleteProvider] -> Value
[DeleteProvider] -> Encoding
DeleteProvider -> Value
DeleteProvider -> Encoding
(DeleteProvider -> Value)
-> (DeleteProvider -> Encoding)
-> ([DeleteProvider] -> Value)
-> ([DeleteProvider] -> Encoding)
-> ToJSON DeleteProvider
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: DeleteProvider -> Value
toJSON :: DeleteProvider -> Value
$ctoEncoding :: DeleteProvider -> Encoding
toEncoding :: DeleteProvider -> Encoding
$ctoJSONList :: [DeleteProvider] -> Value
toJSONList :: [DeleteProvider] -> Value
$ctoEncodingList :: [DeleteProvider] -> Encoding
toEncodingList :: [DeleteProvider] -> Encoding
A.ToJSON, Value -> Parser [DeleteProvider]
Value -> Parser DeleteProvider
(Value -> Parser DeleteProvider)
-> (Value -> Parser [DeleteProvider]) -> FromJSON DeleteProvider
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser DeleteProvider
parseJSON :: Value -> Parser DeleteProvider
$cparseJSONList :: Value -> Parser [DeleteProvider]
parseJSONList :: Value -> Parser [DeleteProvider]
A.FromJSON, Typeable DeleteProvider
Typeable DeleteProvider =>
(Proxy DeleteProvider -> Declare (Definitions Schema) NamedSchema)
-> ToSchema DeleteProvider
Proxy DeleteProvider -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy DeleteProvider -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy DeleteProvider -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema DeleteProvider

instance ToSchema DeleteProvider where
  schema :: ValueSchema NamedSwaggerDoc DeleteProvider
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] DeleteProvider DeleteProvider
-> ValueSchema NamedSwaggerDoc DeleteProvider
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"DeleteProvider" (SchemaP SwaggerDoc Object [Pair] DeleteProvider DeleteProvider
 -> ValueSchema NamedSwaggerDoc DeleteProvider)
-> SchemaP SwaggerDoc Object [Pair] DeleteProvider DeleteProvider
-> ValueSchema NamedSwaggerDoc DeleteProvider
forall a b. (a -> b) -> a -> b
$
      PlainTextPassword6 -> DeleteProvider
DeleteProvider
        (PlainTextPassword6 -> DeleteProvider)
-> SchemaP
     SwaggerDoc Object [Pair] DeleteProvider PlainTextPassword6
-> SchemaP SwaggerDoc Object [Pair] DeleteProvider DeleteProvider
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> DeleteProvider -> PlainTextPassword6
deleteProviderPassword (DeleteProvider -> PlainTextPassword6)
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] DeleteProvider PlainTextPassword6
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"password" SchemaP
  NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema

--------------------------------------------------------------------------------
-- Password Change/Reset

-- | The payload for initiating a password reset.
newtype PasswordReset = PasswordReset {PasswordReset -> EmailAddress
email :: EmailAddress}
  deriving stock (PasswordReset -> PasswordReset -> Bool
(PasswordReset -> PasswordReset -> Bool)
-> (PasswordReset -> PasswordReset -> Bool) -> Eq PasswordReset
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PasswordReset -> PasswordReset -> Bool
== :: PasswordReset -> PasswordReset -> Bool
$c/= :: PasswordReset -> PasswordReset -> Bool
/= :: PasswordReset -> PasswordReset -> Bool
Eq, Int -> PasswordReset -> ShowS
[PasswordReset] -> ShowS
PasswordReset -> String
(Int -> PasswordReset -> ShowS)
-> (PasswordReset -> String)
-> ([PasswordReset] -> ShowS)
-> Show PasswordReset
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PasswordReset -> ShowS
showsPrec :: Int -> PasswordReset -> ShowS
$cshow :: PasswordReset -> String
show :: PasswordReset -> String
$cshowList :: [PasswordReset] -> ShowS
showList :: [PasswordReset] -> ShowS
Show)
  deriving newtype (Gen PasswordReset
Gen PasswordReset
-> (PasswordReset -> [PasswordReset]) -> Arbitrary PasswordReset
PasswordReset -> [PasswordReset]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen PasswordReset
arbitrary :: Gen PasswordReset
$cshrink :: PasswordReset -> [PasswordReset]
shrink :: PasswordReset -> [PasswordReset]
Arbitrary)
  deriving ([PasswordReset] -> Value
[PasswordReset] -> Encoding
PasswordReset -> Value
PasswordReset -> Encoding
(PasswordReset -> Value)
-> (PasswordReset -> Encoding)
-> ([PasswordReset] -> Value)
-> ([PasswordReset] -> Encoding)
-> ToJSON PasswordReset
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: PasswordReset -> Value
toJSON :: PasswordReset -> Value
$ctoEncoding :: PasswordReset -> Encoding
toEncoding :: PasswordReset -> Encoding
$ctoJSONList :: [PasswordReset] -> Value
toJSONList :: [PasswordReset] -> Value
$ctoEncodingList :: [PasswordReset] -> Encoding
toEncodingList :: [PasswordReset] -> Encoding
A.ToJSON, Value -> Parser [PasswordReset]
Value -> Parser PasswordReset
(Value -> Parser PasswordReset)
-> (Value -> Parser [PasswordReset]) -> FromJSON PasswordReset
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser PasswordReset
parseJSON :: Value -> Parser PasswordReset
$cparseJSONList :: Value -> Parser [PasswordReset]
parseJSONList :: Value -> Parser [PasswordReset]
A.FromJSON, Typeable PasswordReset
Typeable PasswordReset =>
(Proxy PasswordReset -> Declare (Definitions Schema) NamedSchema)
-> ToSchema PasswordReset
Proxy PasswordReset -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy PasswordReset -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy PasswordReset -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema PasswordReset

instance ToSchema PasswordReset where
  schema :: ValueSchema NamedSwaggerDoc PasswordReset
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] PasswordReset PasswordReset
-> ValueSchema NamedSwaggerDoc PasswordReset
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"PasswordReset" (SchemaP SwaggerDoc Object [Pair] PasswordReset PasswordReset
 -> ValueSchema NamedSwaggerDoc PasswordReset)
-> SchemaP SwaggerDoc Object [Pair] PasswordReset PasswordReset
-> ValueSchema NamedSwaggerDoc PasswordReset
forall a b. (a -> b) -> a -> b
$
      EmailAddress -> PasswordReset
PasswordReset
        (EmailAddress -> PasswordReset)
-> SchemaP SwaggerDoc Object [Pair] PasswordReset EmailAddress
-> SchemaP SwaggerDoc Object [Pair] PasswordReset PasswordReset
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (.email) (PasswordReset -> EmailAddress)
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] PasswordReset EmailAddress
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"email" SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema

-- | The payload for completing a password reset.
data CompletePasswordReset = CompletePasswordReset
  { CompletePasswordReset -> Key
key :: Code.Key,
    CompletePasswordReset -> Value
code :: Code.Value,
    CompletePasswordReset -> PlainTextPassword6
password :: PlainTextPassword6
  }
  deriving stock (CompletePasswordReset -> CompletePasswordReset -> Bool
(CompletePasswordReset -> CompletePasswordReset -> Bool)
-> (CompletePasswordReset -> CompletePasswordReset -> Bool)
-> Eq CompletePasswordReset
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CompletePasswordReset -> CompletePasswordReset -> Bool
== :: CompletePasswordReset -> CompletePasswordReset -> Bool
$c/= :: CompletePasswordReset -> CompletePasswordReset -> Bool
/= :: CompletePasswordReset -> CompletePasswordReset -> Bool
Eq, Int -> CompletePasswordReset -> ShowS
[CompletePasswordReset] -> ShowS
CompletePasswordReset -> String
(Int -> CompletePasswordReset -> ShowS)
-> (CompletePasswordReset -> String)
-> ([CompletePasswordReset] -> ShowS)
-> Show CompletePasswordReset
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CompletePasswordReset -> ShowS
showsPrec :: Int -> CompletePasswordReset -> ShowS
$cshow :: CompletePasswordReset -> String
show :: CompletePasswordReset -> String
$cshowList :: [CompletePasswordReset] -> ShowS
showList :: [CompletePasswordReset] -> ShowS
Show, (forall x. CompletePasswordReset -> Rep CompletePasswordReset x)
-> (forall x. Rep CompletePasswordReset x -> CompletePasswordReset)
-> Generic CompletePasswordReset
forall x. Rep CompletePasswordReset x -> CompletePasswordReset
forall x. CompletePasswordReset -> Rep CompletePasswordReset x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. CompletePasswordReset -> Rep CompletePasswordReset x
from :: forall x. CompletePasswordReset -> Rep CompletePasswordReset x
$cto :: forall x. Rep CompletePasswordReset x -> CompletePasswordReset
to :: forall x. Rep CompletePasswordReset x -> CompletePasswordReset
Generic)
  deriving (Gen CompletePasswordReset
Gen CompletePasswordReset
-> (CompletePasswordReset -> [CompletePasswordReset])
-> Arbitrary CompletePasswordReset
CompletePasswordReset -> [CompletePasswordReset]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen CompletePasswordReset
arbitrary :: Gen CompletePasswordReset
$cshrink :: CompletePasswordReset -> [CompletePasswordReset]
shrink :: CompletePasswordReset -> [CompletePasswordReset]
Arbitrary) via (GenericUniform CompletePasswordReset)
  deriving ([CompletePasswordReset] -> Value
[CompletePasswordReset] -> Encoding
CompletePasswordReset -> Value
CompletePasswordReset -> Encoding
(CompletePasswordReset -> Value)
-> (CompletePasswordReset -> Encoding)
-> ([CompletePasswordReset] -> Value)
-> ([CompletePasswordReset] -> Encoding)
-> ToJSON CompletePasswordReset
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: CompletePasswordReset -> Value
toJSON :: CompletePasswordReset -> Value
$ctoEncoding :: CompletePasswordReset -> Encoding
toEncoding :: CompletePasswordReset -> Encoding
$ctoJSONList :: [CompletePasswordReset] -> Value
toJSONList :: [CompletePasswordReset] -> Value
$ctoEncodingList :: [CompletePasswordReset] -> Encoding
toEncodingList :: [CompletePasswordReset] -> Encoding
A.ToJSON, Value -> Parser [CompletePasswordReset]
Value -> Parser CompletePasswordReset
(Value -> Parser CompletePasswordReset)
-> (Value -> Parser [CompletePasswordReset])
-> FromJSON CompletePasswordReset
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser CompletePasswordReset
parseJSON :: Value -> Parser CompletePasswordReset
$cparseJSONList :: Value -> Parser [CompletePasswordReset]
parseJSONList :: Value -> Parser [CompletePasswordReset]
A.FromJSON, Typeable CompletePasswordReset
Typeable CompletePasswordReset =>
(Proxy CompletePasswordReset
 -> Declare (Definitions Schema) NamedSchema)
-> ToSchema CompletePasswordReset
Proxy CompletePasswordReset
-> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy CompletePasswordReset
-> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy CompletePasswordReset
-> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema CompletePasswordReset

instance ToSchema CompletePasswordReset where
  schema :: ValueSchema NamedSwaggerDoc CompletePasswordReset
schema =
    Text
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     CompletePasswordReset
     CompletePasswordReset
-> ValueSchema NamedSwaggerDoc CompletePasswordReset
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"CompletePasswordReset" (SchemaP
   SwaggerDoc
   Object
   [Pair]
   CompletePasswordReset
   CompletePasswordReset
 -> ValueSchema NamedSwaggerDoc CompletePasswordReset)
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     CompletePasswordReset
     CompletePasswordReset
-> ValueSchema NamedSwaggerDoc CompletePasswordReset
forall a b. (a -> b) -> a -> b
$
      Key -> Value -> PlainTextPassword6 -> CompletePasswordReset
CompletePasswordReset
        (Key -> Value -> PlainTextPassword6 -> CompletePasswordReset)
-> SchemaP SwaggerDoc Object [Pair] CompletePasswordReset Key
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     CompletePasswordReset
     (Value -> PlainTextPassword6 -> CompletePasswordReset)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> CompletePasswordReset -> Key
key (CompletePasswordReset -> Key)
-> SchemaP SwaggerDoc Object [Pair] Key Key
-> SchemaP SwaggerDoc Object [Pair] CompletePasswordReset Key
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value Key Key
-> SchemaP SwaggerDoc Object [Pair] Key Key
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"key" SchemaP NamedSwaggerDoc Value Value Key Key
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  CompletePasswordReset
  (Value -> PlainTextPassword6 -> CompletePasswordReset)
-> SchemaP SwaggerDoc Object [Pair] CompletePasswordReset Value
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     CompletePasswordReset
     (PlainTextPassword6 -> CompletePasswordReset)
forall a b.
SchemaP SwaggerDoc Object [Pair] CompletePasswordReset (a -> b)
-> SchemaP SwaggerDoc Object [Pair] CompletePasswordReset a
-> SchemaP SwaggerDoc Object [Pair] CompletePasswordReset b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (.code) (CompletePasswordReset -> Value)
-> SchemaP SwaggerDoc Object [Pair] Value Value
-> SchemaP SwaggerDoc Object [Pair] CompletePasswordReset Value
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value Value Value
-> SchemaP SwaggerDoc Object [Pair] Value Value
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"code" SchemaP NamedSwaggerDoc Value Value Value Value
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  CompletePasswordReset
  (PlainTextPassword6 -> CompletePasswordReset)
-> SchemaP
     SwaggerDoc Object [Pair] CompletePasswordReset PlainTextPassword6
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     CompletePasswordReset
     CompletePasswordReset
forall a b.
SchemaP SwaggerDoc Object [Pair] CompletePasswordReset (a -> b)
-> SchemaP SwaggerDoc Object [Pair] CompletePasswordReset a
-> SchemaP SwaggerDoc Object [Pair] CompletePasswordReset b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (.password) (CompletePasswordReset -> PlainTextPassword6)
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] CompletePasswordReset PlainTextPassword6
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"password" SchemaP
  NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema

-- | The payload for changing a password.
data PasswordChange = PasswordChange
  { PasswordChange -> PlainTextPassword6
oldPassword :: PlainTextPassword6,
    PasswordChange -> PlainTextPassword6
newPassword :: PlainTextPassword6
  }
  deriving stock (PasswordChange -> PasswordChange -> Bool
(PasswordChange -> PasswordChange -> Bool)
-> (PasswordChange -> PasswordChange -> Bool) -> Eq PasswordChange
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PasswordChange -> PasswordChange -> Bool
== :: PasswordChange -> PasswordChange -> Bool
$c/= :: PasswordChange -> PasswordChange -> Bool
/= :: PasswordChange -> PasswordChange -> Bool
Eq, Int -> PasswordChange -> ShowS
[PasswordChange] -> ShowS
PasswordChange -> String
(Int -> PasswordChange -> ShowS)
-> (PasswordChange -> String)
-> ([PasswordChange] -> ShowS)
-> Show PasswordChange
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PasswordChange -> ShowS
showsPrec :: Int -> PasswordChange -> ShowS
$cshow :: PasswordChange -> String
show :: PasswordChange -> String
$cshowList :: [PasswordChange] -> ShowS
showList :: [PasswordChange] -> ShowS
Show, (forall x. PasswordChange -> Rep PasswordChange x)
-> (forall x. Rep PasswordChange x -> PasswordChange)
-> Generic PasswordChange
forall x. Rep PasswordChange x -> PasswordChange
forall x. PasswordChange -> Rep PasswordChange x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PasswordChange -> Rep PasswordChange x
from :: forall x. PasswordChange -> Rep PasswordChange x
$cto :: forall x. Rep PasswordChange x -> PasswordChange
to :: forall x. Rep PasswordChange x -> PasswordChange
Generic)
  deriving (Gen PasswordChange
Gen PasswordChange
-> (PasswordChange -> [PasswordChange]) -> Arbitrary PasswordChange
PasswordChange -> [PasswordChange]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen PasswordChange
arbitrary :: Gen PasswordChange
$cshrink :: PasswordChange -> [PasswordChange]
shrink :: PasswordChange -> [PasswordChange]
Arbitrary) via (GenericUniform PasswordChange)
  deriving ([PasswordChange] -> Value
[PasswordChange] -> Encoding
PasswordChange -> Value
PasswordChange -> Encoding
(PasswordChange -> Value)
-> (PasswordChange -> Encoding)
-> ([PasswordChange] -> Value)
-> ([PasswordChange] -> Encoding)
-> ToJSON PasswordChange
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: PasswordChange -> Value
toJSON :: PasswordChange -> Value
$ctoEncoding :: PasswordChange -> Encoding
toEncoding :: PasswordChange -> Encoding
$ctoJSONList :: [PasswordChange] -> Value
toJSONList :: [PasswordChange] -> Value
$ctoEncodingList :: [PasswordChange] -> Encoding
toEncodingList :: [PasswordChange] -> Encoding
A.ToJSON, Value -> Parser [PasswordChange]
Value -> Parser PasswordChange
(Value -> Parser PasswordChange)
-> (Value -> Parser [PasswordChange]) -> FromJSON PasswordChange
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser PasswordChange
parseJSON :: Value -> Parser PasswordChange
$cparseJSONList :: Value -> Parser [PasswordChange]
parseJSONList :: Value -> Parser [PasswordChange]
A.FromJSON, Typeable PasswordChange
Typeable PasswordChange =>
(Proxy PasswordChange -> Declare (Definitions Schema) NamedSchema)
-> ToSchema PasswordChange
Proxy PasswordChange -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy PasswordChange -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy PasswordChange -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema PasswordChange

instance ToSchema PasswordChange where
  schema :: ValueSchema NamedSwaggerDoc PasswordChange
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] PasswordChange PasswordChange
-> ValueSchema NamedSwaggerDoc PasswordChange
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"PasswordChange" (SchemaP SwaggerDoc Object [Pair] PasswordChange PasswordChange
 -> ValueSchema NamedSwaggerDoc PasswordChange)
-> SchemaP SwaggerDoc Object [Pair] PasswordChange PasswordChange
-> ValueSchema NamedSwaggerDoc PasswordChange
forall a b. (a -> b) -> a -> b
$
      PlainTextPassword6 -> PlainTextPassword6 -> PasswordChange
PasswordChange
        (PlainTextPassword6 -> PlainTextPassword6 -> PasswordChange)
-> SchemaP
     SwaggerDoc Object [Pair] PasswordChange PlainTextPassword6
-> SchemaP
     SwaggerDoc
     Object
     [Pair]
     PasswordChange
     (PlainTextPassword6 -> PasswordChange)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> PasswordChange -> PlainTextPassword6
oldPassword (PasswordChange -> PlainTextPassword6)
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] PasswordChange PlainTextPassword6
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"old_password" SchemaP
  NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema
        SchemaP
  SwaggerDoc
  Object
  [Pair]
  PasswordChange
  (PlainTextPassword6 -> PasswordChange)
-> SchemaP
     SwaggerDoc Object [Pair] PasswordChange PlainTextPassword6
-> SchemaP SwaggerDoc Object [Pair] PasswordChange PasswordChange
forall a b.
SchemaP SwaggerDoc Object [Pair] PasswordChange (a -> b)
-> SchemaP SwaggerDoc Object [Pair] PasswordChange a
-> SchemaP SwaggerDoc Object [Pair] PasswordChange b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> PasswordChange -> PlainTextPassword6
newPassword (PasswordChange -> PlainTextPassword6)
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] PasswordChange PlainTextPassword6
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP
     NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
-> SchemaP
     SwaggerDoc Object [Pair] PlainTextPassword6 PlainTextPassword6
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"new_password" SchemaP
  NamedSwaggerDoc Value Value PlainTextPassword6 PlainTextPassword6
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema

-- | The payload for updating an email address
newtype EmailUpdate = EmailUpdate {EmailUpdate -> EmailAddress
email :: EmailAddress}
  deriving stock (EmailUpdate -> EmailUpdate -> Bool
(EmailUpdate -> EmailUpdate -> Bool)
-> (EmailUpdate -> EmailUpdate -> Bool) -> Eq EmailUpdate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EmailUpdate -> EmailUpdate -> Bool
== :: EmailUpdate -> EmailUpdate -> Bool
$c/= :: EmailUpdate -> EmailUpdate -> Bool
/= :: EmailUpdate -> EmailUpdate -> Bool
Eq, Int -> EmailUpdate -> ShowS
[EmailUpdate] -> ShowS
EmailUpdate -> String
(Int -> EmailUpdate -> ShowS)
-> (EmailUpdate -> String)
-> ([EmailUpdate] -> ShowS)
-> Show EmailUpdate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EmailUpdate -> ShowS
showsPrec :: Int -> EmailUpdate -> ShowS
$cshow :: EmailUpdate -> String
show :: EmailUpdate -> String
$cshowList :: [EmailUpdate] -> ShowS
showList :: [EmailUpdate] -> ShowS
Show, (forall x. EmailUpdate -> Rep EmailUpdate x)
-> (forall x. Rep EmailUpdate x -> EmailUpdate)
-> Generic EmailUpdate
forall x. Rep EmailUpdate x -> EmailUpdate
forall x. EmailUpdate -> Rep EmailUpdate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. EmailUpdate -> Rep EmailUpdate x
from :: forall x. EmailUpdate -> Rep EmailUpdate x
$cto :: forall x. Rep EmailUpdate x -> EmailUpdate
to :: forall x. Rep EmailUpdate x -> EmailUpdate
Generic)
  deriving newtype (Gen EmailUpdate
Gen EmailUpdate
-> (EmailUpdate -> [EmailUpdate]) -> Arbitrary EmailUpdate
EmailUpdate -> [EmailUpdate]
forall a. Gen a -> (a -> [a]) -> Arbitrary a
$carbitrary :: Gen EmailUpdate
arbitrary :: Gen EmailUpdate
$cshrink :: EmailUpdate -> [EmailUpdate]
shrink :: EmailUpdate -> [EmailUpdate]
Arbitrary)
  deriving ([EmailUpdate] -> Value
[EmailUpdate] -> Encoding
EmailUpdate -> Value
EmailUpdate -> Encoding
(EmailUpdate -> Value)
-> (EmailUpdate -> Encoding)
-> ([EmailUpdate] -> Value)
-> ([EmailUpdate] -> Encoding)
-> ToJSON EmailUpdate
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: EmailUpdate -> Value
toJSON :: EmailUpdate -> Value
$ctoEncoding :: EmailUpdate -> Encoding
toEncoding :: EmailUpdate -> Encoding
$ctoJSONList :: [EmailUpdate] -> Value
toJSONList :: [EmailUpdate] -> Value
$ctoEncodingList :: [EmailUpdate] -> Encoding
toEncodingList :: [EmailUpdate] -> Encoding
A.ToJSON, Value -> Parser [EmailUpdate]
Value -> Parser EmailUpdate
(Value -> Parser EmailUpdate)
-> (Value -> Parser [EmailUpdate]) -> FromJSON EmailUpdate
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser EmailUpdate
parseJSON :: Value -> Parser EmailUpdate
$cparseJSONList :: Value -> Parser [EmailUpdate]
parseJSONList :: Value -> Parser [EmailUpdate]
A.FromJSON, Typeable EmailUpdate
Typeable EmailUpdate =>
(Proxy EmailUpdate -> Declare (Definitions Schema) NamedSchema)
-> ToSchema EmailUpdate
Proxy EmailUpdate -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy EmailUpdate -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy EmailUpdate -> Declare (Definitions Schema) NamedSchema
S.ToSchema) via Schema EmailUpdate

instance ToSchema EmailUpdate where
  schema :: ValueSchema NamedSwaggerDoc EmailUpdate
schema =
    Text
-> SchemaP SwaggerDoc Object [Pair] EmailUpdate EmailUpdate
-> ValueSchema NamedSwaggerDoc EmailUpdate
forall doc doc' a b.
HasObject doc doc' =>
Text
-> SchemaP doc Object [Pair] a b -> SchemaP doc' Value Value a b
object Text
"EmailUpdate" (SchemaP SwaggerDoc Object [Pair] EmailUpdate EmailUpdate
 -> ValueSchema NamedSwaggerDoc EmailUpdate)
-> SchemaP SwaggerDoc Object [Pair] EmailUpdate EmailUpdate
-> ValueSchema NamedSwaggerDoc EmailUpdate
forall a b. (a -> b) -> a -> b
$
      EmailAddress -> EmailUpdate
EmailUpdate
        (EmailAddress -> EmailUpdate)
-> SchemaP SwaggerDoc Object [Pair] EmailUpdate EmailAddress
-> SchemaP SwaggerDoc Object [Pair] EmailUpdate EmailUpdate
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (.email) (EmailUpdate -> EmailAddress)
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] EmailUpdate EmailAddress
forall (p :: * -> * -> *) a a' b.
Profunctor p =>
(a -> a') -> p a' b -> p a b
.= Text
-> SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
-> SchemaP SwaggerDoc Object [Pair] EmailAddress EmailAddress
forall doc' doc a b.
HasField doc' doc =>
Text
-> SchemaP doc' Value Value a b -> SchemaP doc Object [Pair] a b
field Text
"email" SchemaP NamedSwaggerDoc Value Value EmailAddress EmailAddress
forall a. ToSchema a => ValueSchema NamedSwaggerDoc a
schema