Implementing optional path prefixes with Phoenix.Router

The Phoenix project under discussion currently has the following routing configuration:

defmodule ProjectWeb.Router do
  use ProjectWeb, :router

  pipeline :api do
    plug :accepts, ["json"]
  end

  scope "/api", ProjectWeb.Api do
    pipe_through :api

    scope "/v1", V1 do
      get "/info", System.InfoController, :show
    end
  end
end

This setup effectively manages GET requests at /api/v1/info.

My current task is to introduce an optional path prefix, /tenant/:tenant_id. If this is included, the value should be added to Plug.Conn with the tenant_id key. And then, a GET request at /tenant/ABC/api/v1/info should be treated identically to a GET request at /api/v1/info.

Given the number of routes in this project, creating duplicates for each route - with and without the optional prefix - is far from ideal.

My current thinking is that the Plug.Router.forward/2 macro could be useful here, but I’m unclear about its proper usage within a Phoenix project. Can anyone share insights or examples of how this could be implemented?