defmodule PlausibleWeb.Api.ExternalQueryApiController do @moduledoc false use PlausibleWeb, :controller use Plausible.Repo use PlausibleWeb.Plugs.ErrorHandler alias Plausible.Stats.{Query, QueryError} def query(conn, params) do site = Repo.preload(conn.assigns.site, :owners) case Query.parse_and_build(site, params, debug_metadata: debug_metadata(conn), now: conn.private[:now] ) do {:ok, query} -> results = Plausible.Stats.query(site, query) json(conn, results) {:error, %QueryError{message: message}} -> conn |> put_status(400) |> json(%{error: message}) end end def schema(conn, _params) do json(conn, Plausible.Stats.JSONSchema.raw_schema()) end end