Radio1 (2.4GHz), Radio2 (5GHz), Radio3 (6GHz) if present. Type other. No physical management port created as separate interface; management comes from getDeviceManagementInterface.
MS (Switch)
getDeviceSwitchPorts
Port{portId}. Type from linkNegotiationCapabilities (10g/5g/2.5g/1g/100M, SFP vs copper). Mode: trunk→tagged, else access. meraki_serial, meraki_port_id. Stack ports → type other.
MX (Appliance)
getNetworkAppliancePorts
Physical Port{number}; type from model-based mapping (MX_PORT_MAPPINGS). VLAN interfaces: VLAN{vlan_id}, type virtual. Single LAN: one "LAN" interface when vlansEnabled=false.
All
getDeviceManagementInterface
Management interfaces by name from API; type from model (MR: MR_MGMT_PORT_TYPES, MS: 1000base-t, MX: 1000base-t). enabled = (wanEnabled == "enabled"). Static IPs created for management interfaces; primary IPs set from these (inactive stack members skipped).
From getNetworkSwitchLinkAggregations. "LAG {id}" (single-device) or "Stack LAG {id}" (cross-device). Type lag. Cross-device LAGs assigned to active stack member. Member ports linked to LAG.
Built from getOrganizationConfigTemplates. Site is linked to SiteGroup when its first network has configTemplateId. meraki_template_metadata stores full template API response.
Rate limiting: Meraki SDK with wait_on_rate_limit=True, maximum_retries=4.
Device filtering: Only productType in wireless, switch, appliance; devices filtered by allowed networks (networkId in allowed list).
Primary IP: Set from management interface static IPs; first IPv4 and first IPv6 by interface name (non–link-local). Inactive stack members do not get primary IP.
Prefixes: Derived from all interface IP addresses; single-host (/32, /128) excluded.
Single LAN: When appliance network has vlansEnabled=false, Single LAN config used; one "LAN" interface and one IP created.