defmodule PlausibleWeb.Plugins.API.Controllers.TrackerScriptConfiguration do @moduledoc """ Controller for the Tracker Script Configuration resource under Plugins API """ use PlausibleWeb, :plugins_api_controller operation(:get, summary: "Retrieve Tracker Script Configuration", parameters: [], responses: %{ ok: {"Tracker Script Configuration response", "application/json", Schemas.TrackerScriptConfiguration}, unauthorized: {"Unauthorized", "application/json", Schemas.Unauthorized} } ) @spec get(Plug.Conn.t(), %{}) :: Plug.Conn.t() def get(conn, _params) do site = conn.assigns.authorized_site configuration = PlausibleWeb.Tracker.get_or_create_tracker_script_configuration!(site) conn |> put_view(Views.TrackerScriptConfiguration) |> render("tracker_script_configuration.json", tracker_script_configuration: configuration) end operation(:update, summary: "Update Tracker Script Configuration", request_body: {"Tracker Script Configuration params", "application/json", Schemas.TrackerScriptConfiguration.UpdateRequest}, responses: %{ ok: {"Tracker Script Configuration", "application/json", Schemas.TrackerScriptConfiguration}, unauthorized: {"Unauthorized", "application/json", Schemas.Unauthorized} } ) @spec update(Plug.Conn.t(), map()) :: Plug.Conn.t() def update(conn, %{"tracker_script_configuration" => update_params}) do site = conn.assigns.authorized_site update_params = Map.put(update_params, "site_id", site.id) updated_config = PlausibleWeb.Tracker.update_script_configuration!(site, update_params, :plugins_api) conn |> put_view(Views.TrackerScriptConfiguration) |> render("tracker_script_configuration.json", tracker_script_configuration: updated_config) end end