xcal-parktronic 1.0.2 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 01fc8eb4225cf47551484217847f6fee1f32b393
4
- data.tar.gz: 09781fbac9dd973934e8e2833521b076b31e9e35
3
+ metadata.gz: 8057f2efafca620685764ed3dd5cc8267c77a123
4
+ data.tar.gz: 7a47b24b82a219d3a0f314afc9717d58b2afd298
5
5
  SHA512:
6
- metadata.gz: 61f2c1dd6c88f3d506cc5de27a6598e05f95db899cc066a41d4ecdba83d92794155f95ed34bd412389ff47b8fa5e0b2614ce0746cfc63213e9f2c72809d5dc1c
7
- data.tar.gz: 0c0404a134cd905ba3bf51b79ad1c77688f385e9db4078e66ac1f6d375b22daa24f17f00c36cfa2e62cbc0d4b7166898675c35b77cbf46b777c06dd112f501fa
6
+ metadata.gz: f23baad4026bad69c378f1de3f086da03bbad271d17318e382d3a6d1f347580c86edc8bd19979a0b6bb2d71d2e481a1191da064200ed8bfbde2fd15eb6962364
7
+ data.tar.gz: b171c1c4bb465070bef286e792bb198df9f863b36cc296083f7accc1a00408905da58dd1aeabc59b246b317f0d16429d24195c9a3ca2de019832c0b93b3ba216
data/README.md CHANGED
@@ -38,60 +38,91 @@ api = Xcal::Parktronic::ApiClient.new(access_token: 'your_access_token', endpoin
38
38
  ### Alarms:
39
39
  ```ruby
40
40
  api.alarms
41
- api.alarm_tags(1)
42
- api.search_alarm(name: 'test', tagged_with: 'test', time_range: 24, originating_system: 'Splunk', page: 1, per_page: 20)
41
+ api.alarm( alarm_id )
42
+ api.update_alarm( alarm_id, alarm_param_1: 'value', alarm_param_2: 'value', ... )
43
+ api.alarm_tags( alarm_id )
44
+
45
+ api.post_alarm( alarm: alarm_params )
46
+ api.post_alarm( alarm: alarm_params, events: [event_1_params, event_2_params, ...] )
47
+
48
+ api.search_alarm(name: 'test alarm')
49
+ api.search_alarm(tagged_with: 'test alarm', time_range: 120)
50
+ api.search_alarm(where: {impact_level: 'Unknown', originating_system: 'test'}, time_range: 120)
51
+ api.search_alarm(extends: ['latest_event', 'with_most_recent_events'], time_range: 120)
43
52
  ```
44
53
 
45
- ### Outages:
54
+ ### Alarm Actions
46
55
  ```ruby
47
- api.outages
48
- api.outages(page: 2, per_page: 5)
56
+ api.alarm( alarm_id ).get_alarm_actions
57
+ api.alarm( alarm_id ).get_alarm_action( alarm_action_id )
58
+ api.alarm( alarm_id ).post_alarm_action( alarm_action_params )
59
+ api.alarm( alarm_id ).update_alarm_action( alarm_action_id, alarm_action_param_1: 'value', alarm_action_param_2: 'value', ... )
60
+ api.alarm( alarm_id ).set_position( alarm_action_id, position )
49
61
  ```
50
62
 
51
- ### Stack changes
63
+ ### Events
52
64
  ```ruby
53
- api.stack_changes
54
- api.stack_changes(page: 2, per_page: 5)
55
- api.stack_changes(page: 2, per_page: 5, element: 'XBO')
56
- api.stack_changes(time_range: {time_offset: -1, start_date: 0, start_time: 1440, end_time: 0}, element: 'XBO')
65
+ api.event( event_id )
66
+ api.update_event( event_id, event_param_1: 'value', event_param_2: 'value', ... )
67
+ api.event_tags( event_id )
68
+
69
+ api.alarm( alarm_id ).get_events( page: 2, per_page: 4 )
70
+ api.alarm( alarm_id ).get_all_events
71
+ api.alarm( alarm_id ).post_event( event_params )
57
72
  ```
58
73
 
59
74
  ### Events history
60
75
  ```ruby
61
76
  api.events_history
62
- api.events_history(page: 2, per_page: 5)
63
- api.events_history(host_impacted: 'xre-host-1', service_impacted: 'xre')
77
+ api.events_history( page: 2, per_page: 5 )
78
+ api.events_history( host_impacted: 'xre-host-1', service_impacted: 'xre' )
64
79
  ```
65
80
 
66
- ### Command notifications (remote commands)
81
+ ### Metrics
67
82
  ```ruby
68
- api.command_notifications
69
- api.command_notifications(page: 1, per_page: 2)
70
- api.update_command_notification(10)
83
+ api.metrics
84
+ api.metrics(page: 2, per_page: 5)
85
+ api.metric( metric_id )
86
+ api.metric_by_name( metric_name )
87
+ api.post_metric( metric: metric_params, metric_values: [metric_value_1, metric_value_2] )
88
+ api.update_metric( metric_id, metric_param_1: 'value', metric_param_2: 'value', ... )
89
+
90
+ api.metric( metric_id ).get_metric_values
91
+ api.metric( metric_id ).get_metric_values( page: 2, per_page: 4 )
92
+ api.metric( metric_id ).get_value_groups
93
+ api.metric( metric_id ).get_value_groups( page: 2, per_page: 4 )
71
94
  ```
72
95
 
73
- ### Events
96
+ ### Data Center Service States
74
97
  ```ruby
75
- api.add_event
76
- api.update_event
77
- api.event_tags(1)
78
- api.alarm(3).get_all_events
79
- api.alarm(3).post_event(data)
98
+ api.data_center_service_states
80
99
  ```
81
100
 
82
- ### Alarm Actions
101
+ ### Custom Queries
83
102
  ```ruby
84
- api.alarm(3).get_alarm_actions
85
- api.alarm(3).get_alarm_action(alarm_action_id)
86
- api.alarm(3).post_alarm_action
87
- api.alarm(3).update_alarm_action
88
- api.alarm(3).set_position
103
+ api.custom_queries
104
+ api.post_custom_query( custom_query_params )
105
+ api.update_custom_query( custom_query_id , alarm_param_1: 'value', alarm_param_2: 'value', ... )
106
+ api.find_custom_query( widget_id, widget_type )
89
107
  ```
90
108
 
91
- ### Custom Queries
109
+ ### Outages:
92
110
  ```ruby
93
- api.get_custom_queries
94
- api.post_custom_query
95
- api.update_custom_query
96
- api.find_custom_query
111
+ api.outages
112
+ api.outages( page: 2, per_page: 5 )
97
113
  ```
114
+
115
+ ### Stack changes
116
+ ```ruby
117
+ api.stack_changes
118
+ api.stack_changes( page: 2, per_page: 5 )
119
+ api.stack_changes( page: 2, per_page: 5, element: 'XBO' )
120
+ api.stack_changes( time_range: { time_offset: -1, start_date: 0, start_time: 1440, end_time: 0 }, element: 'XBO' )
121
+ ```
122
+
123
+ ### Command notifications (remote commands)
124
+ ```ruby
125
+ api.command_notifications
126
+ api.command_notifications( page: 1, per_page: 2 )
127
+ api.update_command_notification( command_notification_id )
128
+ ```
@@ -17,8 +17,8 @@ require 'xcal/parktronic/routes/metrics'
17
17
  require 'xcal/parktronic/routes/custom_queries'
18
18
  require 'xcal/parktronic/routes/nested/alarm_actions'
19
19
  require 'xcal/parktronic/routes/nested/metric_values'
20
- require 'xcal/parktronic/routes/nested/device_errors'
21
20
  require 'xcal/parktronic/routes/nested/value_groups'
21
+ require 'xcal/parktronic/routes/data_center_service_states'
22
22
  require 'xcal/parktronic/routes/outages'
23
23
  require 'xcal/parktronic/routes/stack_changes'
24
24
  require 'xcal/parktronic/routes/event_history_items'
@@ -6,7 +6,6 @@ module Xcal
6
6
 
7
7
  # define all nested routes here
8
8
  include Routes::Nested::Events
9
- include Routes::Nested::DeviceErrors
10
9
  include Routes::Nested::MetricValues
11
10
  include Routes::Nested::AlarmActions
12
11
  include Routes::Nested::ValueGroups
@@ -30,7 +29,15 @@ module Xcal
30
29
  raise InvalidResponseArgument.new("Argument `#{raw_response}' should be a Hash or raw json String") unless parsed_json
31
30
 
32
31
  # for list routes render first Array object, for single item routes render object as is
33
- @source = parsed_json.is_a?(Array) ? parsed_json.first : parsed_json
32
+ if parsed_json.is_a?(Array)
33
+ if parsed_json.length > 1
34
+ @source = { list: parsed_json }
35
+ else
36
+ @source = parsed_json.first
37
+ end
38
+ else
39
+ @source = parsed_json
40
+ end
34
41
  else
35
42
  # invalid input
36
43
  raise InvalidResponseArgument.new("Argument `#{raw_response}' should be a Hash or raw json String")
@@ -11,6 +11,7 @@ module Xcal
11
11
  include EventHistoryItems
12
12
  include CommandNotifications
13
13
  include CustomQueries
14
+ include DataCenterServiceStates
14
15
  end
15
16
  end
16
17
  end
@@ -0,0 +1,25 @@
1
+ module Xcal
2
+ module Parktronic
3
+ module Routes
4
+ module DataCenterServiceStates
5
+ # Fetches data center service states
6
+ #
7
+ # Call example:
8
+ # api.get_data_center_service_states
9
+ def get_data_center_service_states
10
+ response = get_response("/#{api_version}/metrics/data_center_service_states?#{URI.encode_www_form(:access_token => access_token)}")
11
+
12
+ generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
13
+ if response.code == '200' && generic_response.has_key?(:list)
14
+ generic_response.list.inject({}) do |memo, (name, statuses)|
15
+ memo.merge! name => { status: statuses.first, services: statuses.last }
16
+ end
17
+ else
18
+ generic_response
19
+ end
20
+ end
21
+ alias :data_center_service_states :get_data_center_service_states
22
+ end
23
+ end
24
+ end
25
+ end
@@ -64,17 +64,15 @@ module Xcal
64
64
  # ==== Parameters
65
65
  # * +metric+ hash of Metric data.
66
66
  # * +metric_values+ array of Metric Values.
67
- # * +device_errors+ array of Device Errors.
68
67
  #
69
68
  # ==== Examples
70
69
  # metric_params = { name: 'metric name', description: 'metric description', created_at: Time.now }
71
70
  # metric_value_1 = { value: 2, custom_timestamp: (Time.now - 240)}
72
71
  # metric_value_2 = { value: 4, custom_timestamp: (Time.now - 120)}
73
- # device_error_1 = { timestamp: (Time.now() - 120), value: 5}
74
- # api.post_metric( metric: metric_params, metric_values: [metric_value_1, metric_value_2], device_error: [device_error_1] )
72
+ # api.post_metric( metric: metric_params, metric_values: [metric_value_1, metric_value_2] )
75
73
  def post_metric(args = {})
76
74
  request = Net::HTTP::Post.new("/#{api_version}/metrics", 'Content-Type' => 'application/json')
77
- request.body = { access_token: access_token, metric: args[:metric], metric_values: args[:metric_values], device_errors: [args[:device_errors]] }.to_json
75
+ request.body = { access_token: access_token, metric: args[:metric], metric_values: args[:metric_values] }.to_json
78
76
  response = http.start { |net| net.request(request) }
79
77
 
80
78
  Xcal::Parktronic::GenericResponse.new(response.body)
@@ -1,5 +1,5 @@
1
1
  module Xcal
2
2
  module Parktronic
3
- VERSION = '1.0.2'
3
+ VERSION = '1.1.1'
4
4
  end
5
5
  end
@@ -50,26 +50,9 @@ describe Xcal::Parktronic::ApiClient do
50
50
  custom_timestamp: nil,
51
51
  }
