packages feed

agent-push-kit-0.1.0: lib/AgentPushKit/API/Events.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.Events
-}

{-# 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.Events 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


-- ** Events

-- *** getEvent

-- | @GET \/organizations\/{organizationId}\/events\/{eventId}@
-- 
-- Get one event including metadata
-- 
-- AuthMethod: 'AuthBasicUserOrAgent'
-- 
getEvent
  :: OrganizationId -- ^ "organizationId"
  -> EventId -- ^ "eventId"
  -> AgentPushKitRequest GetEvent MimeNoContent EventDetail MimeJSON
getEvent (OrganizationId organizationId) (EventId eventId) =
  _mkRequest "GET" ["/organizations/",toPath organizationId,"/events/",toPath eventId]
    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicUserOrAgent)

data GetEvent  
-- | @application/json@
instance Produces GetEvent MimeJSON


-- *** listEvents

-- | @GET \/organizations\/{organizationId}\/events@
-- 
-- List a paginated inbox
-- 
-- AuthMethod: 'AuthBasicUserOrAgent'
-- 
listEvents
  :: OrganizationId -- ^ "organizationId"
  -> AgentPushKitRequest ListEvents MimeNoContent EventPage MimeJSON
listEvents (OrganizationId organizationId) =
  _mkRequest "GET" ["/organizations/",toPath organizationId,"/events"]
    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicUserOrAgent)

data ListEvents  
instance HasOptionalParam ListEvents Service2 where
  applyOptionalParam req (Service2 xs) =
    req `addQuery` toQuery ("service", Just xs)
instance HasOptionalParam ListEvents ParamType where
  applyOptionalParam req (ParamType xs) =
    req `addQuery` toQuery ("type", Just xs)
instance HasOptionalParam ListEvents Search where
  applyOptionalParam req (Search xs) =
    req `addQuery` toQuery ("search", Just xs)
instance HasOptionalParam ListEvents Cursor where
  applyOptionalParam req (Cursor xs) =
    req `addQuery` toQuery ("cursor", Just xs)
instance HasOptionalParam ListEvents Limit where
  applyOptionalParam req (Limit xs) =
    req `addQuery` toQuery ("limit", Just xs)
-- | @application/json@
instance Produces ListEvents MimeJSON


-- *** listNotificationTypes

-- | @GET \/organizations\/{organizationId}\/types@
-- 
-- List distinct notification types
-- 
-- AuthMethod: 'AuthBasicUserOrAgent'
-- 
listNotificationTypes
  :: OrganizationId -- ^ "organizationId"
  -> AgentPushKitRequest ListNotificationTypes MimeNoContent [Text] MimeJSON
listNotificationTypes (OrganizationId organizationId) =
  _mkRequest "GET" ["/organizations/",toPath organizationId,"/types"]
    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicUserOrAgent)

data ListNotificationTypes  

-- | /Optional Param/ "serviceId" - Optionally restrict types to one service ID.
instance HasOptionalParam ListNotificationTypes ServiceId where
  applyOptionalParam req (ServiceId xs) =
    req `addQuery` toQuery ("serviceId", Just xs)
-- | @application/json@
instance Produces ListNotificationTypes MimeJSON


-- *** listServices

-- | @GET \/organizations\/{organizationId}\/services@
-- 
-- List services discovered from ingested events
-- 
-- AuthMethod: 'AuthBasicUserOrAgent'
-- 
listServices
  :: OrganizationId -- ^ "organizationId"
  -> AgentPushKitRequest ListServices MimeNoContent [Service] MimeJSON
listServices (OrganizationId organizationId) =
  _mkRequest "GET" ["/organizations/",toPath organizationId,"/services"]
    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicUserOrAgent)

data ListServices  
-- | @application/json@
instance Produces ListServices MimeJSON


-- *** searchEvents

-- | @POST \/organizations\/{organizationId}\/events\/search@
-- 
-- Search events with a validated Boolean filter tree
-- 
-- AuthMethod: 'AuthBasicUserOrAgent'
-- 
searchEvents
  :: (Consumes SearchEvents MimeJSON, MimeRender MimeJSON SearchEventsInput)
  => SearchEventsInput -- ^ "searchEventsInput"
  -> OrganizationId -- ^ "organizationId"
  -> AgentPushKitRequest SearchEvents MimeJSON EventPage MimeJSON
searchEvents searchEventsInput (OrganizationId organizationId) =
  _mkRequest "POST" ["/organizations/",toPath organizationId,"/events/search"]
    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicUserOrAgent)
    `setBodyParam` searchEventsInput

data SearchEvents 
instance HasBodyParam SearchEvents SearchEventsInput 

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

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


-- *** sendEvent

-- | @POST \/events@
-- 
-- Send an event using an application ingestion key
-- 
-- AuthMethod: 'AuthBasicOrganizationApiKey'
-- 
sendEvent
  :: (Consumes SendEvent MimeJSON, MimeRender MimeJSON SendEventInput)
  => SendEventInput -- ^ "sendEventInput"
  -> AgentPushKitRequest SendEvent MimeJSON IngestionResult MimeJSON
sendEvent sendEventInput =
  _mkRequest "POST" ["/events"]
    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicOrganizationApiKey)
    `setBodyParam` sendEventInput

data SendEvent 
instance HasBodyParam SendEvent SendEventInput 

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

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


-- *** sendEventAsUser

-- | @POST \/organizations\/{organizationId}\/events@
-- 
-- Send an event as an authenticated user or agent
-- 
-- AuthMethod: 'AuthBasicUserOrAgent'
-- 
sendEventAsUser
  :: (Consumes SendEventAsUser MimeJSON, MimeRender MimeJSON SendEventInput)
  => SendEventInput -- ^ "sendEventInput"
  -> OrganizationId -- ^ "organizationId"
  -> AgentPushKitRequest SendEventAsUser MimeJSON IngestionResult MimeJSON
sendEventAsUser sendEventInput (OrganizationId organizationId) =
  _mkRequest "POST" ["/organizations/",toPath organizationId,"/events"]
    `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicUserOrAgent)
    `setBodyParam` sendEventInput

data SendEventAsUser 
instance HasBodyParam SendEventAsUser SendEventInput 

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

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