• Stars
    star
    266
  • Rank 154,103 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created about 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Dashboard api for python

Meraki Dashboard API Python Library

The Meraki Dashboard API Python library provides all current Meraki dashboard API calls to interface with the Cisco Meraki cloud-managed platform. Meraki generates the library based on dashboard API's OpenAPI spec to keep it up to date with the latest API releases, and provides the full source code for the library including the tools used to generate the library, if you are participating in the Early Access program or would like to contribute to the development of the library. Meraki welcomes constructive pull requests that maintain backwards compatibility with prior versions. The library requires Python 3.7+, receives support from the community, and you can install it via PyPI:

pip install --upgrade meraki

Features

While you can make direct HTTP requests to dashboard API in any programming language or REST API client, using a client library can make it easier for you to focus on your specific use case, without the overhead of having to write functions to handle the dashboard API calls. The Python library can also take care of error handling, logging, retries, and other convenient processes and options for you automatically.

  • Support for all API endpoints, as it uses the OpenAPI specification to generate source code
  • Log all API requests made to a local file as well as on-screen console
  • Automatic retries upon 429 rate limit errors, using the Retry-After field within response headers
  • Get all (or a specified number of) pages of data with built-in pagination control
  • Tweak settings such as maximum retries, certificate path, suppress logging, and other options
  • Simulate POST/PUT/DELETE calls to preview first, so that network configuration does not get changed

Setup

  1. Enable API access in your Meraki dashboard organization and obtain an API key (instructions)

  2. Keep your API key safe and secure, as it is similar to a password for your dashboard. If publishing your Python code to a wider audience, please research secure handling of API keys.

  3. Install the latest version of Python 3

  4. Use pip (or an alternative such as easy_install) to install the library from the Python Package Index:

    • pip install meraki
    • If you have both Python3 and Python2 installed, you may need to use pip3 (so pip3 install meraki) along with python3 on your system
    • If meraki was previously installed, you can upgrade to the latest non-beta release with pip install --upgrade meraki
  5. The library supports Meraki dashboard API v1. You can also specify the version of the library when installing with pip:

    • See the full release history to pick the version you want, or use pip install meraki== without including a version number to display the list of available versions
    • Versions begin with 1 (1.0.0bz for beta)
    • Specify the version you want with the install command; for example: pip install meraki==1.34.0
    • You can also see the version currently installed with pip show meraki
    • End-of-life v0 versions of the Python library begin with 0 (0.x.y) and are not supported nor recommended.

Usage

  1. Export your API key as an environment variable, for example:

    export MERAKI_DASHBOARD_API_KEY=093b24e85df15a3e66f1fc359f4c48493eaa1b73
  2. Alternatively, define your API key as a variable in your source code; this method is not recommended due to its inherent insecurity.

  3. Single line of code to import and use the library goes at the top of your script:

    import meraki
  4. Instantiate the client (API consumer class), optionally specifying any of the parameters available to set:

    dashboard = meraki.DashboardAPI()
  5. Make dashboard API calls in your source code, using the format client.scope.operation, where client is the name you defined in the previous step (dashboard above), scope is the corresponding scope that represents the first tag from the OpenAPI spec, and operation is the operation of the API endpoint. For example, to make a call to get the list of organizations accessible by the API key defined in step 1, use this function call:

    my_orgs = dashboard.organizations.getOrganizations()

Examples

You can find fully working example scripts in the examples folder.

Script Purpose
org_wide_clients.py That code collects the clients of all networks, in all orgs to which the key has access. No changes are made, since only GET endpoints are called, and the data is written to local CSV output files.

AsyncIO

asyncio is a library to write concurrent code using the async/await syntax. Special thanks to Heimo Stieg (@coreGreenberet) who has ported the API to asyncio.