52
52
  end
53
- let(:device_error) do
54
- {
55
- value: 5,
56
- created_at: '2013-07-24T13:21:16Z',
57
- custom_timestamp: nil,
58
- value_groups: [
59
- {
60
- group_type: 'Code',
61
- group_value: 33
62
- },
63
- {
64
- group_type: 'software_stack',
65
- group_value: 'stack'
66
- }
67
- ]
68
- }
69
- end
70
53
 
71
54
  it 'should post metrics successfully' do
72
- send_data = { :metric => metric, :metric_values => [metric_value], :device_error => device_error }
55
+ send_data = { :metric => metric, :metric_values => [metric_value] }
73
56
  expect{ api_http_client.post_metric(send_data) }.not_to raise_error
74
57
  expect{ api_invalid_client.post_metric(send_data) }.not_to raise_error
75
58
  end
@@ -84,16 +67,5 @@ describe Xcal::Parktronic::ApiClient do
84
67
  expect(metric.get_metric_values.last.value).to eql('4.880')
85
68
  end
86
69
  end
87
-
88
- context 'metric device_errors' do
89
- it 'should give an appropriate list of alarms' do
90
- metric = api_http_client.get_metric(2)
91
-
92
- expect{metric.get_device_errors.first.value}.not_to raise_error
93
- expect(metric.get_device_errors.first.value).to eql(53)
94
- expect(metric.get_device_errors.last.value).to eql(32)
95
- end
96
- end
97
-
98
70
  end
