packages feed

agent-push-kit-0.1.0: lib/AgentPushKit/API/Authentication.hs

{-
   Agent Push Kit API

   The complete Agent Push Kit REST API. Application event ingestion uses an organization key beginning with `apk_`. Authenticated user operations accept either an Agent Push Kit login JWT or an agent access token beginning with `apt_`.

   OpenAPI Version: 3.1.0
   Agent Push Kit API API version: 0.1.0
   Generated by OpenAPI Generator (https://openapi-generator.tech)
-}

{-|
Module : AgentPushKit.API.Authentication
-}

{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}

module AgentPushKit.API.Authentication where

import AgentPushKit.Core
import AgentPushKit.MimeTypes
import AgentPushKit.Model as M

import qualified Data.Aeson as A
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
import qualified Data.Foldable as P
import qualified Data.Map as Map
import qualified Data.Maybe as P
import qualified Data.Proxy as P (Proxy(..))
import qualified Data.Set as Set
import qualified Data.String as P
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.Encoding as TL
import qualified Data.Time as TI
import qualified Network.HTTP.Client.MultipartFormData as NH
import qualified Network.HTTP.Media as ME
import qualified Network.HTTP.Types as NH
import qualified Web.FormUrlEncoded as WH
import qualified Web.HttpApiData as WH

import Data.Text (Text)
import GHC.Base ((<|>))

import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
import qualified Prelude as P

-- * Operations


-- ** Authentication

-- *** completePasswordReset

-- | @POST \/auth\/password-reset\/complete@
-- 
-- Choose a new password and log in
-- 
completePasswordReset
  :: (Consumes CompletePasswordReset MimeJSON, MimeRender MimeJSON PasswordResetCompleteInput)
  => PasswordResetCompleteInput -- ^ "passwordResetCompleteInput"
  -> AgentPushKitRequest CompletePasswordReset MimeJSON AuthResponse MimeJSON
completePasswordReset passwordResetCompleteInput =
  _mkRequest "POST" ["/auth/password-reset/complete"]
    `setBodyParam` passwordResetCompleteInput

data CompletePasswordReset 
instance HasBodyParam CompletePasswordReset PasswordResetCompleteInput 

-- | @application/json@
instance Consumes CompletePasswordReset MimeJSON

-- | @application/json@
instance Produces CompletePasswordReset MimeJSON


-- *** loginWithApple

-- | @POST \/auth\/apple@
-- 
-- Log in or attach an account using a Sign in with Apple identity token
-- 
loginWithApple
  :: (Consumes LoginWithApple MimeJSON, MimeRender MimeJSON ProviderLoginInput)
  => ProviderLoginInput -- ^ "providerLoginInput"
  -> AgentPushKitRequest LoginWithApple MimeJSON AuthResponse MimeJSON
loginWithApple providerLoginInput =
  _mkRequest "POST" ["/auth/apple"]
    `setBodyParam` providerLoginInput

data LoginWithApple 
instance HasBodyParam LoginWithApple ProviderLoginInput 

-- | @application/json@
instance Consumes LoginWithApple MimeJSON

-- | @application/json@
instance Produces LoginWithApple MimeJSON


-- *** loginWithGoogle

-- | @POST \/auth\/google@
-- 
-- Log in or attach an account using a verified Google ID token
-- 
loginWithGoogle
  :: (Consumes LoginWithGoogle MimeJSON, MimeRender MimeJSON ProviderLoginInput)
  => ProviderLoginInput -- ^ "providerLoginInput"
  -> AgentPushKitRequest LoginWithGoogle MimeJSON AuthResponse MimeJSON
loginWithGoogle providerLoginInput =
  _mkRequest "POST" ["/auth/google"]
    `setBodyParam` providerLoginInput

data LoginWithGoogle 
instance HasBodyParam LoginWithGoogle ProviderLoginInput 

-- | @application/json@
instance Consumes LoginWithGoogle MimeJSON

-- | @application/json@
instance Produces LoginWithGoogle MimeJSON


-- *** loginWithPassword

-- | @POST \/auth\/login@
-- 
-- Log in with email and password
-- 
loginWithPassword
  :: (Consumes LoginWithPassword MimeJSON, MimeRender MimeJSON PasswordLoginInput)
  => PasswordLoginInput -- ^ "passwordLoginInput"
  -> AgentPushKitRequest LoginWithPassword MimeJSON AuthResponse MimeJSON
loginWithPassword passwordLoginInput =
  _mkRequest "POST" ["/auth/login"]
    `setBodyParam` passwordLoginInput

data LoginWithPassword 
instance HasBodyParam LoginWithPassword PasswordLoginInput 

-- | @application/json@
instance Consumes LoginWithPassword MimeJSON

-- | @application/json@
instance Produces LoginWithPassword MimeJSON


-- *** register

-- | @POST \/auth\/register@
-- 
-- Create a user and first customer account
-- 
register
  :: (Consumes Register MimeJSON, MimeRender MimeJSON RegisterInput)
  => RegisterInput -- ^ "registerInput"
  -> AgentPushKitRequest Register MimeJSON AuthResponse MimeJSON
register registerInput =
  _mkRequest "POST" ["/auth/register"]
    `setBodyParam` registerInput

data Register 
instance HasBodyParam Register RegisterInput 

-- | @application/json@
instance Consumes Register MimeJSON

-- | @application/json@
instance Produces Register MimeJSON


-- *** requestPasswordReset

-- | @POST \/auth\/password-reset\/request@
-- 
-- Email a single-use password reset token
-- 
requestPasswordReset
  :: (Consumes RequestPasswordReset MimeJSON, MimeRender MimeJSON PasswordResetRequestInput)
  => PasswordResetRequestInput -- ^ "passwordResetRequestInput"
  -> AgentPushKitRequest RequestPasswordReset MimeJSON AcceptedResponse MimeJSON
requestPasswordReset passwordResetRequestInput =
  _mkRequest "POST" ["/auth/password-reset/request"]
    `setBodyParam` passwordResetRequestInput

data RequestPasswordReset 
instance HasBodyParam RequestPasswordReset PasswordResetRequestInput 

-- | @application/json@
instance Consumes RequestPasswordReset MimeJSON

-- | @application/json@
instance Produces RequestPasswordReset MimeJSON