The usage is similiar to the sequential version above. However it has has some differences.

  1. Export your API key as an environment variable, for example:

    export MERAKI_DASHBOARD_API_KEY=093b24e85df15a3e66f1fc359f4c48493eaa1b73
  2. Alternatively, define your API key as a variable in your source code; this method is not recommended due to its inherent insecurity.

  3. Single line of code to import and use the library goes at the top of your script:

    import meraki.aio
  4. Instantiate the client (API consumer class), optionally specifying any of the parameters available to set:

    async with meraki.aio.AsyncDashboardAPI() as aiomeraki:

    The async with statement is important here to make sure, that the client sessions will be closed after using the api.

  5. Make dashboard API calls in your source code, using the format await client.section.operation, where client is the name you defined in the previous step (aiomeraki above), section is the corresponding group (or tag from the OpenAPI spec) from the API docs, and operation is the name (or operation ID from OpenAPI) of the API endpoint. For example, to make a call to get the list of organizations accessible by the API key defined in step 1, use this function call:

    my_orgs = await aiomeraki.organizations.getOrganizations()
  6. Run everything inside an event loop.

import asyncio

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(my_async_entry_point())
    
    # if you are using Python 3.7+ you can also simply 
    # use the following line instead of the two lines above
    asyncio.run(my_async_entry_point())

Examples

You can find fully working example scripts in the examples folder.

Script Purpose
aio_org_wide_clients.py That code is a asyncio port from org_wide_clients.py and collects the clients of all networks, in all orgs to which the key has access. No changes are made, since only GET endpoints are called, and the data is written to local CSV output files.
aio_ips2firewall.py That code will collect the source IP of security events and creates L7 firewall rules to block them. usage: aio_ips2firewall.py [-h] -o ORGANIZATIONS [ORGANIZATIONS ...] [-f FILTER] [-s] [-d DAYS]

Note for application developers and ecosystem partners

We're so glad that you're leveraging our Python library. It's best practice to identify your application with every API request that you make. You can easily do this automatically just by following the format defined in config.py and passing the session kwarg:

MERAKI_PYTHON_SDK_CALLER

Unless you are an ecosystem partner, this identifier is optional.

  1. If you are an ecosystem partner and you have questions about this requirement, please reach out to your ecosystem rep.
  2. If you have any questions about the formatting, please ask your question by opening an issue in this repo.

More Repositories

1

automation-scripts

Python
363
star
2

cmx-api-app

Ruby
45
star
3

provisioning-lib

Python
43
star
4

meraki-python-sdk

Python
42
star
5

openapi

This repository contains OpenAPI specifications for the Meraki Dashboard API
23
star
6

dashboard-api-go

Dashboard API for Golang
Go
18
star
7

webhook-payload-templates

A collection of Webhook Payload Templates and related integration docs.
Liquid
15
star
8

dns-o-matic

Python
14
star
9

alexa-skill

Python
13
star
10

spark-operations-bot

bot leveraging the Spark Bot framework
Python
13
star
11

meraki-node-sdk

JavaScript
12
star
12

scanning-api-app

Low-latency example CMX scanning API firehose receiver server and frontend application
Ruby
12
star
13

js-splash

CSS
11
star
14

google-form

JavaScript
11
star
15

excap-social

JavaScript
10
star
16

detect-and-locate-camera-integration

Integrating the Cisco Meraki Scanning API, with Meraki MV, Cisco Spark, Google Maps and Node-RED
HTML
8
star
17

docker-toolkit

api tools that run in a docker container!
JavaScript
7
star
18

help-miles-app

Objective-C
7
star
19

adaptive-policy-ise-sync

HTML
7
star
20

bssid-calculator

tells you the bssid of meraki APs!
Python
6
star
21

concierge-app

Objective-C
5
star
22

shopping-app

Objective-C
4
star
23

mki-font-ciscosans

4
star
24

ufactory

A simple factory system for tests in Javascript
JavaScript
2
star
25

investigo-spark-bot

HTML
2
star
26

dashboard-api-tools

Dashboard API Tools
TypeScript
2
star
27

msp-customer-report

Python
1
star
28

hackathon

1
star
29

postman-collection

1
star
30

teams-bot-automation-example

Python
1
star
31

beacon-app

open source app in swift!
1
star
32

meraki-ruby-sdk

Ruby
1
star
33

migration-tools

Python
1
star
34

meraki-electronic-shelf-label-cli

Python
1
star
35

dashboard-api-ruby

Ruby
1
star