99
71
  end
@@ -86,10 +86,6 @@ class ApiMock < Sinatra::Base
86
86
  json_response 200, 'metric_metric_values.json'
87
87
  end
88
88
 
89
- get '/:version/metrics/:id/device_errors' do
90
- json_response 200, 'metric_device_errors.json'
91
- end
92
-
93
89
  post '/:version/metrics' do
94
90
  json_response 201, 'metric_post.json'
95
91
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcal-parktronic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vitaliy Omelchenko
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-08-28 00:00:00.000000000 Z
13
+ date: 2015-04-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hashie
@@ -145,11 +145,11 @@ files:
145
145
  - lib/xcal/parktronic/routes/alarms.rb
146
146
  - lib/xcal/parktronic/routes/command_notifications.rb
147
147
  - lib/xcal/parktronic/routes/custom_queries.rb
148
+ - lib/xcal/parktronic/routes/data_center_service_states.rb
148
149
  - lib/xcal/parktronic/routes/event_history_items.rb
149
150
  - lib/xcal/parktronic/routes/events.rb
150
151
  - lib/xcal/parktronic/routes/metrics.rb
151
152
  - lib/xcal/parktronic/routes/nested/alarm_actions.rb
152
- - lib/xcal/parktronic/routes/nested/device_errors.rb
153
153
  - lib/xcal/parktronic/routes/nested/events.rb
