packages feed

hercules-ci-api-0.6.0.0: src/Hercules/API/Effects.hs

{-# LANGUAGE DataKinds #-}

module Hercules.API.Effects where

import Hercules.API.Attribute
import Hercules.API.Build.Log (Log)
import Hercules.API.Effects.EffectInfo
import Hercules.API.Prelude
import Hercules.API.Projects.Job (Job)
import Servant.API (Capture, Get, JSON, NoContent, Optional, Post, QueryParam', Required, Summary, (:>))
import Servant.API.Generic (GenericMode ((:-)))

data EffectsAPI auth f = EffectsAPI
  { getEffect ::
      f :- Summary "Read effect events"
        :> "jobs"
        :> Capture "jobId" (Id Job)
        :> "effects"
        :> Capture "attribute" AttributePath
        :> auth
        :> Get '[JSON] EffectInfo,
    getEffectLog ::
      f :- Summary "Read all recorded log entries"
        :> "jobs"
        :> Capture "jobId" (Id Job)
        :> "effects"
        :> Capture "attribute" AttributePath
        :> "log"
        :> "lines"
        :> QueryParam' '[Required] "logId" (Id "log")
        :> QueryParam' '[Optional] "iMin" Int
        :> auth
        :> Get '[JSON] Log,
    cancelEffect ::
      f :- Summary "Cancel the effect. It will cause the Job to have a failed status."
        :> "jobs"
        :> Capture "jobId" (Id Job)
        :> "effects"
        :> Capture "attribute" AttributePath
        :> "cancel"
        :> auth
        :> Post '[JSON] NoContent
  }
  deriving (Generic)