Hi,
Solved! Go to solution.
as I have explained:
retrieve one device of each type and substract the EID from each URL. If this will be an Access point - the EID will be valid for wireless.
The only problem as I see here is a combined network with no devices.
The way I am doing it:
Fetch all orgs with endpoint: https://api.meraki.com/api/v1/organizations
Parse all orgs and fetch all networks with: https://api.meraki.com/api/v1/organizations/{organizationId}/networks
On the other hand - X-Cisco-Meraki-API-Key is the API key of a particular dashboard user, therefore please make sure that your user has access to all your organizations that you need to see.
Thanks for your answer.
But, the /organizations/{orgId}/networks don't return the eid like this URL https://api.meraki.com/manage/organization/administered_orgs ...
the Organization endpoint returns the URL to the organization
the Networks endpoint returns the URL to the network, where the YYYYYYY is the EID
{'enrollmentString': None,
'id': 'N_6xxxxxxxxxxxxxxxxxx0',
'name': 'MY NETWORK NAME',
'notes': '',
'organizationId': '6xxxxxxxxxxxxxxxxxx0',
'productTypes': ['appliance'],
'tags': ['mytag'],
'timeZone': 'Europe/Bucharest',
'url': 'https://nXXX.meraki.com/MY NETWORK NAME/n/YYYYYYY/manage/usage/list'},
I don't think so.
Each organization and network should only have one ID and one EID.
For the automation purposes ID is used. If you want to build the links to the networks/devices then you can substract the EID from the URL of the organization or URL of the network as I have explained above.
But of course, if you say that this does not work for you, I don't know another way...
@RomanMD thanks for your answer.
For example, for one network, the endpoint https://api.meraki.com/manage/organization/administered_orgs return three eid : one for appliance, one for switch and one for wireless.
And, to use deep links i need the eid of appliance (for example) and not the "global" ID of the network (that is called the locale_id)
and what is the problem to list one device and substract eid from the URL?
{'address': '',
'firmware': 'wired-14-53',
'url': 'https://n333.meraki.com/NetworkName/n/xxxxxdbd/manage/nodes/new_list/57239045832485'}
{'address': '',
'firmware': 'switch-11-22',
'url': 'https://n333.meraki.com/NetworkName/n/xxxxxcbd/manage/nodes/new_list/457203458394437'}
The problem is that the endpoint organizations/{orgid}/networks/ return only one url.
And, the EID in this url can be the eid of wireless.
An example :
https://api.meraki.com/api/v1/organizations/37125365/networks/L_237283
{
"id": "L_237283",
"organizationId": "37125365",
"name": "LABOTEST",
"productTypes": [
"appliance",
"switch",
"wireless"
],
"timeZone": "Europe/Paris",
"tags": []
],
"enrollmentString": null,
"url": "https://n147.meraki.com/LABOTEST/n/jLYp_l3/manage/usage/list",
"notes": ""
}
And, https://api.meraki.com/manage/organization/administered_orgs
{
"37125365": {
"id": "37125365",
"eid": "daQQac",
"uid": "54321159657987623231",
"org_admin_type": "write",
"name": "OrgNAME",
"num_networks": 1263,
"block_meraki_admins": false,
"licensing_mode": 0,
"node_groups": {
"jLYp_l3": {
"id": "237283",
"n": "LABOTEST - wireless",
"t": "LABOTEST",
"eid": "jLYp_l3",
"locale_id": "237283",
"network_type": "wireless"
},
"dPQA_d8": {
"id": "237397",
"n": "LABOTEST - appliance",
"t": "LABOTEST",
"eid": "dPQA_d8",
"locale_id": "237283",
"network_type": "appliance"
},
"abc_De": {
"id": "237425",
"n": "LABOTEST - switch",
"t": "LABOTEST",
"eid": "abc_De",
"locale_id": "237283",
"network_type": "switch"
}
}
}
}
as I have explained:
retrieve one device of each type and substract the EID from each URL. If this will be an Access point - the EID will be valid for wireless.
The only problem as I see here is a combined network with no devices.
Interesting, the eid isn't needed when you use the public API, so what's the eid give you? What problem does having the eid solve?
This is a private endpoint. Why not use the public ones?
Private endpoints are subject to change anytime, which could totally break your application, so building on public endpoints is the better bet.