dashboard-api 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ module DashboardAPIVersion
2
+ VERSION = "0.3.0"
3
+ end
data/lib/devices.rb ADDED
@@ -0,0 +1,55 @@
1
+ module Devices
2
+ # List all devices in a given network
3
+ # @param [String] network_id network that you want to get devices for
4
+ # @return [Array] array of hashes containing device information for all devices in the network
5
+ def list_devices_in_network(network_id)
6
+ self.make_api_call("/networks/#{network_id}/devices", 'GET')
7
+ end
8
+
9
+ # Device information for a specified device
10
+ # @param [String] network_id the network id where the device exists
11
+ # @param [String] device_serial the meraki serial number of the device you want to get
12
+ # information for
13
+ # @return [Hash] a hash containing all of the devices attributes
14
+ def get_single_device(network_id, device_serial)
15
+ self.make_api_call("/networks/#{network_id}/devices/#{device_serial}", 'GET')
16
+ end
17
+
18
+ # Uplink information for a specified device
19
+ # @param [String] network_id network id where the device exists
20
+ # @param [String] device_serial meraki serial number of the device you want to check
21
+ # @return [Array] an array of hashes for each uplink and it's attributes
22
+ def get_device_uplink_stats(network_id, device_serial)
23
+ self.make_api_call("/networks/#{network_id}/devices/#{device_serial}/uplink", 'GET')
24
+ end
25
+
26
+ # Update a single devices attributes
27
+ # @param [String] network_id dashboard network id where the device exists
28
+ # @param [String] device_serial meraki serial number of the device you want to modify
29
+ # @param [Hash] options hash containing the attributes you want to modify.
30
+ # such as name, tags, longitude, latitude. A full list is found on the official Meraki API Docs
31
+ # @return [Hash] a hash containing the devices new attribute set
32
+ def update_device_attributes(network_id, device_serial, options)
33
+ raise 'Options were not passed as a Hash' if !options.is_a?(Hash)
34
+ options = {:body => options}
35
+ self.make_api_call("/networks/#{network_id}/devices/#{device_serial}", 'PUT', options)
36
+ end
37
+
38
+ # Claim a single device into a network
39
+ # @param [String] network_id dashboard network id to claim device into
40
+ # @param [Hash] options hash containing :serial => 'meraki device SN' you want to claim
41
+ # @return [Integer] code returns the HTTP code of the API call
42
+ def claim_device_into_network(network_id, options)
43
+ raise 'Options were not passed as a Hash' if !options.is_a?(Hash)
44
+ options = {:body => options}
45
+ self.make_api_call("/networks/#{network_id}/devices/claim", 'POST', options)
46
+ end
47
+
48
+ # Remove a single device from a network
49
+ # @param [String] network_id dashboard network id to remove device from
50
+ # @param [String] serial meraki serial number for device to remove
51
+ # @return [Integer] http_code HTTP code for API call
52
+ def remove_device_from_network(network_id, device_serial)
53
+ self.make_api_call("/networks/#{network_id}/devices/#{device_serial}/remove", 'POST')
54
+ end
55
+ end
data/lib/networks.rb ADDED
@@ -0,0 +1,80 @@
1
+ # Networks section of the Meraki Dashboard API
2
+ # @author Joe Letizia
3
+ module Networks
4
+ # Returns the list of networks for a given organization
5
+ # @param [String] org_id dashboard organization ID
6
+ # @return [Array] an array of hashes containing the network details
7
+ def get_networks(org_id)
8
+ self.make_api_call("/organizations/#{org_id}/networks", 'GET')
9
+ end
10
+
11
+ # Returns the network details for a single network
12
+ # @param [String] network_id dashboard network ID
13
+ # @return [Hash] a hash containing the network details of the specific network
14
+ def get_single_network(network_id)
15
+ self.make_api_call("/networks/#{network_id}", 'GET')
16
+ end
17
+
18
+ # Updates a network's details
19
+ # @param [String] network_id dashboard network ID
20
+ # @param [Hash] options a hash containing any of the following keys:
21
+ # name: the network name
22
+ # tags: tags assigned to the network
23
+ # @return [Hash] a hash containing the updated network details
24
+ def update_network(network_id, options)
25
+ raise 'Options were not passed as a Hash' if !options.is_a?(Hash)
26
+ options = {:body => options}
27
+ self.make_api_call("/networks/#{network_id}",'PUT', options)
28
+ end
29
+
30
+ # Create a new Dashboard network
31
+ # @param [String] org_id dashboard organization ID
32
+ # @param [Hash] options a hash containing the following options:
33
+ # name: the network name (REQUIRED)
34
+ # type: the type of network (wireless, switch, appliance, or phone) (REQUIRED)
35
+ # tags: tags for the network (NOT REQUIRED)
36
+ # @return [Hash] a hash containing the new networks details
37
+ def create_network(org_id, options)
38
+ raise 'Options were not passed as a Hash' if !options.is_a?(Hash)
39
+ options = {:body => options}
40
+ self.make_api_call("/organizations/#{org_id}/networks", 'POST', options)
41
+ end
42
+
43
+ # Delete an existing Dashboard network
44
+ # @param [String] network_id dashboard netwok ID to delete
45
+ # @return [Bool] status true if the network was deleted, false if not
46
+ def delete_network(network_id)
47
+ res = self.make_api_call("/networks/#{network_id}", 'DELETE')
48
+ puts res
49
+ return res.code == 204 ? true : false
50
+ end
51
+
52
+ # Get AutoVPN settings for a specific network
53
+ # @param [String] network_id dashboard network ID to get AutoVPN settings for
54
+ # @return [Hash] a hash containing the AutoVPN details for the network
55
+ def get_auto_vpn_settings(network_id)
56
+ res = self.make_api_call("/networks/#{network_id}/siteToSiteVpn", 'GET')
57
+ end
58
+
59
+ # Update AutoVPN for a specific network
60
+ # @param [String] network_id dashboard network ID to update AutoVPN settings for
61
+ # @param [Hash] options options hash containing the following options:
62
+ # mode: hub, spoke or none
63
+ # hubs: an array of Hashes containing the hubId and a true or false for useDefaultRoute
64
+ # subnets: an array of Hashes containing localSubnet and useVPN
65
+ # @return [Hash]
66
+ def update_auto_vpn_settings(network_id, options)
67
+ raise 'Options were not passed as a Hash' if !options.is_a?(Hash)
68
+
69
+ options = {:body => options}
70
+ res = self.make_api_call("/networks/#{network_id}/siteToSiteVpn", 'PUT', options)
71
+ end
72
+
73
+ # Get all MS access policies configured for a specific Dashboard network
74
+ # @param [String] network_id dashboard network ID to get MS policies for
75
+ # @return [Array] an array of hashes for containing the policy information
76
+ def get_ms_access_policies(network_id)
77
+ res = self.make_api_call("/networks/#{network_id}/accessPolicies", 'GET')
78
+ return res
79
+ end
80
+ end
@@ -0,0 +1,39 @@
1
+ # Organization section of the Meraki Dashboard API
2
+ # @author Joe Letizia
3
+ module Organizations
4
+ # Returns information about an organization
5
+ # @param [String] org_id dashboard organization ID
6
+ # @return [Hash] results contains the org id and name of the given organization
7
+ def get_organization(org_id)
8
+ self.make_api_call("/organizations/#{org_id}", 'GET')
9
+ end
10
+
11
+ # Returns the current license state for a given organization
12
+ # @param [String] org_id dashboard organization ID
13
+ # @return [Hash] results contains the current license state information
14
+ def get_license_state(org_id)
15
+ self.make_api_call("/organizations/#{org_id}/licenseState", 'GET')
16
+ end
17
+
18
+ # Returns the current inventory for an organization
19
+ # @param [String] org_id dashboard organization ID
20
+ # @return [Array] an array of hashes containg information on each individual device
21
+ def get_inventory(org_id)
22
+ self.make_api_call("/organizations/#{org_id}/inventory", 'GET')
23
+ end
24
+
25
+ # Returns the current SNMP status for an organization
26
+ # @param [String] org_id dashboard organization ID
27
+ # @return [Hash] a hash containing all SNMP configuration information for an organization
28
+ def get_snmp_status(org_id)
29
+ self.make_api_call("/organizations/#{org_id}/snmp", 'GET')
30
+ end
31
+
32
+ # Returns the configurations for an organizations 3rd party VPN peers
33
+ # @param [String] org_id dashboard organization ID
34
+ # @return [Array] an arrry of hashes containing the configuration information
35
+ # for each 3rd party VPN peer
36
+ def get_third_party_peers(org_id)
37
+ self.make_api_call("/organizations/#{org_id}/thirdPartyVPNPeers", 'GET')
38
+ end
39
+ end
data/lib/ssids.rb ADDED
@@ -0,0 +1,31 @@
1
+ module SSIDs
2
+ # Get a list of the SSIDs and their attributes for a network
3
+ # @param [String] network_id network id where the SSIDs you exists are
4
+ # @return [Array] an array of Hashes containing the SSID attributes
5
+ def list_ssids_in_network(network_id)
6
+ self.make_api_call("/networks/#{network_id}/ssids", 'GET')
7
+ end
8
+
9
+ # Get the attributes for a single SSID
10
+ # @param [String] network_id network id where the SSID you want to list is
11
+ # @param [Integer] ssid_number the SSID number you want to change. Range is from 0-14
12
+ # @return [Hash] the attributes for the requested SSID
13
+ def get_single_ssid(network_id, ssid_number)
14
+ raise "Please provide a valid SSID number" unless (ssid_number.is_a?(Integer) && ssid_number <= 14)
15
+ self.make_api_call("/networks/#{network_id}/ssids/#{ssid_number}", 'GET')
16
+ end
17
+
18
+ # Update the attributes for a single SSID
19
+ # @param [String] network_id network id where the SSID you want to change is
20
+ # @param [Integer] ssid_number the SSID number you want to change. Range is from 0-14
21
+ # @param [Hash] options hash containing the attributes to update. Can include name, enabled, authMode, encryptionMode and psk
22
+ # @return [Hash] the updated attributes for the SSID
23
+ def update_single_ssid(network_id, ssid_number, options)
24
+ raise 'Options were not passed as a Hash' if !options.is_a?(Hash)
25
+ raise "Please provide a valid SSID number" unless (ssid_number.is_a?(Integer) && ssid_number <= 14)
26
+ options = {:body => options}
27
+
28
+ self.make_api_call("/networks/#{network_id}/ssids/#{ssid_number}", 'PUT', options)
29
+ end
30
+
31
+ end
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dashboard-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Joe Letizia
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '10.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '10.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: yard
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.5
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.5
55
+ - !ruby/object:Gem::Dependency
56
+ name: vcr
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 3.0.3
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 3.0.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 2.1.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: httparty
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.14.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.14.0
97
+ description: A Ruby implementation of the Meraki Dashboard API. It allows you to interact
98
+ and provision the Meraki Dashboard via their RESTful API
99
+ email:
100
+ - letiziajm@gmail.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".gitignore"
106
+ - Gemfile
107
+ - Gemfile.lock
108
+ - README.md
109
+ - Rakefile
110
+ - dashboard-api.gemspec
111
+ - doc/Clients.html
112
+ - doc/DashboardAPI.html
113
+ - doc/DashboardAPIVersion.html
114
+ - doc/Devices.html
115
+ - doc/Networks.html
116
+ - doc/Organizations.html
117
+ - doc/SSIDs.html
118
+ - doc/_index.html
119
+ - doc/class_list.html
120
+ - doc/css/common.css
121
+ - doc/css/full_list.css
122
+ - doc/css/style.css
123
+ - doc/file.README.html
124
+ - doc/file_list.html
125
+ - doc/frames.html
126
+ - doc/index.html
127
+ - doc/js/app.js
128
+ - doc/js/full_list.js
129
+ - doc/js/jquery.js
130
+ - doc/method_list.html
131
+ - doc/top-level-namespace.html
132
+ - lib/clients.rb
133
+ - lib/dashboard-api.rb
134
+ - lib/dashboard-api/version.rb
135
+ - lib/devices.rb
136
+ - lib/networks.rb
137
+ - lib/organizations.rb
138
+ - lib/ssids.rb
139
+ homepage: https://github.com/jletizia/dashboardapi
140
+ licenses: []
141
+ metadata: {}
142
+ post_install_message:
143
+ rdoc_options: []
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ">="
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ requirements: []
157
+ rubyforge_project:
158
+ rubygems_version: 2.5.1
159
+ signing_key:
160
+ specification_version: 4
161
+ summary: A Ruby implementation of the Meraki Dashboard API
162
+ test_files: []