Compare commits

...

1 Commits

Author SHA1 Message Date
Cam Saul
ea97f7f7f9 API dox include session token 2025-02-19 09:18:48 -08:00
3 changed files with 37 additions and 18 deletions

View File

@@ -3,6 +3,7 @@
(:require
[clojure.string :as str]
[compojure.core :refer [GET]]
[medley.core :as m]
[metabase.api.open-api :as open-api]
[metabase.api.util.handlers :as handlers]
[ring.middleware.content-type :as content-type]
@@ -28,16 +29,33 @@
(catch Throwable e
(raise e)))))
(defn- json [root-handler host session-token]
(m/deep-merge
(open-api/root-open-api-object root-handler)
{:servers [{:url host
:description "Metabase API"}]
:components {:headers {"X-Metabase-Session"
{:required true
:schema {:type :string
:default session-token}}}}}))
#_:clj-format/ignore
(comment
(json
(metabase.api.macros/ns-handler 'metabase.api.geojson)
"localhost:3000"
"AAA"))
(defn- json-handler
"Given the [[metabase.api.routes/routes]] handler, return a Ring handler that returns `openapi.json`."
[root-handler]
(fn handler*
([_request]
{:status 200
:body (merge
(open-api/root-open-api-object root-handler)
{:servers [{:url ""
:description "Metabase API"}]})})
([request]
(let [session-token (get-in request [:cookies "metabase.SESSION" :value])]
(println "session-token:" session-token) ; NOCOMMIT
(println "(:host request):" (:host request)) ; NOCOMMIT
{:status 200
:body (json root-handler (:host request) session-token)}))
([request respond raise]
(try

View File

@@ -142,7 +142,10 @@
params (concat
(for [param route-params]
(assoc param :in :path))
query-params)
query-params
[{:name "X-Metabase-Session"
:in :header
:$ref "#/components/headers/X-Metabase-Session"}])
ctype (if (get-in form [:metadata :multipart])
"multipart/form-data"
"application/json")

View File

@@ -180,14 +180,16 @@
[:object ::parameter.schema.object]
[:array ::parameter.schema.array]]])
(mr/def ::ref.string
[:re
{:description "string starting with '#/components/'"}
#"^#/components/(?:schemas)|(?:headers)/[^/]+$"])
(mr/def ::parameter.schema.ref
[:merge
::parameter.schema.common
[:map
[:$ref [:re
{:description "string starting with '#/components/schemas/'"}
#"^#/components/schemas/[^/]+$"]]
[:$ref ::ref.string]
[:definitions {:optional true} [:map-of :string [:ref ::parameter.schema]]]]])
(mr/def ::parameter.schema.or
@@ -201,34 +203,29 @@
[:merge
::parameter.schema.common
[:map
[:anyOf [:sequential [:ref ::parameter.schema]]]]]]
[:oneOf
[:merge
::parameter.schema.common
[:map
[:oneOf [:sequential [:ref ::parameter.schema]]]]]]])
(mr/def ::parameter.schema.and
[:merge
::parameter.schema.common
[:map
[:allOf [:sequential [:ref ::parameter.schema]]]]])
(mr/def ::parameter.schema.const
[:merge
::parameter.schema.common
[:map
[:const :any]]])
(mr/def ::parameter.schema.untyped-enum
[:merge
::parameter.schema.common
[:map
[:enum [:sequential :any]]]])
(mr/def ::parameter.schema.empty
@@ -265,8 +262,9 @@
[:name string?]
[:in ::parameter.in]
[:description {:optional true} :string]
[:required :boolean]
[:schema ::parameter.schema]])
[:required {:optional true} :boolean]
[:schema {:optional true} ::parameter.schema]
[:$ref {:optional true} ::ref.string]])
(mr/def ::path-item.request-body
[:map