154
154
  - lib/xcal/parktronic/routes/nested/metric_values.rb
155
155
  - lib/xcal/parktronic/routes/nested/value_groups.rb
@@ -188,7 +188,6 @@ files:
188
188
  - spec/support/fixtures/responses/events_history_page_2.json
189
189
  - spec/support/fixtures/responses/forbidden.json
190
190
  - spec/support/fixtures/responses/metric.json
191
- - spec/support/fixtures/responses/metric_device_errors.json
192
191
  - spec/support/fixtures/responses/metric_metric_values.json
193
192
  - spec/support/fixtures/responses/metric_post.json
194
193
  - spec/support/fixtures/responses/metrics_page_1.json
@@ -220,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
219
  version: '0'
221
220
  requirements: []
222
221
  rubyforge_project:
223
- rubygems_version: 2.2.2
222
+ rubygems_version: 2.4.6
224
223
  signing_key:
225
224
  specification_version: 4
226
225
  summary: Get easy access to the most OIV data
@@ -257,7 +256,6 @@ test_files:
257
256
  - spec/support/fixtures/responses/events_history_page_2.json
258
257
  - spec/support/fixtures/responses/forbidden.json
259
258
  - spec/support/fixtures/responses/metric.json
260
- - spec/support/fixtures/responses/metric_device_errors.json
261
259
  - spec/support/fixtures/responses/metric_metric_values.json
262
260
  - spec/support/fixtures/responses/metric_post.json
263
261
  - spec/support/fixtures/responses/metrics_page_1.json
