I was going through Nick Russo’s course Getting Started with Software Development Using Cisco DevNet at Pluralsight and one thing he went through was interacting with the DNA Center API. Using a call to /intent/api/v1/network-device
, DNA-C will return a JSON object consisting of an array of objects
, or in Python speak, a list of dictionaries
. This looks something like below, snipped for brevity:
{ "response": [ { "memorySize": "3735220224", "family": "Wireless Controller", "type": "Cisco 3504 Wireless LAN Controller", "macAddress": "50:61:bf:57:2f:00", "softwareType": "Cisco Controller", "softwareVersion": "8.8.111.0", "deviceSupportLevel": "Supported", "platformId": "AIR-CT3504-K9", "reachabilityFailureReason": "", "series": "Cisco 3500 Series Wireless LAN Controller", "serialNumber": "FCW2218M0B1", "inventoryStatusDetail": "<status><general code=\"SUCCESS\"/></status>", "hostname": "3504_WLC", "lastUpdateTime": 1596457941780, "errorDescription": null, "interfaceCount": "0", "lastUpdated": "2020-08-03 12:32:21", "lineCardCount": "0", "lineCardId": "", "locationName": null, "managementIpAddress": "10.10.20.51", "reachabilityStatus": "Reachable", "snmpContact": "", "snmpLocation": "", "tagCount": "0", "tunnelUdpPort": "16666", "waasDeviceMode": null, "apManagerInterfaceIp": "", "associatedWlcIp": "", "bootDateTime": "2020-03-12 16:08:21", "collectionStatus": "Managed", "errorCode": null, "roleSource": "AUTO", "upTime": "143 days, 20:24:58.00", "location": null, "role": "ACCESS", "collectionInterval": "Global Default", "instanceTenantId": "5e5a432575161200cc4ac95c", "instanceUuid": "72dc1f0a-e4da-4ec3-a055-822416894dd5", "id": "72dc1f0a-e4da-4ec3-a055-822416894dd5" }, { "memorySize": "NA", "family": "Switches and Hubs", "type": "Cisco Catalyst 9300 Switch", "macAddress": "00:72:78:54:d1:00", "softwareType": "IOS-XE", "softwareVersion": "16.6.4a", "deviceSupportLevel": "Supported", "platformId": "C9300-48U", "reachabilityFailureReason": "", "series": "Cisco Catalyst 9300 Series Switches", "serialNumber": "FCW2214L0VK", "inventoryStatusDetail": "<status><general code=\"SUCCESS\"/></status>", "hostname": "leaf1", "lastUpdateTime": 1596459822923, "errorDescription": null, "interfaceCount": "0", "lastUpdated": "2020-08-03 13:03:42", "lineCardCount": "0", "lineCardId": "", "locationName": null, "managementIpAddress": "10.10.20.81", "reachabilityStatus": "Reachable", "snmpContact": "", "snmpLocation": "", "tagCount": "0", "tunnelUdpPort": null, "waasDeviceMode": null, "apManagerInterfaceIp": "", "associatedWlcIp": "", "bootDateTime": "2020-02-27 15:29:42", "collectionStatus": "Managed", "errorCode": null, "roleSource": "AUTO", "upTime": "157 days, 21:34:16.15", "location": null, "role": "ACCESS", "collectionInterval": "Global Default", "instanceTenantId": "5e5a432575161200cc4ac95c", "instanceUuid": "3dd27ed6-44f9-486d-abaf-a779781431a0", "id": "3dd27ed6-44f9-486d-abaf-a779781431a0" } ], "version": "1.0" }
Nick then had some code to grab the management IP
and ID
of the device:
if get_resp.ok: for device in get_resp.json()["response"]: print(f"ID: {device['id']} IP: {device['managementIpAddress']}")
I had some issues understanding the code so I decided to spend some time here and dive into it. The requests
library is used to make the API call. When using requests
, the response
is going to be byte-encoded and not JSON-encoded. I wrote a few lines of Python to demonstrate this:
print(get_resp) print(type(get_resp)) for line in get_resp: print(line)
This generates the following output:
daniel@devasc:~/DevAsc/nrusso$ python3 test.py <Response [200]> <class 'requests.models.Response'> b'{"response":[{"memorySize":"3735220224","family":"Wireless Controller","type":"Cisco 3504 Wireless LAN Controller","macAddress":' b'"50:61:bf:57:2f:00","softwareType":"Cisco Controller","softwareVersion":"8.8.111.0","deviceSupportLevel":"Supported","platformId' b'":"AIR-CT3504-K9","reachabilityFailureReason":"","series":"Cisco 3500 Series Wireless LAN Controller","serialNumber":"FCW2218M0B' b'1","inventoryStatusDetail":"<status><general code=\\"SUCCESS\\"/></status>","hostname":"3504_WLC","lastUpdateTime":1596501161400,"' b'errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCount":"0","lineCardId":"","locationNam' b'e":null,"managementIpAddress":"10.10.20.51","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":"","tagCount":"0","' b'tunnelUdpPort":"16666","waasDeviceMode":null,"apManagerInterfaceIp":"","associatedWlcIp":"","bootDateTime":"2020-03-12 16:06:41"' b',"collectionStatus":"Managed","errorCode":null,"roleSource":"AUTO","upTime":"144 days, 8:26:01.00","location":null,"role":"ACCES' b'S","collectionInterval":"Global Default","instanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid":"72dc1f0a-e4da-4ec3-a055-8' b'22416894dd5","id":"72dc1f0a-e4da-4ec3-a055-822416894dd5"},{"memorySize":"NA","family":"Switches and Hubs","type":"Cisco Catalyst' b' 9300 Switch","macAddress":"00:72:78:54:d1:00","softwareType":"IOS-XE","softwareVersion":"16.6.4a","deviceSupportLevel":"Support' b'ed","platformId":"C9300-48U","reachabilityFailureReason":"","series":"Cisco Catalyst 9300 Series Switches","serialNumber":"FCW22' b'14L0VK","inventoryStatusDetail":"<status><general code=\\"SUCCESS\\"/></status>","hostname":"leaf1","lastUpdateTime":1596520229779' b',"errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 05:50:29","lineCardCount":"0","lineCardId":"","locationN' b'ame":null,"managementIpAddress":"10.10.20.81","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":"","tagCount":"0"' b',"tunnelUdpPort":null,"waasDeviceMode":null,"apManagerInterfaceIp":"","associatedWlcIp":"","bootDateTime":"2020-02-27 15:29:29",' b'"collectionStatus":"Managed","errorCode":null,"roleSource":"AUTO","upTime":"158 days, 14:21:02.24","location":null,"role":"ACCES' b'S","collectionInterval":"Global Default","instanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid":"3dd27ed6-44f9-486d-abaf-a' b'779781431a0","id":"3dd27ed6-44f9-486d-abaf-a779781431a0"},{"memorySize":"NA","family":"Switches and Hubs","type":"Cisco Catalyst' b' 9300 Switch","macAddress":"50:61:bf:ec:07:80","softwareType":"IOS-XE","softwareVersion":"16.6.4a","deviceSupportLevel":"Support' b'ed","platformId":"C9300-48U","reachabilityFailureReason":"","series":"Cisco Catalyst 9300 Series Switches","serialNumber":"FCW22' b'14L0UZ","inventoryStatusDetail":"<status><general code=\\"SUCCESS\\"/></status>","hostname":"leaf2.abc.inc","lastUpdateTime":15965' b'20361668,"errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 05:52:41","lineCardCount":"0","lineCardId":"","l' b'ocationName":null,"managementIpAddress":"10.10.20.82","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":"","tagCo' b'unt":"0","tunnelUdpPort":null,"waasDeviceMode":null,"apManagerInterfaceIp":"","associatedWlcIp":"","bootDateTime":"2020-02-27 15' b':29:41","collectionStatus":"Managed","errorCode":null,"roleSource":"AUTO","upTime":"158 days, 14:23:56.82","location":null,"role' b'":"ACCESS","collectionInterval":"Global Default","instanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid":"5bc5b967-3f83-419' b'5-891c-788f3e9048f3","id":"5bc5b967-3f83-4195-891c-788f3e9048f3"},{"memorySize":"NA","family":"Switches and Hubs","type":"Cisco ' b'Catalyst38xx stack-able ethernet switch","macAddress":"70:01:b5:5d:1b:00","softwareType":"IOS-XE","softwareVersion":"16.3.5b","d' b'eviceSupportLevel":"Supported","platformId":"WS-C3850-24P-L","reachabilityFailureReason":"","series":"Cisco Catalyst 3850 Series' b' Ethernet Stackable Switch","serialNumber":"FCW2212D05S","inventoryStatusDetail":"<status><general code=\\"SUCCESS\\"/></status>",' b'"hostname":"spine1.abc.inc","lastUpdateTime":1596520396265,"errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-0' b'4 05:53:16","lineCardCount":"0","lineCardId":"","locationName":null,"managementIpAddress":"10.10.20.80","reachabilityStatus":"Re' b'achable","snmpContact":"","snmpLocation":"","tagCount":"0","tunnelUdpPort":null,"waasDeviceMode":null,"apManagerInterfaceIp":"",' b'"associatedWlcIp":"","bootDateTime":"2020-02-12 19:01:16","collectionStatus":"Managed","errorCode":null,"roleSource":"MANUAL","u' b'pTime":"173 days, 10:52:33.63","location":null,"role":"UNKNOWN","collectionInterval":"Global Default","instanceTenantId":"5e5a43' b'2575161200cc4ac95c","instanceUuid":"2f0b7d3b-c9e1-491e-a584-f272b5403719","id":"2f0b7d3b-c9e1-491e-a584-f272b5403719"},{"memoryS' b'ize":"NA","family":"Unified AP","type":"Cisco 1140 Unified Access Point","macAddress":"00:2b:01:00:02:00","softwareType":null,"s' b'oftwareVersion":"8.5.97.162","deviceSupportLevel":"Unsupported","platformId":"AIR-AP1141N-A-K9","reachabilityFailureReason":"NA"' b',"series":"Cisco 1140 Series Unified Access Points","serialNumber":"1140K0001","inventoryStatusDetail":"NA","hostname":"T1-1","l' b'astUpdateTime":1596501161400,"errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCount":"0' b'","lineCardId":"","locationName":null,"managementIpAddress":"10.10.20.241","reachabilityStatus":"Reachable","snmpContact":"","sn' b'mpLocation":"Global/HQ/Floor 17","tagCount":"0","tunnelUdpPort":"16666","waasDeviceMode":null,"apManagerInterfaceIp":"10.10.20.5' b'1","associatedWlcIp":"10.10.20.51","bootDateTime":null,"collectionStatus":"Managed","errorCode":"null","roleSource":"AUTO","upTi' b'me":"138days 03:10:21.330","location":null,"role":"ACCESS","collectionInterval":"NA","instanceTenantId":"5e5a432575161200cc4ac95' b'c","instanceUuid":"8b5fb4b6-2c84-409f-9950-c2d12e06ed17","id":"8b5fb4b6-2c84-409f-9950-c2d12e06ed17"},{"memorySize":"NA","family' b'":"Unified AP","type":"Cisco 1140 Unified Access Point","macAddress":"00:2b:01:00:0b:00","softwareType":null,"softwareVersion":"' b'8.5.97.162","deviceSupportLevel":"Unsupported","platformId":"AIR-AP1141N-A-K9","reachabilityFailureReason":"NA","series":"Cisco ' b'1140 Series Unified Access Points","serialNumber":"1140K0010","inventoryStatusDetail":"NA","hostname":"T1-10","lastUpdateTime":1' b'596501161400,"errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCount":"0","lineCardId":"' b'","locationName":null,"managementIpAddress":"10.10.20.250","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":"def' b'ault-location ","tagCount":"0","tunnelUdpPort":"16666","waasDeviceMode":null,"apManagerInterfaceIp":"10.10.20.51","associatedWlc' b'Ip":"10.10.20.51","bootDateTime":null,"collectionStatus":"Managed","errorCode":"null","roleSource":"AUTO","upTime":"138days 03:0' b'9:04.340","location":null,"role":"ACCESS","collectionInterval":"NA","instanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid"' b':"fe55667c-6de4-4657-b68c-60f17b21d23b","id":"fe55667c-6de4-4657-b68c-60f17b21d23b"},{"memorySize":"NA","family":"Unified AP","t' b'ype":"Cisco 1140 Unified Access Point","macAddress":"00:2b:01:00:03:00","softwareType":null,"softwareVersion":"8.5.97.162","devi' b'ceSupportLevel":"Unsupported","platformId":"AIR-AP1141N-A-K9","reachabilityFailureReason":"NA","series":"Cisco 1140 Series Unifi' b'ed Access Points","serialNumber":"1140K0002","inventoryStatusDetail":"NA","hostname":"T1-2","lastUpdateTime":1596501161400,"erro' b'rDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCount":"0","lineCardId":"","locationName":n' b'ull,"managementIpAddress":"10.10.20.242","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":"Global/HQ/Floor 17","' b'tagCount":"0","tunnelUdpPort":"16666","waasDeviceMode":null,"apManagerInterfaceIp":"10.10.20.51","associatedWlcIp":"10.10.20.51"' b',"bootDateTime":null,"collectionStatus":"Managed","errorCode":"null","roleSource":"AUTO","upTime":"138days 03:10:21.330","locati' b'on":null,"role":"ACCESS","collectionInterval":"NA","instanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid":"d5069e6d-e5f5-4' b'917-b522-1e5d93c66ea0","id":"d5069e6d-e5f5-4917-b522-1e5d93c66ea0"},{"memorySize":"NA","family":"Unified AP","type":"Cisco 1140 ' b'Unified Access Point","macAddress":"00:2b:01:00:04:00","softwareType":null,"softwareVersion":"8.5.97.162","deviceSupportLevel":"' b'Unsupported","platformId":"AIR-AP1141N-A-K9","reachabilityFailureReason":"NA","series":"Cisco 1140 Series Unified Access Points"' b',"serialNumber":"1140K0003","inventoryStatusDetail":"NA","hostname":"T1-3","lastUpdateTime":1596501161400,"errorDescription":nul' b'l,"interfaceCount":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCount":"0","lineCardId":"","locationName":null,"managementIp' b'Address":"10.10.20.243","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":"Global/HQ/Floor 17","tagCount":"0","tu' b'nnelUdpPort":"16666","waasDeviceMode":null,"apManagerInterfaceIp":"10.10.20.51","associatedWlcIp":"10.10.20.51","bootDateTime":n' b'ull,"collectionStatus":"Managed","errorCode":"null","roleSource":"AUTO","upTime":"138days 03:09:13.330","location":null,"role":"' b'ACCESS","collectionInterval":"NA","instanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid":"da13b595-7ed9-4fc8-ba3a-d7b6cbff' b'6dcc","id":"da13b595-7ed9-4fc8-ba3a-d7b6cbff6dcc"},{"memorySize":"NA","family":"Unified AP","type":"Cisco 1140 Unified Access Po' b'int","macAddress":"00:2b:01:00:05:00","softwareType":null,"softwareVersion":"8.5.97.162","deviceSupportLevel":"Unsupported","pla' b'tformId":"AIR-AP1141N-A-K9","reachabilityFailureReason":"NA","series":"Cisco 1140 Series Unified Access Points","serialNumber":"' b'1140K0004","inventoryStatusDetail":"NA","hostname":"T1-4","lastUpdateTime":1596501161400,"errorDescription":null,"interfaceCount' b'":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCount":"0","lineCardId":"","locationName":null,"managementIpAddress":"10.10.2' b'0.244","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":"default-location ","tagCount":"0","tunnelUdpPort":"1666' b'6","waasDeviceMode":null,"apManagerInterfaceIp":"10.10.20.51","associatedWlcIp":"10.10.20.51","bootDateTime":null,"collectionSta' b'tus":"Managed","errorCode":"null","roleSource":"AUTO","upTime":"138days 03:05:05.330","location":null,"role":"ACCESS","collectio' b'nInterval":"NA","instanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid":"f696638c-53fe-4b42-b6c1-a37d8892e736","id":"f69663' b'8c-53fe-4b42-b6c1-a37d8892e736"},{"memorySize":"NA","family":"Unified AP","type":"Cisco 1140 Unified Access Point","macAddress":' b'"00:2b:01:00:06:00","softwareType":null,"softwareVersion":"8.5.97.162","deviceSupportLevel":"Unsupported","platformId":"AIR-AP11' b'41N-A-K9","reachabilityFailureReason":"NA","series":"Cisco 1140 Series Unified Access Points","serialNumber":"1140K0005","invent' b'oryStatusDetail":"NA","hostname":"T1-5","lastUpdateTime":1596501161400,"errorDescription":null,"interfaceCount":"0","lastUpdated' b'":"2020-08-04 00:32:41","lineCardCount":"0","lineCardId":"","locationName":null,"managementIpAddress":"10.10.20.245","reachabili' b'tyStatus":"Reachable","snmpContact":"","snmpLocation":"default-location ","tagCount":"0","tunnelUdpPort":"16666","waasDeviceMode' b'":null,"apManagerInterfaceIp":"10.10.20.51","associatedWlcIp":"10.10.20.51","bootDateTime":null,"collectionStatus":"Managed","er' b'rorCode":"null","roleSource":"AUTO","upTime":"138days 03:05:05.340","location":null,"role":"ACCESS","collectionInterval":"NA","i' b'nstanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid":"75d57d36-dade-40cb-aac3-b2267e7e0180","id":"75d57d36-dade-40cb-aac3-' b'b2267e7e0180"},{"memorySize":"NA","family":"Unified AP","type":"Cisco 1140 Unified Access Point","macAddress":"00:2b:01:00:07:00' b'","softwareType":null,"softwareVersion":"8.5.97.162","deviceSupportLevel":"Unsupported","platformId":"AIR-AP1141N-A-K9","reachab' b'ilityFailureReason":"NA","series":"Cisco 1140 Series Unified Access Points","serialNumber":"1140K0006","inventoryStatusDetail":"' b'NA","hostname":"T1-6","lastUpdateTime":1596501161400,"errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 00:3' b'2:41","lineCardCount":"0","lineCardId":"","locationName":null,"managementIpAddress":"10.10.20.246","reachabilityStatus":"Reachab' b'le","snmpContact":"","snmpLocation":"default-location ","tagCount":"0","tunnelUdpPort":"16666","waasDeviceMode":null,"apManagerI' b'nterfaceIp":"10.10.20.51","associatedWlcIp":"10.10.20.51","bootDateTime":null,"collectionStatus":"Managed","errorCode":"null","r' b'oleSource":"AUTO","upTime":"138days 03:09:03.340","location":null,"role":"ACCESS","collectionInterval":"NA","instanceTenantId":"' b'5e5a432575161200cc4ac95c","instanceUuid":"39cc2101-1a68-455e-a2a7-49d1cfb31835","id":"39cc2101-1a68-455e-a2a7-49d1cfb31835"},{"m' b'emorySize":"NA","family":"Unified AP","type":"Cisco 1140 Unified Access Point","macAddress":"00:2b:01:00:08:00","softwareType":n' b'ull,"softwareVersion":"8.5.97.162","deviceSupportLevel":"Unsupported","platformId":"AIR-AP1141N-A-K9","reachabilityFailureReason' b'":"NA","series":"Cisco 1140 Series Unified Access Points","serialNumber":"1140K0007","inventoryStatusDetail":"NA","hostname":"T1' b'-7","lastUpdateTime":1596501161400,"errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCou' b'nt":"0","lineCardId":"","locationName":null,"managementIpAddress":"10.10.20.247","reachabilityStatus":"Reachable","snmpContact":' b'"","snmpLocation":"default-location ","tagCount":"0","tunnelUdpPort":"16666","waasDeviceMode":null,"apManagerInterfaceIp":"10.10' b'.20.51","associatedWlcIp":"10.10.20.51","bootDateTime":null,"collectionStatus":"Managed","errorCode":"null","roleSource":"AUTO",' b'"upTime":"138days 03:09:03.340","location":null,"role":"ACCESS","collectionInterval":"NA","instanceTenantId":"5e5a432575161200cc' b'4ac95c","instanceUuid":"b2bf41bf-0e2f-4255-85ad-4ca403686b3a","id":"b2bf41bf-0e2f-4255-85ad-4ca403686b3a"},{"memorySize":"NA","f' b'amily":"Unified AP","type":"Cisco 1140 Unified Access Point","macAddress":"00:2b:01:00:09:00","softwareType":null,"softwareVersi' b'on":"8.5.97.162","deviceSupportLevel":"Unsupported","platformId":"AIR-AP1141N-A-K9","reachabilityFailureReason":"NA","series":"C' b'isco 1140 Series Unified Access Points","serialNumber":"1140K0008","inventoryStatusDetail":"NA","hostname":"T1-8","lastUpdateTim' b'e":1596501161400,"errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCount":"0","lineCardI' b'd":"","locationName":null,"managementIpAddress":"10.10.20.248","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":' b'"default-location ","tagCount":"0","tunnelUdpPort":"16666","waasDeviceMode":null,"apManagerInterfaceIp":"10.10.20.51","associate' b'dWlcIp":"10.10.20.51","bootDateTime":null,"collectionStatus":"Managed","errorCode":"null","roleSource":"AUTO","upTime":"138days ' b'03:09:03.340","location":null,"role":"ACCESS","collectionInterval":"NA","instanceTenantId":"5e5a432575161200cc4ac95c","instanceU' b'uid":"bafa2b45-b827-48d5-9022-8c66b5a5b18f","id":"bafa2b45-b827-48d5-9022-8c66b5a5b18f"},{"memorySize":"NA","family":"Unified AP' b'","type":"Cisco 1140 Unified Access Point","macAddress":"00:2b:01:00:0a:00","softwareType":null,"softwareVersion":"8.5.97.162","' b'deviceSupportLevel":"Unsupported","platformId":"AIR-AP1141N-A-K9","reachabilityFailureReason":"NA","series":"Cisco 1140 Series U' b'nified Access Points","serialNumber":"1140K0009","inventoryStatusDetail":"NA","hostname":"T1-9","lastUpdateTime":1596501161400,"' b'errorDescription":null,"interfaceCount":"0","lastUpdated":"2020-08-04 00:32:41","lineCardCount":"0","lineCardId":"","locationNam' b'e":null,"managementIpAddress":"10.10.20.249","reachabilityStatus":"Reachable","snmpContact":"","snmpLocation":"default-location ' b'","tagCount":"0","tunnelUdpPort":"16666","waasDeviceMode":null,"apManagerInterfaceIp":"10.10.20.51","associatedWlcIp":"10.10.20.' b'51","bootDateTime":null,"collectionStatus":"Managed","errorCode":"null","roleSource":"AUTO","upTime":"138days 03:09:03.340","loc' b'ation":null,"role":"ACCESS","collectionInterval":"NA","instanceTenantId":"5e5a432575161200cc4ac95c","instanceUuid":"85daf2da-571' b'a-4570-9ce3-c68867ad891a","id":"85daf2da-571a-4570-9ce3-c68867ad891a"}],"version":"1.0"}'
This doesn’t look very pretty does it? We see that DNA-C returned a 200 OK
and that the class is requests.models.Response
, meaning that it’s a response
. We then iterated over the response
and saw a lot of byte-encoded data. But the data isn’t structured so we want to convert it to JSON. Let’s add a couple more lines of Python and then look again:
get_resp_json = get_resp.json() print(type(get_resp_json)) print(get_resp_json)
This gives the following output:
daniel@devasc:~/DevAsc/nrusso$ python3 test.py <class 'dict'> {'response': [{'memorySize': '3735220224', 'family': 'Wireless Controller', 'type': 'Cisco 3504 Wireless LAN Controller', 'macAddress': '50:61:bf:57:2f:00', 'softwareType': 'Cisco Controller', 'softwareVersion': '8.8.111.0', 'deviceSupportLevel': 'Supported', 'platformId': 'AIR-CT3504-K9', 'reachabilityFailureReason': '', 'series': 'Cisco 3500 Series Wireless LAN Controller', 'serialNumber': 'FCW2218M0B1', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': '3504_WLC', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.51', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-03-12 16:06:41', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'AUTO', 'upTime': '144 days, 8:26:01.00', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '72dc1f0a-e4da-4ec3-a055-822416894dd5', 'id': '72dc1f0a-e4da-4ec3-a055-822416894dd5'}, {'memorySize': 'NA', 'family': 'Switches and Hubs', 'type': 'Cisco Catalyst 9300 Switch', 'macAddress': '00:72:78:54:d1:00', 'softwareType': 'IOS-XE', 'softwareVersion': '16.6.4a', 'deviceSupportLevel': 'Supported', 'platformId': 'C9300-48U', 'reachabilityFailureReason': '', 'series': 'Cisco Catalyst 9300 Series Switches', 'serialNumber': 'FCW2214L0VK', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': 'leaf1', 'lastUpdateTime': 1596520840066, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 06:00:40', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.81', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': None, 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-02-27 15:29:40', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'AUTO', 'upTime': '158 days, 14:31:12.43', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '3dd27ed6-44f9-486d-abaf-a779781431a0', 'id': '3dd27ed6-44f9-486d-abaf-a779781431a0'}, {'memorySize': 'NA', 'family': 'Switches and Hubs', 'type': 'Cisco Catalyst 9300 Switch', 'macAddress': '50:61:bf:ec:07:80', 'softwareType': 'IOS-XE', 'softwareVersion': '16.6.4a', 'deviceSupportLevel': 'Supported', 'platformId': 'C9300-48U', 'reachabilityFailureReason': '', 'series': 'Cisco Catalyst 9300 Series Switches', 'serialNumber': 'FCW2214L0UZ', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': 'leaf2.abc.inc', 'lastUpdateTime': 1596520971947, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 06:02:51', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.82', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': None, 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-02-27 15:28:51', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'AUTO', 'upTime': '158 days, 14:34:06.90', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '5bc5b967-3f83-4195-891c-788f3e9048f3', 'id': '5bc5b967-3f83-4195-891c-788f3e9048f3'}, {'memorySize': 'NA', 'family': 'Switches and Hubs', 'type': 'Cisco Catalyst38xx stack-able ethernet switch', 'macAddress': '70:01:b5:5d:1b:00', 'softwareType': 'IOS-XE', 'softwareVersion': '16.3.5b', 'deviceSupportLevel': 'Supported', 'platformId': 'WS-C3850-24P-L', 'reachabilityFailureReason': '', 'series': 'Cisco Catalyst 3850 Series Ethernet Stackable Switch', 'serialNumber': 'FCW2212D05S', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': 'spine1.abc.inc', 'lastUpdateTime': 1596521006169, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 06:03:26', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.80', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': None, 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-02-12 19:01:26', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'MANUAL', 'upTime': '173 days, 11:02:43.72', 'location': None, 'role': 'UNKNOWN', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '2f0b7d3b-c9e1-491e-a584-f272b5403719', 'id': '2f0b7d3b-c9e1-491e-a584-f272b5403719'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:02:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0001', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-1', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.241', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'Global/HQ/Floor 17', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:10:21.330', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '8b5fb4b6-2c84-409f-9950-c2d12e06ed17', 'id': '8b5fb4b6-2c84-409f-9950-c2d12e06ed17'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:0b:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0010', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-10', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.250', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:04.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'fe55667c-6de4-4657-b68c-60f17b21d23b', 'id': 'fe55667c-6de4-4657-b68c-60f17b21d23b'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:03:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0002', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-2', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.242', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'Global/HQ/Floor 17', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:10:21.330', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'd5069e6d-e5f5-4917-b522-1e5d93c66ea0', 'id': 'd5069e6d-e5f5-4917-b522-1e5d93c66ea0'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:04:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0003', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-3', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.243', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'Global/HQ/Floor 17', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:13.330', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'da13b595-7ed9-4fc8-ba3a-d7b6cbff6dcc', 'id': 'da13b595-7ed9-4fc8-ba3a-d7b6cbff6dcc'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:05:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0004', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-4', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.244', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:05:05.330', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'f696638c-53fe-4b42-b6c1-a37d8892e736', 'id': 'f696638c-53fe-4b42-b6c1-a37d8892e736'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:06:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0005', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-5', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.245', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:05:05.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '75d57d36-dade-40cb-aac3-b2267e7e0180', 'id': '75d57d36-dade-40cb-aac3-b2267e7e0180'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:07:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0006', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-6', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.246', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:03.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '39cc2101-1a68-455e-a2a7-49d1cfb31835', 'id': '39cc2101-1a68-455e-a2a7-49d1cfb31835'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:08:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0007', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-7', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.247', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:03.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'b2bf41bf-0e2f-4255-85ad-4ca403686b3a', 'id': 'b2bf41bf-0e2f-4255-85ad-4ca403686b3a'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:09:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0008', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-8', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.248', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:03.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'bafa2b45-b827-48d5-9022-8c66b5a5b18f', 'id': 'bafa2b45-b827-48d5-9022-8c66b5a5b18f'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:0a:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0009', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-9', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.249', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:03.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '85daf2da-571a-4570-9ce3-c68867ad891a', 'id': '85daf2da-571a-4570-9ce3-c68867ad891a'}], 'version': '1.0'}
Running .json()
in requests
, gave us back a dictionary. There are two keys, response
and version
. The value for response
is a list of dictionaries. To access the key response
, reference it within brackets:
print(get_resp_json["response"]) print(type(get_resp_json["response"]))
This provides the following output:
daniel@devasc:~/DevAsc/nrusso$ python3 test.py [{'memorySize': '3735220224', 'family': 'Wireless Controller', 'type': 'Cisco 3504 Wireless LAN Controller', 'macAddress': '50:61:bf:57:2f:00', 'softwareType': 'Cisco Controller', 'softwareVersion': '8.8.111.0', 'deviceSupportLevel': 'Supported', 'platformId': 'AIR-CT3504-K9', 'reachabilityFailureReason': '', 'series': 'Cisco 3500 Series Wireless LAN Controller', 'serialNumber': 'FCW2218M0B1', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': '3504_WLC', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.51', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-03-12 16:06:41', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'AUTO', 'upTime': '144 days, 8:26:01.00', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '72dc1f0a-e4da-4ec3-a055-822416894dd5', 'id': '72dc1f0a-e4da-4ec3-a055-822416894dd5'}, {'memorySize': 'NA', 'family': 'Switches and Hubs', 'type': 'Cisco Catalyst 9300 Switch', 'macAddress': '00:72:78:54:d1:00', 'softwareType': 'IOS-XE', 'softwareVersion': '16.6.4a', 'deviceSupportLevel': 'Supported', 'platformId': 'C9300-48U', 'reachabilityFailureReason': '', 'series': 'Cisco Catalyst 9300 Series Switches', 'serialNumber': 'FCW2214L0VK', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': 'leaf1', 'lastUpdateTime': 1596522060483, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 06:21:00', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.81', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': None, 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-02-27 15:30:00', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'AUTO', 'upTime': '158 days, 14:51:32.65', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '3dd27ed6-44f9-486d-abaf-a779781431a0', 'id': '3dd27ed6-44f9-486d-abaf-a779781431a0'}, {'memorySize': 'NA', 'family': 'Switches and Hubs', 'type': 'Cisco Catalyst 9300 Switch', 'macAddress': '50:61:bf:ec:07:80', 'softwareType': 'IOS-XE', 'softwareVersion': '16.6.4a', 'deviceSupportLevel': 'Supported', 'platformId': 'C9300-48U', 'reachabilityFailureReason': '', 'series': 'Cisco Catalyst 9300 Series Switches', 'serialNumber': 'FCW2214L0UZ', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': 'leaf2.abc.inc', 'lastUpdateTime': 1596522191572, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 06:23:11', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.82', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': None, 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-02-27 15:29:11', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'AUTO', 'upTime': '158 days, 14:54:27.22', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '5bc5b967-3f83-4195-891c-788f3e9048f3', 'id': '5bc5b967-3f83-4195-891c-788f3e9048f3'}, {'memorySize': 'NA', 'family': 'Switches and Hubs', 'type': 'Cisco Catalyst38xx stack-able ethernet switch', 'macAddress': '70:01:b5:5d:1b:00', 'softwareType': 'IOS-XE', 'softwareVersion': '16.3.5b', 'deviceSupportLevel': 'Supported', 'platformId': 'WS-C3850-24P-L', 'reachabilityFailureReason': '', 'series': 'Cisco Catalyst 3850 Series Ethernet Stackable Switch', 'serialNumber': 'FCW2212D05S', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': 'spine1.abc.inc', 'lastUpdateTime': 1596522226792, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 06:23:46', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.80', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': None, 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-02-12 19:00:46', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'MANUAL', 'upTime': '173 days, 11:23:03.96', 'location': None, 'role': 'UNKNOWN', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '2f0b7d3b-c9e1-491e-a584-f272b5403719', 'id': '2f0b7d3b-c9e1-491e-a584-f272b5403719'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:02:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0001', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-1', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.241', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'Global/HQ/Floor 17', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:10:21.330', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '8b5fb4b6-2c84-409f-9950-c2d12e06ed17', 'id': '8b5fb4b6-2c84-409f-9950-c2d12e06ed17'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:0b:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0010', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-10', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.250', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:04.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'fe55667c-6de4-4657-b68c-60f17b21d23b', 'id': 'fe55667c-6de4-4657-b68c-60f17b21d23b'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:03:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0002', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-2', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.242', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'Global/HQ/Floor 17', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:10:21.330', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'd5069e6d-e5f5-4917-b522-1e5d93c66ea0', 'id': 'd5069e6d-e5f5-4917-b522-1e5d93c66ea0'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:04:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0003', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-3', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.243', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'Global/HQ/Floor 17', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:13.330', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'da13b595-7ed9-4fc8-ba3a-d7b6cbff6dcc', 'id': 'da13b595-7ed9-4fc8-ba3a-d7b6cbff6dcc'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:05:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0004', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-4', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.244', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:05:05.330', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'f696638c-53fe-4b42-b6c1-a37d8892e736', 'id': 'f696638c-53fe-4b42-b6c1-a37d8892e736'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:06:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0005', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-5', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.245', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:05:05.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '75d57d36-dade-40cb-aac3-b2267e7e0180', 'id': '75d57d36-dade-40cb-aac3-b2267e7e0180'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:07:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0006', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-6', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.246', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:03.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '39cc2101-1a68-455e-a2a7-49d1cfb31835', 'id': '39cc2101-1a68-455e-a2a7-49d1cfb31835'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:08:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0007', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-7', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.247', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:03.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'b2bf41bf-0e2f-4255-85ad-4ca403686b3a', 'id': 'b2bf41bf-0e2f-4255-85ad-4ca403686b3a'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:09:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0008', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-8', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.248', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:03.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': 'bafa2b45-b827-48d5-9022-8c66b5a5b18f', 'id': 'bafa2b45-b827-48d5-9022-8c66b5a5b18f'}, {'memorySize': 'NA', 'family': 'Unified AP', 'type': 'Cisco 1140 Unified Access Point', 'macAddress': '00:2b:01:00:0a:00', 'softwareType': None, 'softwareVersion': '8.5.97.162', 'deviceSupportLevel': 'Unsupported', 'platformId': 'AIR-AP1141N-A-K9', 'reachabilityFailureReason': 'NA', 'series': 'Cisco 1140 Series Unified Access Points', 'serialNumber': '1140K0009', 'inventoryStatusDetail': 'NA', 'hostname': 'T1-9', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.249', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': 'default-location ', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '10.10.20.51', 'associatedWlcIp': '10.10.20.51', 'bootDateTime': None, 'collectionStatus': 'Managed', 'errorCode': 'null', 'roleSource': 'AUTO', 'upTime': '138days 03:09:03.340', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'NA', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '85daf2da-571a-4570-9ce3-c68867ad891a', 'id': '85daf2da-571a-4570-9ce3-c68867ad891a'}] <class 'list'>
Notice that this is a list
. To access only the first element in the list, slicing
can be used:
print(get_resp_json["response"][0]) print(type(get_resp_json["response"][0]))
This gives the following output:
daniel@devasc:~/DevAsc/nrusso$ python3 test.py {'memorySize': '3735220224', 'family': 'Wireless Controller', 'type': 'Cisco 3504 Wireless LAN Controller', 'macAddress': '50:61:bf:57:2f:00', 'softwareType': 'Cisco Controller', 'softwareVersion': '8.8.111.0', 'deviceSupportLevel': 'Supported', 'platformId': 'AIR-CT3504-K9', 'reachabilityFailureReason': '', 'series': 'Cisco 3500 Series Wireless LAN Controller', 'serialNumber': 'FCW2218M0B1', 'inventoryStatusDetail': '<status><general code="SUCCESS"/></status>', 'hostname': '3504_WLC', 'lastUpdateTime': 1596501161400, 'errorDescription': None, 'interfaceCount': '0', 'lastUpdated': '2020-08-04 00:32:41', 'lineCardCount': '0', 'lineCardId': '', 'locationName': None, 'managementIpAddress': '10.10.20.51', 'reachabilityStatus': 'Reachable', 'snmpContact': '', 'snmpLocation': '', 'tagCount': '0', 'tunnelUdpPort': '16666', 'waasDeviceMode': None, 'apManagerInterfaceIp': '', 'associatedWlcIp': '', 'bootDateTime': '2020-03-12 16:06:41', 'collectionStatus': 'Managed', 'errorCode': None, 'roleSource': 'AUTO', 'upTime': '144 days, 8:26:01.00', 'location': None, 'role': 'ACCESS', 'collectionInterval': 'Global Default', 'instanceTenantId': '5e5a432575161200cc4ac95c', 'instanceUuid': '72dc1f0a-e4da-4ec3-a055-822416894dd5', 'id': '72dc1f0a-e4da-4ec3-a055-822416894dd5'} <class 'dict'>
Notice that this is a dictionary
and that we returned the first dictionary
from the list
.
Now, let’s go back to Nick’s code and explain what is going on:
if get_resp.ok: for device in get_resp.json()["response"]: print(f"ID: {device['id']} IP: {device['managementIpAddress']}")
The first line checks that get_resp
is ok
, meaning that the status code is not in the 400 range. The next line iterates
(loops) over the JSON version of the response from DNA-C. The key response
is accessed, which if you remember, the value
of response
consists of a list of dictionaries. The code is going through each list entry, which is actually a dictionary. Finally, the ID
and management IP
of the device is printed. The variable device
is used to reference each dictionary. Note that id
and managementIpAddress
are keys in this dictionary.
This is all a lot to take in! Which is why I wrote the post! So let’s break down and summarize what we learned:
- The Python
requests
library was used to call the DNA-C API - A
response
was provided, which was byte-encoded by default - The
response
was converted to JSON format- This was an
object
consisting of anarray of objects
- A
dictionary
consisting of alist of dictionaries
in Python speak - The keys are
response
andversion
- This was an
- By accessing the key
response
, thevalue
of this key is alist of dictionaries
- This list is
iterated
over with a for loop - Hence accessing each
dictionary
, eachdevice
has a dictionary - Accessing the keys
id
andmanagementIpAddress
- This list is
I hope you enjoyed this deep dive into understanding how to work with a list of dictionaries. If you want to learn more about requests, how Python loops really work, or working with lists and dictionaries, just click the links. I also recommend you get Postman to play around with APIs.