I'm using this v1 call that I think will give you what you are looking for "IF" you are using VPN Hubs and "IF" all you need is network Name with Public IP for each WAN link.
vpnstatuses = dashboard.appliance.getOrganizationApplianceVpnStatuses(organization_id, total_pages='all')
It pulls my whole org in a few seconds, and has the Network Name and Uplink IP addresses. A lot faster than iterating through with a call for each network.
You still need to do a loop for the elements but Network Name, and Public IP are part of the base data set. Example data of one item (IP info at bottom under uplinks:
{'deviceSerial': 'Q2PN-XXX-XXXX',
'deviceStatus': 'online',
'exportedSubnets': [{'name': 'Office', 'subnet': '10.23.0.0/24'},
{'name': 'DMZ', 'subnet': '10.23.1.0/24'},
{'name': 'Wireless', 'subnet': '10.23.2.0/24'}],
'merakiVpnPeers': [{'networkId': 'N_***************',
'networkName': 'Hub Network Name 1*****',
'reachability': 'reachable'},
{'networkId': 'N_****************',
'networkName': 'Hub Network Name 2',
'reachability': 'reachable'},
{'networkId': 'N_***************',
'networkName': 'Hub Network Name 3',
'reachability': 'reachable'}],
'networkId': 'N_********************',
'networkName': 'This Network Name ***',
'thirdPartyVpnPeers': [],
'uplinks': [{'interface': 'wan1', 'publicIp': '198.167.###.###'},
{'interface': 'wan2', 'publicIp': '67.###.###.###'}],
'vpnMode': 'spoke'}
Sounds like a similar v0 report I run that includes IP's for each WAN link and Cell connections. Its slow, but works, just haven't gotten around to updating it. I'll look to see if I can convert it to v1 today and I'll post an update if it works faster than the v0 report. That report has the following data elements:
Network,Device,Serial,MAC,Model,WAN1 Status,WAN1 IP,WAN1 Gateway,WAN1 Public IP,WAN1 DNS,WAN1 Static,WAN2 Status,WAN2 IP,WAN2 Gateway,WAN2 Public IP,WAN2 DNS,WAN2 Static,Cellular Status,Cellular IP,Cellular Provider,Cellular Public IP,Cellular Model,Cellular Connection,Performance