Customize panel time range on visualizations on a dashboard via app state, global state or another way by URL

I have a dashboard with visualizations. When I click on a visualization's options and select Customize time range, selecting a range updates the key dashboardStateManagerPanels in the browser's Sessions storage, to show the new time range for that visualization (panel).

The panels field that has the visualizations is below the filters field, which can use the appState to store parameters that can be sent from the URL as query parameters in Rison format.
Can the timeRange for the individual visualizations be set dynamically from the URL as well, the same way that the filters are set in a non persistent way? If I transform the JSON of the panels from dashboardStateManagerPanels to Rison, and send it in &_a=, I get a dashboard without visualizations with the message This dashboard is empty. Let’s fill it up!

If I set an individual custom time range on visualization, and then share a Snapshot instead of Saved object link, the visualization ID with its time range is visible in the URL. Every visualization is in the panels parameter, and it has its own embeddableConfig:

(embeddableConfig:(enhancements:(),timeRange:(from:now-1y,to:now)),gridData:(h:15,i:e0430401-6289-49d4-8857-3582fea44cde,w:24,x:0,y:0),id:e6204d90-87d8-11ed-ad56-afaefd1d01cf,panelIndex:e0430401-6289-49d4-8857-3582fea44cde,type:visualization,version:'7.15.2')

The custom time range is in timeRange:(from:now-1y,to:now). The URL can be generated dynamically, with custom time ranges for specific visualizations.