diff --git a/hledger-web/Hledger/Web/Handler/MiscR.hs b/hledger-web/Hledger/Web/Handler/MiscR.hs index 60c9ffa0c..aebee17b4 100644 --- a/hledger-web/Hledger/Web/Handler/MiscR.hs +++ b/hledger-web/Hledger/Web/Handler/MiscR.hs @@ -19,10 +19,14 @@ module Hledger.Web.Handler.MiscR , getManageR , getRobotsR , getRootR + , getOpenApiR ) where import qualified Data.Map as M import qualified Data.Text as T +import qualified Data.Yaml as Yaml +import qualified Data.ByteString as BS +import Data.FileEmbed (embedFile) import Yesod.Default.Handlers (getFaviconR, getRobotsR) import Hledger @@ -107,3 +111,13 @@ getAccounttransactionsR a = do styleAmounts (journalCommodityStylesWith HardRounding j) $ accountTransactionsReport rspec{_rsQuery=Any} j thisacctq +openApiYaml :: BS.ByteString +openApiYaml = $(embedFile "config/openapi.yaml") + +getOpenApiR :: Handler Value +getOpenApiR = + case Yaml.decodeEither' openApiYaml of + Left _ -> notFound + Right openapi -> do + addHeader "Content-Type" "application/json" + return openapi diff --git a/hledger-web/config/routes b/hledger-web/config/routes index 5640e409c..c0eeb1d46 100644 --- a/hledger-web/config/routes +++ b/hledger-web/config/routes @@ -2,6 +2,8 @@ /robots.txt RobotsR GET /static StaticR Static getStatic +/openapi.json OpenApiR GET + / RootR GET /journal JournalR GET /register RegisterR GET diff --git a/hledger-web/hledger-web.cabal b/hledger-web/hledger-web.cabal index 58dffe12a..39e71f50a 100644 --- a/hledger-web/hledger-web.cabal +++ b/hledger-web/hledger-web.cabal @@ -176,6 +176,7 @@ library , data-default , directory >=1.2.3.0 , extra >=1.7.11 + , file-embed >=0.0.16.0 , filepath , githash >=0.1.6.2 , hjsmin diff --git a/hledger-web/package.yaml b/hledger-web/package.yaml index b6eef4659..442321eb0 100644 --- a/hledger-web/package.yaml +++ b/hledger-web/package.yaml @@ -123,6 +123,7 @@ library: - Decimal >=0.5.1 - directory >=1.2.3.0 - extra >=1.7.11 + - file-embed >=0.0.16.0 - filepath - githash >=0.1.6.2 - hjsmin