-
Notifications
You must be signed in to change notification settings - Fork 1
/
example23-SubmitNewOrgDelRequest-smDeviceID.py
77 lines (63 loc) · 4.08 KB
/
example23-SubmitNewOrgDelRequest-smDeviceID.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""MerakiPII Sample Script.
Copyright (c) 2019 Cisco and/or its affiliates.
This software is licensed to you under the terms of the Cisco Sample
Code License, Version 1.1 (the "License"). You may obtain a copy of the
License at
https://developer.cisco.com/docs/licenses
All use of the material herein must be in accordance with the terms of
the License. All rights not expressly granted by the License are
reserved. Unless required by applicable law or agreed to separately in
writing, software distributed under the License is distributed on an "AS
IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied.
"""
__author__ = "Zach Brewer"
__email__ = "[email protected]"
__version__ = "0.1.0"
__copyright__ = "Copyright (c) 2019 Cisco and/or its affiliates."
__license__ = "Cisco Sample Code License, Version 1.1"
# example script that uses MerakiPII.PIICalls module to submit a new DELETE or RESTRICT PROCESSING PII request given PII attribute
# Make sure to check the API Documentation - there are various valid attribute combinations when making this request
# API Documentation for this call:
# https://dashboard.meraki.com/api_docs#submit-a-new-delete-or-restrict-processing-pii-request
# If you don't have a test environment, you can use DevNet Meraki Cloud Sandbox with a free account:
# https://devnetsandbox.cisco.com/RM/Diagram/Index/a9487767-deef-4855-b3e3-880e7f39eadc?diagramType=Topology
# see submitOrgPIIRequest function in PIICalls module for details and arguments
# see the 1st example (example1-getOrgPIIRequests.py) for various ways to assign values for API calls
# for this file and other examples, we are using config.ini file for values
# next line imports PIICalls.py from the MerakiPII directory
from MerakiPII import PIICalls
import configparser
import json
# load config.ini and assign config variables from appropriate section to variables
# it would be helpful to read through the API documentation for this call/function
# username usually applies only to a WIFI network with a splash page and local (Meraki) auth
# basically sending a DELETE PII request to a WIFI network/org will remove
# user's username and other data under WIRELESS --> SPLASH LOGINS in the Meraki Dashboard
config = configparser.ConfigParser()
config.read('config.ini')
# use MDM section of config.ini as these are MDM/SM specific PII calls
apikey = config['DEFAULT-KEYS-MDM']['API_KEY']
orgid = config['DEFAULT-KEYS-MDM']['ORG_ID']
# set "action" (delete or restrict processing) argument directly rather than read from config.ini
# restrict processing - only applies to smDeviceID, smUserId, or mac
action = 'delete'
# set IDENTIFIER_TYPE to smDevice as defined in config.ini
identifier_type = config['DELETE-AND-RESTRICT-DATA']['IDENTIFIER_TYPE_SMDEVICE']
# set IDENTIFIER to an actual smDevice value in config.ini
identifier_value = config['DELETE-AND-RESTRICT-DATA']['IDENTIFIER_VALUE_SMDEVICE']
# datasets are relative to action = 'delete' (delete PII data) and vary depending upon the identifier_type
# see the API documentation
# for MerakiPII.PIICalls module, you can call one or more seperated by a space
# as long as 1 or more datasets are valid for that identifier_type (e.g. username takes the datasets: users loginAttempts)
datasets = 'device'
# we use identifier_type=identifer_type and other assignments when calling PIICalls.submitOrgPIIRequest
# this sets optional arguments in the PIICalls.submitOrgPIIRequest function to those defined here.
# i.e. submitORGPIIRequest_ARGUMENT = ARGUMENT_defined_in_this_python_file
# if we don't, the arguments get passed in postionally and you may have an issue such as mac address value passed as an username
# argument into the function and subsequent Meraki API call.
MyNewOrgPIIRequest = PIICalls.submitOrgPIIRequest(apikey, orgid, action, identifier_type, identifier_value, datasets=datasets)
print('Submitting ' + '"' + action + '"' + ' request for ' '"' + identifier_type + '"' + ' with the value of '+ '"' + identifier_value + '"' + ': \n')
print(json.dumps(MyNewOrgPIIRequest, indent=4, sort_keys=False))