module Data.TH.API (API(..), APIInput(..), APIOutput(..)) where

import Language.Haskell.TH

import Data.OpenDataTable
import Data.JSON.Schema

data API =
  API
  { apiName      :: String
  , apiInput     :: APIInput
  , apiOutput    :: APIOutput }

data APIInput =
  APIInput
  { apiInputName         :: Name
  , apiInputType         :: Type
  , apiInputOpenDataTable    :: (FilePath, OpenDataTable)
  , apiInputDeclarations :: [Dec] }


data APIOutput =
  APIOutput
  { apiOutputName         :: Name
  , apiOutputType         :: Type
  , apiOutputSchema       :: (FilePath, Schema)
  , apiOutputDeclarations :: [Dec] }