This call is one I have had multiple issues with, it may have improved since I last dug into it, in which case the following may not be up to date.
See https://community.meraki.com/t5/Developers-APIs/Events-same-event-different-API-return-also-call-nev...
a)
The API service itself was not complying with the documented pagination rules, I had a frustrating time with support to get this accepted, but eventually it was fixed.
b)
I'm not sure the separate issue with the Meraki Python library was ever fixed (I reported it on github but the issue was closed without it being fixed at that point, so I gave up trying), fwiw I still patch the library myself with the fix in the thread I linked just in case an eventless return still hangs the library call.
c)
I had to specify total_pages="all" to get all events, the documentation doesn't mention it, it's possible this was a side effect of the other issues, but I still add this when using the call, it doesn't hurt 🙂
For instance...
response = await aiomeraki.networks.getNetworkEvents(net['id'], productType="appliance", includedEventTypes = ["nbar_block", "cf_block", "sf_url_block", "sf_binary_block"], perPage=1000, total_pages="all")
That aside, a few comments about usage...
You do need to check the return for a non-null "message" element
If there's a message then there are no events.
The possible messages are not documented, an example of a real message is...
"message": "No matching events found between Dec 27 19:13 and Jan 27 19:13."
I use the occurredAt element to filter returned events to just the period I'm interested in.
I mainly use getNetworkEvents to get appliance security events (i.e. the *_block events), but not all security event types are returned by this call.
The other appliance security event types must be obtained with the getNetworkApplianceSecurityEvents call.