API routes that are only available when running Metabase® Enterprise Edition™. Even tho these routes are available, not all routes might work unless we have a valid premium features token to enable those features. These routes should generally live under prefixes like | (ns metabase-enterprise.api.routes (:require [metabase-enterprise.advanced-config.api.logs] [metabase-enterprise.advanced-permissions.api.routes] [metabase-enterprise.api.routes.common :as ee.api.common] [metabase-enterprise.audit-app.api.routes] [metabase-enterprise.billing.api.routes] [metabase-enterprise.content-verification.api.routes] [metabase-enterprise.llm.api] [metabase-enterprise.query-reference-validation.api] [metabase-enterprise.sandbox.api.routes] [metabase-enterprise.scim.routes] [metabase-enterprise.serialization.api] [metabase-enterprise.stale.routes] [metabase-enterprise.upload-management.api] [metabase.api.macros :as api.macros] [metabase.api.util.handlers :as handlers] [metabase.util.i18n :refer [deferred-tru]])) |
(comment metabase-enterprise.advanced-config.api.logs/keep-me
metabase-enterprise.llm.api/keep-me) | |
(def ^:private required-feature->message
{:advanced-permissions (deferred-tru "Advanced Permissions")
:audit-app (deferred-tru "Audit app")
:collection-cleanup (deferred-tru "Collection Cleanup")
:llm-autodescription (deferred-tru "LLM Auto-description")
:query-reference-validation (deferred-tru "Query Reference Validation")
:scim (deferred-tru "SCIM configuration")
:serialization (deferred-tru "Serialization")
:upload-management (deferred-tru "Upload Management")}) | |
(defn- premium-handler [handler required-feature]
(let [handler (cond-> handler
(simple-symbol? handler) api.macros/ns-handler)]
(->> handler
(ee.api.common/+require-premium-feature required-feature (required-feature->message required-feature))))) | |
The following routes are NAUGHTY and do not follow the naming convention (i.e., they do not start with
TODO -- Please fix them! See #22687 | (def ^:private naughty-routes-map
{"/moderation-review" metabase-enterprise.content-verification.api.routes/routes
"/mt" metabase-enterprise.sandbox.api.routes/sandbox-routes
"/table" metabase-enterprise.sandbox.api.routes/sandbox-table-routes}) |
/api/ee routes. The following routes are NICE and do follow the ↓↓↓ KEEP THIS SORTED OR ELSE! ↓↓↓ | (def ^:private ee-routes-map
{"/advanced-permissions" (premium-handler metabase-enterprise.advanced-permissions.api.routes/routes :advanced-permissions)
"/audit-app" (premium-handler metabase-enterprise.audit-app.api.routes/routes :audit-app)
"/autodescribe" (premium-handler 'metabase-enterprise.llm.api :llm-autodescription)
"/billing" metabase-enterprise.billing.api.routes/routes
"/logs" (premium-handler 'metabase-enterprise.advanced-config.api.logs :audit-app)
"/query-reference-validation" (premium-handler metabase-enterprise.query-reference-validation.api/routes :query-reference-validation)
"/scim" (premium-handler metabase-enterprise.scim.routes/routes :scim)
"/serialization" (premium-handler metabase-enterprise.serialization.api/routes :serialization)
"/stale" (premium-handler metabase-enterprise.stale.routes/routes :collection-cleanup)
"/upload-management" (premium-handler metabase-enterprise.upload-management.api/routes :upload-management)}) |
↑↑↑ KEEP THIS SORTED OR ELSE ↑↑↑ | |
(def ^:private routes-map
(merge
naughty-routes-map
{"/ee" ee-routes-map})) | |
API routes only available when running Metabase® Enterprise Edition™. Almost all of these start with `/api/ee, but a handful of naughty routes (see [[naughty-routes-map]]) do not follow this convention. | (def ^{:arglists '([request respond raise])} routes
(handlers/route-map-handler routes-map)) |