Generate OpenAPI + Scalar API documentation by running clojure -M:ee:doc api-documentation | (ns metabase.cmd.endpoint-dox (:require [clojure.java.io :as io] [clojure.string :as str] [metabase.api.open-api] [metabase.api.routes] [metabase.util.json :as json])) |
(set! *warn-on-reflection* true) | |
See https://github.com/scalar/scalar/blob/main/documentation/configuration.md | (def ^:private scalar-config {:servers [{:url "http://localhost:3000" :description "Localhost"}] :info {:title "Metabase API documentation" :description (slurp (io/resource "openapi/api-intro.md"))}}) |
(defn- openapi-object [] (merge (metabase.api.open-api/root-open-api-object #'metabase.api.routes/routes) scalar-config)) | |
Generates OpenAPI/Scalar documentation and write it to | (defn generate-dox! ([] (generate-dox! "docs/api.html")) ([^String output-file] (printf "Generating OpenAPI+Scalar documentation in %s\n" output-file) (let [index (slurp (io/resource "openapi/index_inline.html.mustache")) [^String before ^String after] (str/split index #"\Q{{json}}\E") openapi-object (openapi-object)] (with-open [w (java.io.FileWriter. output-file)] (.write w before) (json/encode-to openapi-object w {:pretty true}) (.write w after))) (println "Done."))) |