losant_rest 1.19.1 → 1.19.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/docs/_schemas.md +2373 -508
  3. data/docs/application.md +40 -0
  4. data/docs/me.md +6 -6
  5. data/lib/losant_rest/version.rb +1 -1
  6. data/lib/platform_rest/application.rb +48 -0
  7. data/lib/platform_rest/client.rb +2 -2
  8. data/lib/platform_rest/me.rb +6 -6
  9. data/schemas/apiTokenPost.json +1 -0
  10. data/schemas/application.json +166 -2
  11. data/schemas/applicationCreationByTemplateResult.json +166 -2
  12. data/schemas/applicationDashboardPost.json +6 -0
  13. data/schemas/applicationImportExecutions.json +205 -0
  14. data/schemas/applications.json +166 -2
  15. data/schemas/authedUser.json +4 -0
  16. data/schemas/credential.json +31 -1
  17. data/schemas/credentialPatch.json +28 -0
  18. data/schemas/credentialPost.json +35 -1
  19. data/schemas/credentials.json +31 -1
  20. data/schemas/dashboard.json +6 -0
  21. data/schemas/dashboardPatch.json +6 -0
  22. data/schemas/dashboardPost.json +6 -0
  23. data/schemas/dashboards.json +6 -0
  24. data/schemas/dataExport.json +1 -0
  25. data/schemas/devicesRemoveDataPost.json +2 -2
  26. data/schemas/githubLogin.json +1 -0
  27. data/schemas/historicalSummaries.json +16 -0
  28. data/schemas/historicalSummary.json +16 -0
  29. data/schemas/importIntoApplicationOptions.json +4 -0
  30. data/schemas/instance.json +21 -0
  31. data/schemas/instanceOrg.json +264 -0
  32. data/schemas/instanceOrgPatch.json +21 -0
  33. data/schemas/instanceOrgPost.json +21 -0
  34. data/schemas/instanceOrgs.json +264 -0
  35. data/schemas/instancePatch.json +21 -0
  36. data/schemas/instanceSandbox.json +46 -2
  37. data/schemas/instanceSandboxes.json +46 -2
  38. data/schemas/instances.json +21 -0
  39. data/schemas/me.json +46 -2
  40. data/schemas/multiFactorAuthDisable.json +20 -0
  41. data/schemas/multiFactorAuthEnable.json +25 -0
  42. data/schemas/multiFactorAuthInfo.json +15 -0
  43. data/schemas/org.json +55 -5
  44. data/schemas/orgPatch.json +8 -0
  45. data/schemas/orgPost.json +8 -0
  46. data/schemas/orgs.json +55 -5
  47. data/schemas/samlResponse.json +1 -0
  48. data/schemas/timeSeriesData.json +35 -2
  49. data/schemas/userCredentials.json +1 -0
  50. data/schemas/userPost.json +8 -0
  51. metadata +6 -2
