dashboard-api 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []