ory-kratos-0.0.7.0: lib/OryKratos/Types/Admin.hs
{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-unused-imports #-}
module OryKratos.Types.Admin
( AdminCreateIdentityBody (..),
AdminCreateIdentityImportCredentialsOidc (..),
AdminCreateIdentityImportCredentialsOidcConfig (..),
AdminCreateIdentityImportCredentialsOidcProvider (..),
AdminCreateIdentityImportCredentialsPassword (..),
AdminCreateIdentityImportCredentialsPasswordConfig (..),
AdminCreateSelfServiceRecoveryLinkBody (..),
AdminIdentityImportCredentials (..),
AdminUpdateIdentityBody (..),
)
where
import Data.Aeson (FromJSON (..), ToJSON (..), Value, genericParseJSON, genericToEncoding, genericToJSON)
import Data.Aeson.Types (Options (..), defaultOptions)
import qualified Data.Char as Char
import Data.Data (Data)
import Data.Function ((&))
import Data.List (stripPrefix)
import qualified Data.Map as Map
import Data.Maybe (fromMaybe)
import Data.Set (Set)
import Data.Swagger (ToSchema, declareNamedSchema)
import qualified Data.Swagger as Swagger
import Data.Text (Text)
import qualified Data.Text as T
import Data.Time
import Data.UUID (UUID)
import GHC.Generics (Generic)
import OryKratos.Types.Helper (removeFieldLabelPrefix)
import OryKratos.Types.Identity (IdentityState)
import OryKratos.Types.Types
( RecoveryAddress,
VerifiableIdentityAddress,
)
data AdminCreateIdentityBody = AdminCreateIdentityBody
{ credentials :: Maybe AdminIdentityImportCredentials,
-- | Store metadata about the user which is only accessible through admin APIs such as `GET /admin/identities/<id>`.
metadata_admin :: Maybe Value,
-- | Store metadata about the identity which the identity itself can see when calling for example the session endpoint. Do not store sensitive information (e.g. credit score) about the identity in this field.
metadata_public :: Maybe Value,
-- | RecoveryAddresses contains all the addresses that can be used to recover an identity. Use this structure to import recovery addresses for an identity. Please keep in mind that the address needs to be represented in the Identity Schema or this field will be overwritten on the next identity update.
recovery_addresses :: Maybe [RecoveryAddress],
-- | SchemaID is the ID of the JSON Schema to be used for validating the identity's traits.
schema_id :: Text,
state :: Maybe IdentityState,
-- | Traits represent an identity's traits. The identity is able to create, modify, and delete traits in a self-service manner. The input will always be validated against the JSON Schema defined in `schema_url`.
traits :: Value,
-- | VerifiableAddresses contains all the addresses that can be verified by the user. Use this structure to import verified addresses for an identity. Please keep in mind that the address needs to be represented in the Identity Schema or this field will be overwritten on the next identity update.
verifiable_addresses :: Maybe [VerifiableIdentityAddress]
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminCreateIdentityBody
instance ToJSON AdminCreateIdentityBody where
toEncoding = genericToEncoding defaultOptions
data AdminCreateIdentityImportCredentialsOidc = AdminCreateIdentityImportCredentialsOidc
{ config :: Maybe AdminCreateIdentityImportCredentialsOidcConfig
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminCreateIdentityImportCredentialsOidc
instance ToJSON AdminCreateIdentityImportCredentialsOidc where
toEncoding = genericToEncoding defaultOptions
data AdminCreateIdentityImportCredentialsOidcConfig = AdminCreateIdentityImportCredentialsOidcConfig
{ config :: Maybe AdminCreateIdentityImportCredentialsPasswordConfig,
-- | A list of OpenID Connect Providers
providers :: Maybe [AdminCreateIdentityImportCredentialsOidcProvider]
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminCreateIdentityImportCredentialsOidcConfig
instance ToJSON AdminCreateIdentityImportCredentialsOidcConfig where
toEncoding = genericToEncoding defaultOptions
data AdminCreateIdentityImportCredentialsOidcProvider = AdminCreateIdentityImportCredentialsOidcProvider
{ -- | The OpenID Connect provider to link the subject to. Usually something like `google` or `github`.
provider :: Text,
-- | The subject (`sub`) of the OpenID Connect connection. Usually the `sub` field of the ID Token.
subject :: Text
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminCreateIdentityImportCredentialsOidcProvider
instance ToJSON AdminCreateIdentityImportCredentialsOidcProvider where
toEncoding = genericToEncoding defaultOptions
data AdminCreateIdentityImportCredentialsPassword = AdminCreateIdentityImportCredentialsPassword
{ config :: Maybe AdminCreateIdentityImportCredentialsPasswordConfig
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminCreateIdentityImportCredentialsPassword
instance ToJSON AdminCreateIdentityImportCredentialsPassword where
toEncoding = genericToEncoding defaultOptions
data AdminCreateIdentityImportCredentialsPasswordConfig = AdminCreateIdentityImportCredentialsPasswordConfig
{ -- | The hashed password in [PHC format]( https://www.ory.sh/docs/kratos/concepts/credentials/username-email-password#hashed-password-format)
hashed_password :: Maybe Text,
-- | The password in plain text if no hash is available.
password :: Maybe Text
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminCreateIdentityImportCredentialsPasswordConfig
instance ToJSON AdminCreateIdentityImportCredentialsPasswordConfig where
toEncoding = genericToEncoding defaultOptions
data AdminCreateSelfServiceRecoveryLinkBody = AdminCreateSelfServiceRecoveryLinkBody
{ -- | Link Expires In The recovery link will expire at that point in time. Defaults to the configuration value of `selfservice.flows.recovery.request_lifespan`.
expires_in :: Maybe Text,
identity_id :: Text
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminCreateSelfServiceRecoveryLinkBody
instance ToJSON AdminCreateSelfServiceRecoveryLinkBody where
toEncoding = genericToEncoding defaultOptions
data AdminIdentityImportCredentials = AdminIdentityImportCredentials
{ oidc :: Maybe AdminCreateIdentityImportCredentialsOidc,
password :: Maybe AdminCreateIdentityImportCredentialsPassword
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminIdentityImportCredentials
instance ToJSON AdminIdentityImportCredentials where
toEncoding = genericToEncoding defaultOptions
data AdminUpdateIdentityBody = AdminUpdateIdentityBody
{ -- | Store metadata about the user which is only accessible through admin APIs such as `GET /admin/identities/<id>`.
metadata_admin :: Maybe Value,
-- | Store metadata about the identity which the identity itself can see when calling for example the session endpoint. Do not store sensitive information (e.g. credit score) about the identity in this field.
metadata_public :: Maybe Value,
-- | SchemaID is the ID of the JSON Schema to be used for validating the identity's traits. If set will update the Identity's SchemaID.
schema_id :: Text,
state :: IdentityState,
-- | Traits represent an identity's traits. The identity is able to create, modify, and delete traits in a self-service manner. The input will always be validated against the JSON Schema defined in `schema_id`.
traits :: Value
}
deriving stock (Show, Eq, Generic, Data)
instance FromJSON AdminUpdateIdentityBody
instance ToJSON AdminUpdateIdentityBody where
toEncoding = genericToEncoding defaultOptions