data/docs/application.md CHANGED
@@ -18,6 +18,7 @@ parameters and the potential responses.
18
18
  * [Get](#get)
19
19
  * [Globals](#globals)
20
20
  * [Import](#import)
21
+ * [Import Logs](#import-logs)
21
22
  * [Mqtt Publish Message](#mqtt-publish-message)
22
23
  * [Notebook Minute Counts](#notebook-minute-counts)
23
24
  * [Patch](#patch)
@@ -499,6 +500,45 @@ all.Application, all.Organization, all.User, application.*, or application.impor
499
500
 
500
501
  <br/>
501
502
 
503
+ ## Import Logs
504
+
505
+ Retrieves information on application import logs
506
+
507
+ ```ruby
508
+ result = client.application.import_logs(applicationId: my_application_id)
509
+
510
+ puts result
511
+ ```
512
+
513
+ #### Authentication
514
+ The client must be configured with a valid api access token to call this
515
+ action. The token must include at least one of the following scopes:
516
+ all.Application, all.Application.read, all.Organization, all.Organization.read, all.User, all.User.read, application.*, or application.importLogs.
517
+
518
+ #### Available Parameters
519
+
520
+ | Name | Type | Required | Description | Default | Example |
521
+ | ---- | ---- | -------- | ----------- | ------- | ------- |
522
+ | applicationId | string | Y | ID of the associated application | | 575ec8687ae143cd83dc4a97 |
523
+ | limit | string | N | Max log entries to return (ordered by time descending) | 1 | 10 |
524
+ | since | string | N | Look for log entries since this time (ms since epoch) | | 1465790400000 |
525
+ | losantdomain | string | N | Domain scope of request (rarely needed) | | example.com |
526
+
527
+ #### Successful Responses
528
+
529
+ | Code | Type | Description |
530
+ | ---- | ---- | ----------- |
531
+ | 200 | [Application Import Executions](_schemas.md#application-import-executions) | Application log objects |
532
+
533
+ #### Error Responses
534
+
535
+ | Code | Type | Description |
536
+ | ---- | ---- | ----------- |
537
+ | 400 | [Error](_schemas.md#error) | Error if malformed request |
538
+ | 404 | [Error](_schemas.md#error) | Error if application was not found |
539
+
540
+ <br/>
541
+
502
542
  ## Mqtt Publish Message
503
543
 
504
544
  Publishes the given message to the given MQTT topic
data/docs/me.md CHANGED
@@ -176,7 +176,7 @@ all.User, all.User.read, me.*, or me.deviceCounts.
176
176
 
177
177
  ## Disable Two Factor Auth
178
178
 
179
- Disables two factor auth for the current user
179
+ Disables multi-factor authentication for the current user
180
180
 
181
181
  ```ruby
182
182
  result = client.me.disable_two_factor_auth(data: my_data)
@@ -193,7 +193,7 @@ all.User, me.*, or me.disableTwoFactorAuth.
193
193
 
194
194
  | Name | Type | Required | Description | Default | Example |
195
195
  | ---- | ---- | -------- | ----------- | ------- | ------- |
196
- | data | [Disable Two Factor Auth](_schemas.md#disable-two-factor-auth) | Y | Object containing two factor auth properties | | [Disable Two Factor Auth Example](_schemas.md#disable-two-factor-auth-example) |
196
+ | data | [Disable Multi-Factor Authentication](_schemas.md#disable-multi-factor-authentication) | Y | Object containing multi-factor authentication properties | | [Disable Multi-Factor Authentication Example](_schemas.md#disable-multi-factor-authentication-example) |
197
197
  | losantdomain | string | N | Domain scope of request (rarely needed) | | example.com |
198
198
 
199
199
  #### Successful Responses
@@ -247,7 +247,7 @@ all.User, me.*, or me.disconnectGithub.
247
247
 
248
248
  ## Enable Two Factor Auth
249
249
 
250
- Enables two factor auth for the current user
250
+ Enables multi-factor authentication for the current user
251
251
 
252
252
  ```ruby
253
253
  result = client.me.enable_two_factor_auth(data: my_data)
@@ -264,7 +264,7 @@ all.User, me.*, or me.enableTwoFactorAuth.
264
264
 
265
265
  | Name | Type | Required | Description | Default | Example |
266
266
  | ---- | ---- | -------- | ----------- | ------- | ------- |
267
- | data | [Enable Two Factor Auth](_schemas.md#enable-two-factor-auth) | Y | Object containing two factor auth properties | | [Enable Two Factor Auth Example](_schemas.md#enable-two-factor-auth-example) |
267
+ | data | [Enable Multi-Factor Authentication](_schemas.md#enable-multi-factor-authentication) | Y | Object containing multi-factor authentication properties | | [Enable Multi-Factor Authentication Example](_schemas.md#enable-multi-factor-authentication-example) |
268
268
  | losantdomain | string | N | Domain scope of request (rarely needed) | | example.com |
269
269
 
270
270
  #### Successful Responses
@@ -320,7 +320,7 @@ all.User, all.User.read, me.*, or me.fetchRecentItems.
320
320
 
321
321
  ## Generate Two Factor Auth
322
322
 
323
- Returns the two factor auth key for a user
323
+ Returns the multi-factor authentication key for the current user
324
324
 
325
325
  ```ruby
326
326
  result = client.me.generate_two_factor_auth(optional_params)
@@ -343,7 +343,7 @@ all.User, me.*, or me.generateTwoFactorAuth.
343
343
 
344
344
  | Code | Type | Description |
345
345
  | ---- | ---- | ----------- |
346
- | 200 | [Two Factor Auth Info](_schemas.md#two-factor-auth-info) | Updated user information |
346
+ | 200 | [Multi-Factor Authentication Info](_schemas.md#multi-factor-authentication-info) | Multi-factor authentication info |
347
347
 
348
348
  #### Error Responses
349
349
 
@@ -21,5 +21,5 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  module LosantRest
24
- VERSION = "1.19.1"
24
+ VERSION = "1.19.3"
25
25
  end
@@ -542,6 +542,54 @@ module PlatformRest
542
542
  body: body)
543
543
  end
544
544
 
545
+ # Retrieves information on application import logs
546
+ #
547
+ # Authentication:
548
+ # The client must be configured with a valid api
549
+ # access token to call this action. The token
550
+ # must include at least one of the following scopes:
551
+ # all.Application, all.Application.read, all.Organization, all.Organization.read, all.User, all.User.read, application.*, or application.importLogs.
552
+ #
553
+ # Parameters:
554
+ # * {string} applicationId - ID of the associated application
555
+ # * {string} limit - Max log entries to return (ordered by time descending)
556
+ # * {string} since - Look for log entries since this time (ms since epoch)
557
+ # * {string} losantdomain - Domain scope of request (rarely needed)
558
+ # * {boolean} _actions - Return resource actions in response
559
+ # * {boolean} _links - Return resource link in response
560
+ # * {boolean} _embedded - Return embedded resources in response
561
+ #
562
+ # Responses:
563
+ # * 200 - Application log objects (https://api.losant.com/#/definitions/applicationImportExecutions)
564
+ #
565
+ # Errors:
566
+ # * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
567
+ # * 404 - Error if application was not found (https://api.losant.com/#/definitions/error)
568
+ def import_logs(params = {})
569
+ params = Utils.symbolize_hash_keys(params)
570
+ query_params = { _actions: false, _links: true, _embedded: true }
571
+ headers = {}
572
+ body = nil
573
+
574
+ raise ArgumentError.new("applicationId is required") unless params.has_key?(:applicationId)
575
+
576
+ query_params[:limit] = params[:limit] if params.has_key?(:limit)
577
+ query_params[:since] = params[:since] if params.has_key?(:since)
578
+ headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
579
+ query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
580
+ query_params[:_links] = params[:_links] if params.has_key?(:_links)
581
+ query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
582
+
583
+ path = "/applications/#{params[:applicationId]}/importLogs"
584
+
585
+ @client.request(
586
+ method: :get,
587
+ path: path,
588
+ query: query_params,
589
+ headers: headers,
590
+ body: body)
591
+ end
592
+
545
593
  # Publishes the given message to the given MQTT topic
546
594
  #
547
595
  # Authentication:
@@ -27,7 +27,7 @@ module PlatformRest
27
27
  #
28
28
  # User API for accessing platform data
29
29
  #
30
- # Built For Version 1.26.1
30
+ # Built For Version 1.26.3
31
31
  class Client
32
32
  attr_accessor :auth_token, :url
33
33
 
@@ -390,7 +390,7 @@ module PlatformRest
390
390
 
391
391
  headers["Accept"] = "application/json"
392
392
  headers["Content-Type"] = "application/json"
393
- headers["Accept-Version"] = "^1.26.1"
393
+ headers["Accept-Version"] = "^1.26.3"
394
394
  headers["Authorization"] = "Bearer #{self.auth_token}" if self.auth_token
395
395
  path = self.url + options.fetch(:path, "")
396
396
 
@@ -208,7 +208,7 @@ module PlatformRest
208
208
  body: body)
209
209
  end
210
210
 
211
- # Disables two factor auth for the current user
211
+ # Disables multi-factor authentication for the current user
212
212
  #
213
213
  # Authentication:
214
214
  # The client must be configured with a valid api
@@ -217,7 +217,7 @@ module PlatformRest
217
217
  # all.User, me.*, or me.disableTwoFactorAuth.
218
218
  #
219
219
  # Parameters:
220
- # * {hash} data - Object containing two factor auth properties (https://api.losant.com/#/definitions/disableTwoFactorAuth)
220
+ # * {hash} data - Object containing multi-factor authentication properties (https://api.losant.com/#/definitions/multiFactorAuthDisable)
221
221
  # * {string} losantdomain - Domain scope of request (rarely needed)
222
222
  # * {boolean} _actions - Return resource actions in response
223
223
  # * {boolean} _links - Return resource link in response
@@ -293,7 +293,7 @@ module PlatformRest
293
293
  body: body)
294
294
  end
295
295
 
296
- # Enables two factor auth for the current user
296
+ # Enables multi-factor authentication for the current user
297
297
  #
298
298
  # Authentication:
299
299
  # The client must be configured with a valid api
@@ -302,7 +302,7 @@ module PlatformRest
302
302
  # all.User, me.*, or me.enableTwoFactorAuth.
303
303
  #
304
304
  # Parameters:
305
- # * {hash} data - Object containing two factor auth properties (https://api.losant.com/#/definitions/enableTwoFactorAuth)
305
+ # * {hash} data - Object containing multi-factor authentication properties (https://api.losant.com/#/definitions/multiFactorAuthEnable)
306
306
  # * {string} losantdomain - Domain scope of request (rarely needed)
307
307
  # * {boolean} _actions - Return resource actions in response
308
308
  # * {boolean} _links - Return resource link in response
@@ -383,7 +383,7 @@ module PlatformRest
383
383
  body: body)
384
384
  end
385
385
 
386
- # Returns the two factor auth key for a user
386
+ # Returns the multi-factor authentication key for the current user
387
387
  #
388
388
  # Authentication:
389
389
  # The client must be configured with a valid api
@@ -398,7 +398,7 @@ module PlatformRest
398
398
  # * {boolean} _embedded - Return embedded resources in response
399
399
  #
400
400
  # Responses:
401
- # * 200 - Updated user information (https://api.losant.com/#/definitions/twoFactorAuthInfo)
401
+ # * 200 - Multi-factor authentication info (https://api.losant.com/#/definitions/multiFactorAuthInfo)
402
402
  #
403
403
  # Errors:
404
404
  # * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
@@ -106,6 +106,7 @@
106
106
  "application.deviceCounts",
107
107
  "application.notebookMinuteCounts",
108
108
  "application.search",
109
+ "application.importLogs",
109
110
  "applicationApiToken.delete",
110
111
  "applicationApiToken.get",
111
112
  "applicationApiToken.patch",
@@ -110,9 +110,18 @@
110
110
  "apiTokenCount": {
111
111
  "type": "integer"
112
112
  },
113
+ "certificateCount": {
114
+ "type": "integer"
115
+ },
116
+ "certificateAuthorityCount": {
117
+ "type": "integer"
118
+ },
113
119
  "credentialCount": {
114
120
  "type": "integer"
115
121
  },
122
+ "dashCount": {
123
+ "type": "integer"
124
+ },
116
125
  "dataTableCount": {
117
126
  "type": "integer"
118
127
  },
@@ -158,6 +167,150 @@
158
167
  "keyCount": {
159
168
  "type": "integer"
160
169
  },
170
+ "notebookCount": {
171
+ "type": "integer"
172
+ },
173
+ "resourceJobCount": {
174
+ "type": "integer"
175
+ },
176
+ "webhookCount": {
177
+ "type": "integer"
178
+ },
179
+ "payloadCount": {
180
+ "title": "Payload Stats",
181
+ "description": "Schema for the result of a payload stats request",
182
+ "type": "object",
183
+ "properties": {
184
+ "dataTable": {
185
+ "type": "object",
186
+ "patternProperties": {
187
+ ".*": {
188
+ "type": "number"
189
+ }
190
+ }
191
+ },
192
+ "deviceCommand": {
193
+ "type": "object",
194
+ "patternProperties": {
195
+ ".*": {
196
+ "type": "number"
197
+ }
198
+ }
199
+ },
200
+ "deviceConnect": {
201
+ "type": "object",
202
+ "patternProperties": {
203
+ ".*": {
204
+ "type": "number"
205
+ }
206
+ }
207
+ },
208
+ "deviceDisconnect": {
209
+ "type": "object",
210
+ "patternProperties": {
211
+ ".*": {
212
+ "type": "number"
213
+ }
214
+ }
215
+ },
216
+ "deviceState": {
217
+ "type": "object",
218
+ "patternProperties": {
219
+ ".*": {
220
+ "type": "number"
221
+ }
222
+ }
223
+ },
224
+ "endpoint": {
225
+ "type": "object",
226
+ "patternProperties": {
227
+ ".*": {
228
+ "type": "number"
229
+ }
230
+ }
231
+ },
232
+ "event": {
233
+ "type": "object",
234
+ "patternProperties": {
235
+ ".*": {
236
+ "type": "number"
237
+ }
238
+ }
239
+ },
240
+ "flowError": {
241
+ "type": "object",
242
+ "patternProperties": {
243
+ ".*": {
244
+ "type": "number"
245
+ }
246
+ }
247
+ },
248
+ "integration": {
249
+ "type": "object",
250
+ "patternProperties": {
251
+ ".*": {
252
+ "type": "number"
253
+ }
254
+ }
255
+ },
256
+ "mqttIn": {
257
+ "type": "object",
258
+ "patternProperties": {
259
+ ".*": {
260
+ "type": "number"
261
+ }
262
+ }
263
+ },
264
+ "mqttOut": {
265
+ "type": "object",
266
+ "patternProperties": {
267
+ ".*": {
268
+ "type": "number"
269
+ }
270
+ }
271
+ },
272
+ "notebook": {
273
+ "type": "object",
274
+ "patternProperties": {
275
+ ".*": {
276
+ "type": "number"
277
+ }
278
+ }
279
+ },
280
+ "timer": {
281
+ "type": "object",
282
+ "patternProperties": {
283
+ ".*": {
284
+ "type": "number"
285
+ }
286
+ }
287
+ },
288
+ "virtualButton": {
289
+ "type": "object",
290
+ "patternProperties": {
291
+ ".*": {
292
+ "type": "number"
293
+ }
294
+ }
295
+ },
296
+ "webhook": {
297
+ "type": "object",
298
+ "patternProperties": {
299
+ ".*": {
300
+ "type": "number"
301
+ }
302
+ }
303
+ },
304
+ "resourceJob": {
305
+ "type": "object",
306
+ "patternProperties": {
307
+ ".*": {
308
+ "type": "number"
309
+ }
310
+ }
311
+ }
312
+ }
313
+ },
161
314
  "storageStats": {
162
315
  "type": "object",
163
316
  "properties": {
@@ -169,8 +322,19 @@
169
322
  }
170
323
  }
171
324
  },
172
- "webhookCount": {
173
- "type": "integer"
325
+ "notebookStats": {
326
+ "type": "object",
327
+ "properties": {
328
+ "awaitingCompletion": {
329
+ "type": "integer"
330
+ },
331
+ "minutesThisPeriod": {
332
+ "type": "integer"
333
+ },
334
+ "runsThisPeriod": {
335
+ "type": "integer"
336
+ }
337
+ }
174
338
  }
175
339
  }
176
340
  },
@@ -115,9 +115,18 @@
115
115
  "apiTokenCount": {
116
116
  "type": "integer"
117
117
  },
118
+ "certificateCount": {
119
+ "type": "integer"
120
+ },
121
+ "certificateAuthorityCount": {
122
+ "type": "integer"
123
+ },
118
124
  "credentialCount": {
119
125
  "type": "integer"
120
126
  },
127
+ "dashCount": {
128
+ "type": "integer"
129
+ },
121
130
  "dataTableCount": {
122
131
  "type": "integer"
123
132
  },
@@ -163,6 +172,150 @@
163
172
  "keyCount": {
164
173
  "type": "integer"
165
174
  },
175
+ "notebookCount": {
176
+ "type": "integer"
177
+ },
178
+ "resourceJobCount": {
179
+ "type": "integer"
180
+ },
181
+ "webhookCount": {
182
+ "type": "integer"
183
+ },
184
+ "payloadCount": {
185
+ "title": "Payload Stats",
186
+ "description": "Schema for the result of a payload stats request",
187
+ "type": "object",
188
+ "properties": {
189
+ "dataTable": {
190
+ "type": "object",
191
+ "patternProperties": {
192
+ ".*": {
193
+ "type": "number"
194
+ }
195
+ }
196
+ },
197
+ "deviceCommand": {
198
+ "type": "object",
199
+ "patternProperties": {
200
+ ".*": {
201
+ "type": "number"
202
+ }
203
+ }
204
+ },
205
+ "deviceConnect": {
206
+ "type": "object",
207
+ "patternProperties": {
208
+ ".*": {
209
+ "type": "number"
210
+ }
211
+ }
212
+ },
213
+ "deviceDisconnect": {
214
+ "type": "object",
215
+ "patternProperties": {
216
+ ".*": {
217
+ "type": "number"
218
+ }
219
+ }
220
+ },
221
+ "deviceState": {
222
+ "type": "object",
223
+ "patternProperties": {
224
+ ".*": {
225
+ "type": "number"
226
+ }
227
+ }
228
+ },
229
+ "endpoint": {
230
+ "type": "object",
231
+ "patternProperties": {
232
+ ".*": {
233
+ "type": "number"
234
+ }
235
+ }
236
+ },
237
+ "event": {
238
+ "type": "object",
239
+ "patternProperties": {
240
+ ".*": {
241
+ "type": "number"
242
+ }
243
+ }
244
+ },
245
+ "flowError": {
246
+ "type": "object",
247
+ "patternProperties": {
248
+ ".*": {
249
+ "type": "number"
250
+ }
251
+ }
252
+ },
253
+ "integration": {
254
+ "type": "object",
255
+ "patternProperties": {
256
+ ".*": {
257
+ "type": "number"
258
+ }
259
+ }
260
+ },
261
+ "mqttIn": {
262
+ "type": "object",
263
+ "patternProperties": {
264
+ ".*": {
265
+ "type": "number"
266
+ }
267
+ }
268
+ },
269
+ "mqttOut": {
270
+ "type": "object",
271
+ "patternProperties": {
272
+ ".*": {
273
+ "type": "number"
274
+ }
275
+ }
276
+ },
277
+ "notebook": {
278
+ "type": "object",
279
+ "patternProperties": {
280
+ ".*": {
281
+ "type": "number"
282
+ }
283
+ }
284
+ },
285
+ "timer": {
286
+ "type": "object",
287
+ "patternProperties": {
288
+ ".*": {
289
+ "type": "number"
290
+ }
291
+ }
292
+ },
293
+ "virtualButton": {
294
+ "type": "object",
295
+ "patternProperties": {
296
+ ".*": {
297
+ "type": "number"
298
+ }
299
+ }
300
+ },
301
+ "webhook": {
302
+ "type": "object",
303
+ "patternProperties": {
304
+ ".*": {
305
+ "type": "number"
306
+ }
307
+ }
308
+ },
309
+ "resourceJob": {
310
+ "type": "object",
311
+ "patternProperties": {
312
+ ".*": {
313
+ "type": "number"
314
+ }
315
+ }
316
+ }
317
+ }
318
+ },
166
319
  "storageStats": {
167
320
  "type": "object",
168
321
  "properties": {
@@ -174,8 +327,19 @@
174
327
  }
175
328
  }
176
329
  },
177
- "webhookCount": {
178
- "type": "integer"
330
+ "notebookStats": {
331
+ "type": "object",
332
+ "properties": {
333
+ "awaitingCompletion": {
334
+ "type": "integer"
335
+ },
336
+ "minutesThisPeriod": {
337
+ "type": "integer"
338
+ },
339
+ "runsThisPeriod": {
340
+ "type": "integer"
341
+ }
342
+ }
179
343
  }
180
344
  }
181
345
  },
@@ -880,6 +880,9 @@
880
880
  "vega4",
881
881
  "vega5"
882
882
  ]
883
+ },
884
+ "tooltipEventSubscribe": {
885
+ "type": "boolean"
883
886
  }
884
887
  },
885
888
  "additionalProperties": false
@@ -2176,6 +2179,9 @@
2176
2179
  "realTime": {
2177
2180
  "type": "boolean"
2178
2181
  },
2182
+ "hideLegend": {
2183
+ "type": "boolean"
2184
+ },
2179
2185
  "disallowUserSelectedDuration": {
2180
2186
  "type": "boolean"
2181
2187
  },