packages feed

cachix-api-1.2: src/Cachix/API/Deploy/V1.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeOperators #-}

module Cachix.API.Deploy.V1 where

import Cachix.API (CachixAuth)
import qualified Cachix.Types.Deploy as Deploy
import qualified Cachix.Types.DeployResponse.V1 as DeployResponse.V1
import qualified Cachix.Types.Deployment as Deployment
import Data.UUID (UUID)
import Protolude
import Servant.API
import Servant.API.Generic

type API = "api" :> "v1" :> ToServantApi DeployAPI

data DeployAPI route = DeployAPI
  { activate :: route :- Activate,
    getDeployment :: route :- GetDeployment
  }
  deriving (Generic)

type Activate =
  CachixAuth
    :> "deploy"
    :> "activate"
    :> ReqBody '[JSON] Deploy.Deploy
    :> Post '[JSON] DeployResponse.V1.DeployResponse

type GetDeployment =
  CachixAuth
    :> "deploy"
    :> "deployment"
    :> Capture "uuid" UUID
    :> Get '[JSON] Deployment.Deployment