lib/glific/clients/quest_alliance.ex

defmodule Glific.Clients.QuestAlliance do
  @moduledoc """
  Custom webhook implementation specific to QuestAlliance
  """
  alias Glific.Contacts

  @doc """
  Create a webhook with different signatures, so we can easily implement
  additional functionality as needed
  """
  @spec webhook(String.t(), map()) :: map()
  def webhook("reset_contact_fields", fields) do
    {:ok, _} =
      get_in(fields, ["contact", "id"])
      |> Glific.parse_maybe_integer!()
      |> Contacts.get_contact!()
      |> Contacts.update_contact(%{fields: %{}})

    fields
  end

  def webhook(_, _fields),
    do: %{}
end