packages feed

hercules-ci-api-agent-0.4.6.1: src/Hercules/API/Agent/Tasks.hs

{-# LANGUAGE DataKinds #-}

module Hercules.API.Agent.Tasks where

import Data.Aeson (Object)
import Hercules.API.Prelude
import qualified Hercules.API.Task as Task
import Hercules.API.TaskStatus
import Servant.API

data TasksAPI auth f = TasksAPI
  { tasksReady ::
      f
        :- "tasks"
          :> auth
          :> Post '[JSON] (Maybe (Task.Task Task.Any)),
    tasksSetStatus ::
      f
        :- "tasks"
          :> Capture "taskId" (Id (Task.Task Task.Any))
          :> ReqBody '[JSON] TaskStatus
          :> auth
          :> Post '[JSON] NoContent,
    postLog ::
      f
        :- "tasks"
          :> "log"
          :> ReqBody '[JSON] [Object]
          :> auth
          :> Post '[JSON] NoContent
  }
  deriving (Generic)