{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} module HipChat.Types.Rooms.CreateWebhookRequest where import Data.Aeson import Data.Aeson.Casing import Data.String import Data.Text (Text) import GHC.Generics import Servant.API import HipChat.Types.Common data CreateWebhookRequest = CreateWebhookRequest { createWebhookRequestName :: Maybe Text , createWebhookRequestUrl :: Text , createWebhookRequestPattern :: Maybe Text , createWebhookRequestAuthentication :: Maybe WebhookAuth , createWebhookRequestKey :: Maybe WebhookKey , createWebhookRequestEvent :: RoomEvent } deriving (Generic, Show) newtype WebhookKey = WebhookKey Text deriving (Generic, IsString, Show, ToHttpApiData) instance ToJSON WebhookKey where toJSON = genericToJSON $ aesonDrop 20 camelCase createWebhookRequest :: Text -> RoomEvent -> CreateWebhookRequest createWebhookRequest url = CreateWebhookRequest Nothing url Nothing Nothing Nothing instance ToJSON CreateWebhookRequest where toJSON = genericToJSON $ aesonPrefix snakeCase