@@ -1,35 +0,0 @@
1
- module Xcal
2
- module Parktronic
3
- module Routes
4
- module Nested
5
-
6
- module DeviceErrors
7
-
8
- # Fetches device_errors for the specific metric
9
- # Executed as a method chain from the GenericResponse object
10
- #
11
- # Call example:
12
- # metric(id).get_device_errors(page: 2, per_page: 4)
13
- #
14
- # Accepted attributes:
15
- # +page+ page number, defaults to 1
16
- # +per_page+ per page value, defaults to 100
17
- def get_paged_device_errors(args = {})
18
- args.merge!(:access_token => client.access_token)
19
- response = client.get_response("/#{client.api_version}/metrics/#{id}/device_errors?#{URI.encode_www_form(args)}")
20
-
21
- generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
22
- if response.code == '200' && generic_response.has_key?(:device_errors)
23
- generic_response.device_errors.map(&:device_error)
24
- else
25
- generic_response
26
- end
27
- end
28
- alias :get_device_errors :get_paged_device_errors
29
-
30
- end
31
-
32
- end
33
- end
34
- end
35
- end
@@ -1,610 +0,0 @@
1
- [
2
- {
3
- "total_count":2358,
4
- "total_pages":24,
5
- "page":1,
6
- "per_page":100,
7
- "device_errors":[
8
- {
9
- "device_error":{
10
- "value":53,
11
- "timestamp":"2013-12-13T12:35:00.000Z"
12
- }
13
- },
14
- {
15
- "device_error":{
16
- "value":44,
17
- "timestamp":"2013-12-13T12:35:00.000Z"
18
- }
19
- },
20
- {
21
- "device_error":{
22
- "value":33,
23
- "timestamp":"2013-12-13T12:35:00.000Z"
24
- }
25
- },
26
- {
27
- "device_error":{
28
- "value":2,
29
- "timestamp":"2013-12-13T12:35:00.000Z"
30
- }
31
- },
32
- {
33
- "device_error":{
34
- "value":5,
35
- "timestamp":"2013-12-13T12:35:00.000Z"
36
- }
37
- },
38
- {
39
- "device_error":{
40
- "value":50,
41
- "timestamp":"2013-12-13T12:35:00.000Z"
42
- }
43
- },
44
- {
45
- "device_error":{
46
- "value":1,
47
- "timestamp":"2013-12-13T12:35:00.000Z"
48
- }
49
- },
50
- {
51
- "device_error":{
52
- "value":140,
53
- "timestamp":"2013-12-13T12:40:00.000Z"
54
- }
55
- },
56
- {
57
- "device_error":{
58
- "value":44,
59
- "timestamp":"2013-12-13T12:40:00.000Z"
60
- }
61
- },
62
- {
63
- "device_error":{
64
- "value":48,
65
- "timestamp":"2013-12-13T12:40:00.000Z"
66
- }
67
- },
68
- {
69
- "device_error":{
70
- "value":1,
71
- "timestamp":"2013-12-13T12:40:00.000Z"
72
- }
73
- },
74
- {
75
- "device_error":{
76
- "value":7,
77
- "timestamp":"2013-12-13T12:40:00.000Z"
78
- }
79
- },
80
- {
81
- "device_error":{
82
- "value":85,
83
- "timestamp":"2013-12-13T12:40:00.000Z"
84
- }
85
- },
86
- {
87
- "device_error":{
88
- "value":2,
89
- "timestamp":"2013-12-13T12:40:00.000Z"
90
- }
91
- },
92
- {
93
- "device_error":{
94
- "value":68,
95
- "timestamp":"2013-12-13T12:45:00.000Z"
96
- }
97
- },
98
- {
99
- "device_error":{
100
- "value":49,
101
- "timestamp":"2013-12-13T12:45:00.000Z"
102
- }
103
- },
104
- {
105
- "device_error":{
106
- "value":46,
107
- "timestamp":"2013-12-13T12:45:00.000Z"
108
- }
109
- },
110
- {
111
- "device_error":{
112
- "value":1,
113
- "timestamp":"2013-12-13T12:45:00.000Z"
114
- }
115
- },
116
- {
117
- "device_error":{
118
- "value":1,
119
- "timestamp":"2013-12-13T12:45:00.000Z"
120
- }
121
- },
122
- {
123
- "device_error":{
124
- "value":1,
125
- "timestamp":"2013-12-13T12:45:00.000Z"
126
- }
127
- },
128
- {
129
- "device_error":{
130
- "value":11,
131
- "timestamp":"2013-12-13T12:45:00.000Z"
132
- }
133
- },
134
- {
135
- "device_error":{
136
- "value":47,
137
- "timestamp":"2013-12-13T12:45:00.000Z"
138
- }
139
- },
140
- {
141
- "device_error":{
142
- "value":1,
143
- "timestamp":"2013-12-13T12:45:00.000Z"
144
- }
145
- },
146
- {
147
- "device_error":{
148
- "value":64,
149
- "timestamp":"2013-12-13T12:50:00.000Z"
150
- }
151
- },
152
- {
153
- "device_error":{
154
- "value":32,
155
- "timestamp":"2013-12-13T12:50:00.000Z"
156
- }
157
- },
158
- {
159
- "device_error":{
160
- "value":29,
161
- "timestamp":"2013-12-13T12:50:00.000Z"
162
- }
163
- },
164
- {
165
- "device_error":{
166
- "value":1,
167
- "timestamp":"2013-12-13T12:50:00.000Z"
168
- }
169
- },
170
- {
171
- "device_error":{
172
- "value":8,
173
- "timestamp":"2013-12-13T12:50:00.000Z"
174
- }
175
- },
176
- {
177
- "device_error":{
178
- "value":63,
179
- "timestamp":"2013-12-13T12:50:00.000Z"
180
- }
181
- },
182
- {
183
- "device_error":{
184
- "value":75,
185
- "timestamp":"2013-12-13T12:55:00.000Z"
186
- }
187
- },
188
- {
189
- "device_error":{
190
- "value":37,
191
- "timestamp":"2013-12-13T12:55:00.000Z"
192
- }
193
- },
194
- {
195
- "device_error":{
196
- "value":93,
197
- "timestamp":"2013-12-13T12:55:00.000Z"
198
- }
199
- },
200
- {
201
- "device_error":{
202
- "value":13,
203
- "timestamp":"2013-12-13T12:55:00.000Z"
204
- }
205
- },
206
- {
207
- "device_error":{
208
- "value":77,
209
- "timestamp":"2013-12-13T12:55:00.000Z"
210
- }
211
- },
212
- {
213
- "device_error":{
214
- "value":1,
215
- "timestamp":"2013-12-13T12:55:00.000Z"
216
- }
217
- },
218
- {
219
- "device_error":{
220
- "value":58,
221
- "timestamp":"2013-12-13T13:00:00.000Z"
222
- }
223
- },
224
- {
225
- "device_error":{
226
- "value":53,
227
- "timestamp":"2013-12-13T13:00:00.000Z"
228
- }
229
- },
230
- {
231
- "device_error":{
232
- "value":151,
233
- "timestamp":"2013-12-13T13:00:00.000Z"
234
- }
235
- },
236
- {
237
- "device_error":{
238
- "value":1,
239
- "timestamp":"2013-12-13T13:00:00.000Z"
240
- }
241
- },
242
- {
243
- "device_error":{
244
- "value":7,
245
- "timestamp":"2013-12-13T13:00:00.000Z"
246
- }
247
- },
248
- {
249
- "device_error":{
250
- "value":53,
251
- "timestamp":"2013-12-13T13:00:00.000Z"
252
- }
253
- },
254
- {
255
- "device_error":{
256
- "value":1,
257
- "timestamp":"2013-12-13T13:00:00.000Z"
258
- }
259
- },
260
- {
261
- "device_error":{
262
- "value":1,
263
- "timestamp":"2013-12-13T13:00:00.000Z"
264
- }
265
- },
266
- {
267
- "device_error":{
268
- "value":53,
269
- "timestamp":"2013-12-13T13:05:00.000Z"
270
- }
271
- },
272
- {
273
- "device_error":{
274
- "value":42,
275
- "timestamp":"2013-12-13T13:05:00.000Z"
276
- }
277
- },
278
- {
279
- "device_error":{
280
- "value":114,
281
- "timestamp":"2013-12-13T13:05:00.000Z"
282
- }
283
- },
284
- {
285
- "device_error":{
286
- "value":7,
287
- "timestamp":"2013-12-13T13:05:00.000Z"
288
- }
289
- },
290
- {
291
- "device_error":{
292
- "value":75,
293
- "timestamp":"2013-12-13T13:05:00.000Z"
294
- }
295
- },
296
- {
297
- "device_error":{
298
- "value":3,
299
- "timestamp":"2013-12-13T13:05:00.000Z"
300
- }
301
- },
302
- {
303
- "device_error":{
304
- "value":59,
305
- "timestamp":"2013-12-13T13:10:00.000Z"
306
- }
307
- },
308
- {
309
- "device_error":{
310
- "value":39,
311
- "timestamp":"2013-12-13T13:10:00.000Z"
312
- }
313
- },
314
- {
315
- "device_error":{
316
- "value":39,
317
- "timestamp":"2013-12-13T13:10:00.000Z"
318
- }
319
- },
320
- {
321
- "device_error":{
322
- "value":5,
323
- "timestamp":"2013-12-13T13:10:00.000Z"
324
- }
325
- },
326
- {
327
- "device_error":{
328
- "value":8,
329
- "timestamp":"2013-12-13T13:10:00.000Z"
330
- }
331
- },
332
- {
333
- "device_error":{
334
- "value":60,
335
- "timestamp":"2013-12-13T13:10:00.000Z"
336
- }
337
- },
338
- {
339
- "device_error":{
340
- "value":1,
341
- "timestamp":"2013-12-13T13:10:00.000Z"
342
- }
343
- },
344
- {
345
- "device_error":{
346
- "value":2,
347
- "timestamp":"2013-12-13T13:10:00.000Z"
348
- }
349
- },
350
- {
351
- "device_error":{
352
- "value":59,
353
- "timestamp":"2013-12-13T13:15:00.000Z"
354
- }
355
- },
356
- {
357
- "device_error":{
358
- "value":47,
359
- "timestamp":"2013-12-13T13:15:00.000Z"
360
- }
361
- },
362
- {
363
- "device_error":{
364
- "value":23,
365
- "timestamp":"2013-12-13T13:15:00.000Z"
366
- }
367
- },
368
- {
369
- "device_error":{
370
- "value":1,
371
- "timestamp":"2013-12-13T13:15:00.000Z"
372
- }
373
- },
374
- {
375
- "device_error":{
376
- "value":9,
377
- "timestamp":"2013-12-13T13:15:00.000Z"
378
- }
379
- },
380
- {
381
- "device_error":{
382
- "value":51,
383
- "timestamp":"2013-12-13T13:15:00.000Z"
384
- }
385
- },
386
- {
387
- "device_error":{
388
- "value":43,
389
- "timestamp":"2013-12-13T13:20:00.000Z"
390
- }
391
- },
392
- {
393
- "device_error":{
394
- "value":38,
395
- "timestamp":"2013-12-13T13:20:00.000Z"
396
- }
397
- },
398
- {
399
- "device_error":{
400
- "value":22,
401
- "timestamp":"2013-12-13T13:20:00.000Z"
402
- }
403
- },
404
- {
405
- "device_error":{
406
- "value":3,
407
- "timestamp":"2013-12-13T13:20:00.000Z"
408
- }
409
- },
410
- {
411
- "device_error":{
412
- "value":8,
413
- "timestamp":"2013-12-13T13:20:00.000Z"
414
- }
415
- },
416
- {
417
- "device_error":{
418
- "value":48,
419
- "timestamp":"2013-12-13T13:20:00.000Z"
420
- }
421
- },
422
- {
423
- "device_error":{
424
- "value":1,
425
- "timestamp":"2013-12-13T13:20:00.000Z"
426
- }
427
- },
428
- {
429
- "device_error":{
430
- "value":49,
431
- "timestamp":"2013-12-13T13:25:00.000Z"
432
- }
433
- },
434
- {
435
- "device_error":{
436
- "value":33,
437
- "timestamp":"2013-12-13T13:25:00.000Z"
438
- }
439
- },
440
- {
441
- "device_error":{
442
- "value":27,
443
- "timestamp":"2013-12-13T13:25:00.000Z"
444
- }
445
- },
446
- {
447
- "device_error":{
448
- "value":4,
449
- "timestamp":"2013-12-13T13:25:00.000Z"
450
- }
451
- },
452
- {
453
- "device_error":{
454
- "value":12,
455
- "timestamp":"2013-12-13T13:25:00.000Z"
456
- }
457
- },
458
- {
459
- "device_error":{
460
- "value":44,
461
- "timestamp":"2013-12-13T13:25:00.000Z"
462
- }
463
- },
464
- {
465
- "device_error":{
466
- "value":1,
467
- "timestamp":"2013-12-13T13:25:00.000Z"
468
- }
469
- },
470
- {
471
- "device_error":{
472
- "value":60,
473
- "timestamp":"2013-12-13T13:30:00.000Z"
474
- }
475
- },
476
- {
477
- "device_error":{
478
- "value":39,
479
- "timestamp":"2013-12-13T13:30:00.000Z"
480
- }
481
- },
482
- {
483
- "device_error":{
484
- "value":47,
485
- "timestamp":"2013-12-13T13:30:00.000Z"
486
- }
487
- },
488
- {
489
- "device_error":{
490
- "value":1,
491
- "timestamp":"2013-12-13T13:30:00.000Z"
492
- }
493
- },
494
- {
495
- "device_error":{
496
- "value":7,
497
- "timestamp":"2013-12-13T13:30:00.000Z"
498
- }
499
- },
500
- {
501
- "device_error":{
502
- "value":39,
503
- "timestamp":"2013-12-13T13:30:00.000Z"
504
- }
505
- },
506
- {
507
- "device_error":{
508
- "value":61,
509
- "timestamp":"2013-12-13T13:35:00.000Z"
510
- }
511
- },
512
- {
513
- "device_error":{
514
- "value":49,
515
- "timestamp":"2013-12-13T13:35:00.000Z"
516
- }
517
- },
518
- {
519
- "device_error":{
520
- "value":26,
521
- "timestamp":"2013-12-13T13:35:00.000Z"
522
- }
523
- },
524
- {
525
- "device_error":{
526
- "value":2,
527
- "timestamp":"2013-12-13T13:35:00.000Z"
528
- }
529
- },
530
- {
531
- "device_error":{
532
- "value":12,
533
- "timestamp":"2013-12-13T13:35:00.000Z"
534
- }
535
- },
536
- {
537
- "device_error":{
538
- "value":50,
539
- "timestamp":"2013-12-13T13:35:00.000Z"
540
- }
541
- },
542
- {
543
- "device_error":{
544
- "value":1,
545
- "timestamp":"2013-12-13T13:35:00.000Z"
546
- }
547
- },
548
- {
549
- "device_error":{
550
- "value":48,
551
- "timestamp":"2013-12-13T13:40:00.000Z"
552
- }
553
- },
554
- {
555
- "device_error":{
556
- "value":31,
557
- "timestamp":"2013-12-13T13:40:00.000Z"
558
- }
559
- },
560
- {
561
- "device_error":{
562
- "value":25,
563
- "timestamp":"2013-12-13T13:40:00.000Z"
564
- }
565
- },
566
- {
567
- "device_error":{
568
- "value":1,
569
- "timestamp":"2013-12-13T13:40:00.000Z"
570
- }
571
- },
572
- {
573
- "device_error":{
574
- "value":9,
575
- "timestamp":"2013-12-13T13:40:00.000Z"
576
- }
577
- },
578
- {
579
- "device_error":{
580
- "value":39,
581
- "timestamp":"2013-12-13T13:40:00.000Z"
582
- }
583
- },
584
- {
585
- "device_error":{
586
- "value":2,
587
- "timestamp":"2013-12-13T13:40:00.000Z"
588
- }
589
- },
590
- {
591
- "device_error":{
592
- "value":59,
593
- "timestamp":"2013-12-13T13:45:00.000Z"
594
- }
595
- },
596
- {
597
- "device_error":{
598
- "value":40,
599
- "timestamp":"2013-12-13T13:45:00.000Z"
600
- }
601
- },
602
- {
603
- "device_error":{
604
- "value":32,
605
- "timestamp":"2013-12-13T13:45:00.000Z"
606
- }
607
- }
608
- ]
609
- }
610
- ]