{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Data.Connect.Webhooks
( Webhook(..)
, WebhookEvent(..)
) where
import Data.Aeson
import Data.Aeson.Types
import Data.Connect.AesonHelpers
import Data.Connect.OrphanInstances ()
import qualified Data.Text as T
import GHC.Generics
data Webhook = Webhook
{ webhookEvent :: WebhookEvent
, webhookUrl :: T.Text
} deriving (Show, Generic)
instance ToJSON Webhook where
toJSON = genericToJSON baseOptions
{ fieldLabelModifier = stripFieldNamePrefix "webhook"
}
data WebhookEvent
= ConnectAddonDisabled
| ConnectAddonEnabled
| JiraWebhookPostFunction
| JiraIssueCreated
| JiraIssueDeleted
| JiraIssueUpdated
| JiraWorklogUpdated
| JiraVersionCreated
| JiraVersionDeleted
| JiraVersionMerged
| JiraVersionUpdated
| JiraVersionMoved
| JiraVersionReleased
| JiraVersionUnreleased
| JiraProjectCreated
| JiraProjectUpdated
| JiraProjectDeleted
| JiraPluginEnabled
| JiraPluginsUpgraded
| JiraRemoteIssueLinkAggregateClearedEvent
| JiraRemoteWorkflowPostFunction
| JiraUserCreated
| JiraUserDeleted
| JiraUserUpdated
| ConfluenceAttachmentCreated
| ConfluenceAttachmentRemoved
| ConfluenceAttachmentUpdated
| ConfluenceAttachmentViewed
| ConfluenceBlogCreated
| ConfluenceBlogRemoved
| ConfluenceBlogRestored
| ConfluenceBlogTrashed
| ConfluenceBlogUpdated
| ConfluenceBlogViewed
| ConfluenceCacheStatisticsChanged
| ConfluenceCommentCreated
| ConfluenceCommentRemoved
| ConfluenceCommentUpdated
| ConfluenceContentPermissionsUpdated
| ConfluenceLabelAdded
| ConfluenceLabelCreated
| ConfluenceLabelDeleted
| ConfluenceLabelRemoved
| ConfluenceLogin
| ConfluenceLoginFailed
| ConfluenceLogout
| ConfluencePageChildrenReordered
| ConfluencePageCreated
| ConfluencePageMoved
| ConfluencePageRemoved
| ConfluencePageRestored
| ConfluencePageTrashed
| ConfluencePageUpdated
| ConfluencePageViewed
| ConfluenceSearchPerformed
| ConfluenceSpaceCreated
| ConfluenceSpaceLogoUpdated
| ConfluenceSpacePermissionsUpdated
| ConfluenceSpaceRemoved
| ConfluenceSpaceUpdated
| ConfluenceStatusCleared
| ConfluenceStatusCreated
| ConfluenceStatusRemoved
| ConfluenceUserCreated
| ConfluenceUserDeactivated
| ConfluenceUserFollowed
| ConfluenceUserReactivated
| ConfluenceUserRemoved
| ConfluenceGroupCreated
| ConfluenceGroupRemoved
deriving (Show)
instance ToJSON WebhookEvent where
toJSON ConnectAddonDisabled = String "connect_addon_disabled"
toJSON ConnectAddonEnabled = String "connect_addon_enabled"
toJSON JiraWebhookPostFunction = String "jira-webhook-post-function"
toJSON JiraIssueCreated = String "jira:issue_created"
toJSON JiraIssueDeleted = String "jira:issue_deleted"
toJSON JiraIssueUpdated = String "jira:issue_updated"
toJSON JiraWorklogUpdated = String "jira:worklog_updated"
toJSON JiraPluginEnabled = String "plugin_enabled"
toJSON JiraPluginsUpgraded = String "plugins_upgraded"
toJSON JiraVersionCreated = String "jira:version_created"
toJSON JiraVersionDeleted = String "jira:version_deleted"
toJSON JiraVersionMerged = String "jira:version_merged"
toJSON JiraVersionUpdated = String "jira:version_updated"
toJSON JiraVersionMoved = String "jira:version_moved"
toJSON JiraVersionReleased = String "jira:version_released"
toJSON JiraVersionUnreleased = String "jira:version_unreleased"
toJSON JiraProjectCreated = String "jira:project_created"
toJSON JiraProjectUpdated = String "jira:project_updated"
toJSON JiraProjectDeleted = String "jira:project_deleted"
toJSON JiraRemoteIssueLinkAggregateClearedEvent = String "remote_issue_link_aggregate_cleared_event"
toJSON JiraRemoteWorkflowPostFunction = String "remote_workflow_post_function"
toJSON JiraUserCreated = String "user_created"
toJSON JiraUserDeleted = String "user_deleted"
toJSON JiraUserUpdated = String "user_updated"
toJSON ConfluenceAttachmentCreated = "attachment_created"
toJSON ConfluenceAttachmentRemoved = "attachment_removed"
toJSON ConfluenceAttachmentUpdated = "attachment_updated"
toJSON ConfluenceAttachmentViewed = "attachment_viewed"
toJSON ConfluenceBlogCreated = "blog_created"
toJSON ConfluenceBlogRemoved = "blog_removed"
toJSON ConfluenceBlogRestored = "blog_restored"
toJSON ConfluenceBlogTrashed = "blog_trashed"
toJSON ConfluenceBlogUpdated = "blog_updated"
toJSON ConfluenceBlogViewed = "blog_viewed"
toJSON ConfluenceCacheStatisticsChanged = "cache_statistics_changed"
toJSON ConfluenceCommentCreated = "comment_created"
toJSON ConfluenceCommentRemoved = "comment_removed"
toJSON ConfluenceCommentUpdated = "comment_updated"
toJSON ConfluenceContentPermissionsUpdated = "content_permissions_updated"
toJSON ConfluenceLabelAdded = "label_added"
toJSON ConfluenceLabelCreated = "label_created"
toJSON ConfluenceLabelDeleted = "label_deleted"
toJSON ConfluenceLabelRemoved = "label_removed"
toJSON ConfluenceLogin = "login"
toJSON ConfluenceLoginFailed = "login_failed"
toJSON ConfluenceLogout = "logout"
toJSON ConfluencePageChildrenReordered = "page_children_reordered"
toJSON ConfluencePageCreated = "page_created"
toJSON ConfluencePageMoved = "page_moved"
toJSON ConfluencePageRemoved = "page_removed"
toJSON ConfluencePageRestored = "page_restored"
toJSON ConfluencePageTrashed = "page_trashed"
toJSON ConfluencePageUpdated = "page_updated"
toJSON ConfluencePageViewed = "page_viewed"
toJSON ConfluenceSearchPerformed = "search_performed"
toJSON ConfluenceSpaceCreated = "space_created"
toJSON ConfluenceSpaceLogoUpdated = "space_logo_updated"
toJSON ConfluenceSpacePermissionsUpdated = "space_permissions_updated"
toJSON ConfluenceSpaceRemoved = "space_removed"
toJSON ConfluenceSpaceUpdated = "space_updated"
toJSON ConfluenceStatusCleared = "status_cleared"
toJSON ConfluenceStatusCreated = "status_created"
toJSON ConfluenceStatusRemoved = "status_removed"
toJSON ConfluenceUserCreated = "user_created"
toJSON ConfluenceUserDeactivated = "user_deactivated"
toJSON ConfluenceUserFollowed = "user_followed"
toJSON ConfluenceUserReactivated = "user_reactivated"
toJSON ConfluenceUserRemoved = "user_removed"
toJSON ConfluenceGroupCreated = "group_created"
toJSON ConfluenceGroupRemoved = "group_removed"