losant_rest 1.17.5 → 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/docs/_schemas.md +707 -99
  3. data/docs/application.md +43 -0
  4. data/docs/applicationDashboards.md +1 -1
  5. data/docs/dashboards.md +1 -1
  6. data/docs/device.md +44 -0
  7. data/docs/devices.md +46 -0
  8. data/docs/instance.md +43 -0
  9. data/docs/instanceOrg.md +46 -0
  10. data/docs/me.md +41 -0
  11. data/docs/org.md +43 -0
  12. data/lib/losant_rest/application.rb +54 -0
  13. data/lib/losant_rest/application_dashboards.rb +1 -1
  14. data/lib/losant_rest/client.rb +2 -2
  15. data/lib/losant_rest/dashboards.rb +1 -1
  16. data/lib/losant_rest/device.rb +52 -0
  17. data/lib/losant_rest/devices.rb +61 -0
  18. data/lib/losant_rest/instance.rb +54 -0
  19. data/lib/losant_rest/instance_org.rb +56 -0
  20. data/lib/losant_rest/me.rb +51 -0
  21. data/lib/losant_rest/org.rb +54 -0
  22. data/lib/losant_rest/version.rb +1 -1
  23. data/schemas/advancedFlowQuery.json +103 -0
  24. data/schemas/advancedFlowVersionQuery.json +103 -0
  25. data/schemas/apiTokenPost.json +7 -0
  26. data/schemas/compositeDevicesState.json +97 -0
  27. data/schemas/deviceCredentials.json +1 -0
  28. data/schemas/edgeDeployment.json +7 -0
  29. data/schemas/edgeDeployments.json +7 -0
  30. data/schemas/experienceLinkedResources.json +3 -1
  31. data/schemas/flow.json +3 -1
  32. data/schemas/flowPost.json +3 -1
  33. data/schemas/flowVersionsDeletePost.json +103 -0
  34. data/schemas/flows.json +3 -1
  35. data/schemas/flowsImportPost.json +3 -1
  36. data/schemas/flowsImportResult.json +3 -1
  37. data/schemas/githubLogin.json +7 -0
  38. data/schemas/instanceCustomNode.json +1 -0
  39. data/schemas/instanceCustomNodePatch.json +1 -0
  40. data/schemas/instanceCustomNodePost.json +1 -0
  41. data/schemas/instanceCustomNodes.json +1 -0
  42. data/schemas/lastValueQuery.json +3 -0
  43. data/schemas/notebookExecutionOptions.json +10 -0
  44. data/schemas/payloadCountsBreakdown.json +53 -0
  45. data/schemas/samlResponse.json +7 -0
  46. data/schemas/userCredentials.json +7 -0
  47. data/schemas/userPost.json +7 -0
  48. metadata +4 -2
@@ -319,5 +319,59 @@ module LosantRest
319
319
  body: body)
320
320
  end
321
321
 
322
+ # Returns payload counts per resolution in the time range specified for this instance
323
+ #
324
+ # Authentication:
325
+ # The client must be configured with a valid api
326
+ # access token to call this action. The token
327
+ # must include at least one of the following scopes:
328
+ # all.Instance, all.Instance.read, all.User, all.User.read, instance.*, or instance.payloadCountsBreakdown.
329
+ #
330
+ # Parameters:
331
+ # * {string} instanceId - ID associated with the instance
332
+ # * {string} start - Start of range for payload count query (ms since epoch)
333
+ # * {string} end - End of range for payload count query (ms since epoch)
334
+ # * {string} resolution - Resolution in milliseconds. Accepted values are: 86400000, 3600000
335
+ # * {string} asBytes - If the resulting stats should be returned as bytes
336
+ # * {string} includeNonBillable - If non-billable payloads should be included in the result
337
+ # * {string} losantdomain - Domain scope of request (rarely needed)
338
+ # * {boolean} _actions - Return resource actions in response
339
+ # * {boolean} _links - Return resource link in response
340
+ # * {boolean} _embedded - Return embedded resources in response
341
+ #
342
+ # Responses:
343
+ # * 200 - Sum of payload counts by date (https://api.losant.com/#/definitions/payloadCountsBreakdown)
344
+ #
345
+ # Errors:
346
+ # * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
347
+ # * 404 - Error if instance was not found (https://api.losant.com/#/definitions/error)
348
+ def payload_counts_breakdown(params = {})
349
+ params = Utils.symbolize_hash_keys(params)
350
+ query_params = { _actions: false, _links: true, _embedded: true }
351
+ headers = {}
352
+ body = nil
353
+
354
+ raise ArgumentError.new("instanceId is required") unless params.has_key?(:instanceId)
355
+
356
+ query_params[:start] = params[:start] if params.has_key?(:start)
357
+ query_params[:end] = params[:end] if params.has_key?(:end)
358
+ query_params[:resolution] = params[:resolution] if params.has_key?(:resolution)
359
+ query_params[:asBytes] = params[:asBytes] if params.has_key?(:asBytes)
360
+ query_params[:includeNonBillable] = params[:includeNonBillable] if params.has_key?(:includeNonBillable)
361
+ headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
362
+ query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
363
+ query_params[:_links] = params[:_links] if params.has_key?(:_links)
364
+ query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
365
+
366
+ path = "/instances/#{params[:instanceId]}/payloadCountsBreakdown"
367
+
368
+ @client.request(
369
+ method: :get,
370
+ path: path,
371
+ query: query_params,
372
+ headers: headers,
373
+ body: body)
374
+ end
375
+
322
376
  end
323
377
  end
@@ -276,5 +276,61 @@ module LosantRest
276
276
  body: body)
277
277
  end
278
278
 
279
+ # Returns payload counts per resolution in the time range specified for all application this organization owns
280
+ #
281
+ # Authentication:
282
+ # The client must be configured with a valid api
283
+ # access token to call this action. The token
284
+ # must include at least one of the following scopes:
285
+ # all.Instance, all.Instance.read, all.User, all.User.read, instanceOrg.*, or instanceOrg.payloadCountsBreakdown.
286
+ #
287
+ # Parameters:
288
+ # * {string} instanceId - ID associated with the instance
289
+ # * {string} orgId - ID associated with the organization
290
+ # * {string} start - Start of range for payload count query (ms since epoch)
291
+ # * {string} end - End of range for payload count query (ms since epoch)
292
+ # * {string} resolution - Resolution in milliseconds. Accepted values are: 86400000, 3600000
293
+ # * {string} asBytes - If the resulting stats should be returned as bytes
294
+ # * {string} includeNonBillable - If non-billable payloads should be included in the result
295
+ # * {string} losantdomain - Domain scope of request (rarely needed)
296
+ # * {boolean} _actions - Return resource actions in response
297
+ # * {boolean} _links - Return resource link in response
298
+ # * {boolean} _embedded - Return embedded resources in response
299
+ #
300
+ # Responses:
301
+ # * 200 - Payload counts, by type and source (https://api.losant.com/#/definitions/payloadCountsBreakdown)
302
+ #
303
+ # Errors:
304
+ # * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
305
+ # * 404 - Error if instance was not found (https://api.losant.com/#/definitions/error)
306
+ def payload_counts_breakdown(params = {})
307
+ params = Utils.symbolize_hash_keys(params)
308
+ query_params = { _actions: false, _links: true, _embedded: true }
309
+ headers = {}
310
+ body = nil
311
+
312
+ raise ArgumentError.new("instanceId is required") unless params.has_key?(:instanceId)
313
+ raise ArgumentError.new("orgId is required") unless params.has_key?(:orgId)
314
+
315
+ query_params[:start] = params[:start] if params.has_key?(:start)
316
+ query_params[:end] = params[:end] if params.has_key?(:end)
317
+ query_params[:resolution] = params[:resolution] if params.has_key?(:resolution)
318
+ query_params[:asBytes] = params[:asBytes] if params.has_key?(:asBytes)
319
+ query_params[:includeNonBillable] = params[:includeNonBillable] if params.has_key?(:includeNonBillable)
320
+ headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
321
+ query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
322
+ query_params[:_links] = params[:_links] if params.has_key?(:_links)
323
+ query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
324
+
325
+ path = "/instances/#{params[:instanceId]}/orgs/#{params[:orgId]}/payloadCountsBreakdown"
326
+
327
+ @client.request(
328
+ method: :get,
329
+ path: path,
330
+ query: query_params,
331
+ headers: headers,
332
+ body: body)
333
+ end
334
+
279
335
  end
280
336
  end
@@ -608,6 +608,57 @@ module LosantRest
608
608
  body: body)
609
609
  end
610
610
 
611
+ # Returns payload counts per resolution in the time range specified for all applications the current user owns
612
+ #
613
+ # Authentication:
614
+ # The client must be configured with a valid api
615
+ # access token to call this action. The token
616
+ # must include at least one of the following scopes:
617
+ # all.User, all.User.read, me.*, or me.payloadCountsBreakdown.
618
+ #
619
+ # Parameters:
620
+ # * {string} start - Start of range for payload count query (ms since epoch)
621
+ # * {string} end - End of range for payload count query (ms since epoch)
622
+ # * {string} resolution - Resolution in milliseconds. Accepted values are: 86400000, 3600000
623
+ # * {string} asBytes - If the resulting stats should be returned as bytes
624
+ # * {string} includeNonBillable - If non-billable payloads should be included in the result
625
+ # * {string} losantdomain - Domain scope of request (rarely needed)
626
+ # * {boolean} _actions - Return resource actions in response
627
+ # * {boolean} _links - Return resource link in response
628
+ # * {boolean} _embedded - Return embedded resources in response
629
+ #
630
+ # Responses:
631
+ # * 200 - Sum of payload counts by date (https://api.losant.com/#/definitions/payloadCountsBreakdown)
632
+ #
633
+ # Errors:
634
+ # * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
635
+ def payload_counts_breakdown(params = {})
636
+ params = Utils.symbolize_hash_keys(params)
637
+ query_params = { _actions: false, _links: true, _embedded: true }
638
+ headers = {}
639
+ body = nil
640
+
641
+
642
+ query_params[:start] = params[:start] if params.has_key?(:start)
643
+ query_params[:end] = params[:end] if params.has_key?(:end)
644
+ query_params[:resolution] = params[:resolution] if params.has_key?(:resolution)
645
+ query_params[:asBytes] = params[:asBytes] if params.has_key?(:asBytes)
646
+ query_params[:includeNonBillable] = params[:includeNonBillable] if params.has_key?(:includeNonBillable)
647
+ headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
648
+ query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
649
+ query_params[:_links] = params[:_links] if params.has_key?(:_links)
650
+ query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
651
+
652
+ path = "/me/payloadCountsBreakdown"
653
+
654
+ @client.request(
655
+ method: :get,
656
+ path: path,
657
+ query: query_params,
658
+ headers: headers,
659
+ body: body)
660
+ end
661
+
611
662
  # Returns a new auth token based on the current auth token
612
663
  #
613
664
  # Authentication:
@@ -416,6 +416,60 @@ module LosantRest
416
416
  body: body)
417
417
  end
418
418
 
419
+ # Returns payload counts per resolution in the time range specified for all application this organization owns
420
+ #
421
+ # Authentication:
422
+ # The client must be configured with a valid api
423
+ # access token to call this action. The token
424
+ # must include at least one of the following scopes:
425
+ # all.Organization, all.Organization.read, all.User, all.User.read, org.*, or org.payloadCountsBreakdown.
426
+ #
427
+ # Parameters:
428
+ # * {string} orgId - ID associated with the organization
429
+ # * {string} start - Start of range for payload count query (ms since epoch)
430
+ # * {string} end - End of range for payload count query (ms since epoch)
431
+ # * {string} resolution - Resolution in milliseconds. Accepted values are: 86400000, 3600000
432
+ # * {string} asBytes - If the resulting stats should be returned as bytes
433
+ # * {string} includeNonBillable - If non-billable payloads should be included in the result
434
+ # * {string} losantdomain - Domain scope of request (rarely needed)
435
+ # * {boolean} _actions - Return resource actions in response
436
+ # * {boolean} _links - Return resource link in response
437
+ # * {boolean} _embedded - Return embedded resources in response
438
+ #
439
+ # Responses:
440
+ # * 200 - Sum of payload counts by date (https://api.losant.com/#/definitions/payloadCountsBreakdown)
441
+ #
442
+ # Errors:
443
+ # * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
444
+ # * 404 - Error if organization was not found (https://api.losant.com/#/definitions/error)
445
+ def payload_counts_breakdown(params = {})
446
+ params = Utils.symbolize_hash_keys(params)
447
+ query_params = { _actions: false, _links: true, _embedded: true }
448
+ headers = {}
449
+ body = nil
450
+
451
+ raise ArgumentError.new("orgId is required") unless params.has_key?(:orgId)
452
+
453
+ query_params[:start] = params[:start] if params.has_key?(:start)
454
+ query_params[:end] = params[:end] if params.has_key?(:end)
455
+ query_params[:resolution] = params[:resolution] if params.has_key?(:resolution)
456
+ query_params[:asBytes] = params[:asBytes] if params.has_key?(:asBytes)
457
+ query_params[:includeNonBillable] = params[:includeNonBillable] if params.has_key?(:includeNonBillable)
458
+ headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
459
+ query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
460
+ query_params[:_links] = params[:_links] if params.has_key?(:_links)
461
+ query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
462
+
463
+ path = "/orgs/#{params[:orgId]}/payloadCountsBreakdown"
464
+
465
+ @client.request(
466
+ method: :get,
467
+ path: path,
468
+ query: query_params,
469
+ headers: headers,
470
+ body: body)
471
+ end
472
+
419
473
  # Gets the current pending invites
420
474
  #
421
475
  # Authentication:
@@ -21,5 +21,5 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  module LosantRest
24
- VERSION = "1.17.5"
24
+ VERSION = "1.18.0"
25
25
  end
@@ -965,6 +965,109 @@
965
965
  "additionalProperties": false
966
966
  }
967
967
  ]
968
+ },
969
+ "customNodeSupports": {
970
+ "oneOf": [
971
+ {
972
+ "type": [
973
+ "string",
974
+ "number",
975
+ "boolean",
976
+ "null"
977
+ ]
978
+ },
979
+ {
980
+ "type": "object",
981
+ "properties": {
982
+ "$eq": {
983
+ "type": [
984
+ "string",
985
+ "number",
986
+ "boolean",
987
+ "null"
988
+ ]
989
+ },
990
+ "$ne": {
991
+ "type": [
992
+ "string",
993
+ "number",
994
+ "boolean",
995
+ "null"
996
+ ]
997
+ },
998
+ "$gt": {
999
+ "type": [
1000
+ "string",
1001
+ "number",
1002
+ "boolean",
1003
+ "null"
1004
+ ]
1005
+ },
1006
+ "$lt": {
1007
+ "type": [
1008
+ "string",
1009
+ "number",
1010
+ "boolean",
1011
+ "null"
1012
+ ]
1013
+ },
1014
+ "$gte": {
1015
+ "type": [
1016
+ "string",
1017
+ "number",
1018
+ "boolean",
1019
+ "null"
1020
+ ]
1021
+ },
1022
+ "$lte": {
1023
+ "type": [
1024
+ "string",
1025
+ "number",
1026
+ "boolean",
1027
+ "null"
1028
+ ]
1029
+ },
1030
+ "$startsWith": {
1031
+ "type": "string",
1032
+ "minLength": 1
1033
+ },
1034
+ "$endsWith": {
1035
+ "type": "string",
1036
+ "minLength": 1
1037
+ },
1038
+ "$contains": {
1039
+ "type": "string",
1040
+ "minLength": 1
1041
+ },
1042
+ "$ci": {
1043
+ "type": "boolean"
1044
+ },
1045
+ "$in": {
1046
+ "type": "array",
1047
+ "maxItems": 100,
1048
+ "items": {
1049
+ "type": [
1050
+ "string",
1051
+ "number",
1052
+ "boolean"
1053
+ ]
1054
+ }
1055
+ },
1056
+ "$nin": {
1057
+ "type": "array",
1058
+ "maxItems": 100,
1059
+ "items": {
1060
+ "type": [
1061
+ "string",
1062
+ "number",
1063
+ "boolean"
1064
+ ]
1065
+ }
1066
+ }
1067
+ },
1068
+ "additionalProperties": false
1069
+ }
1070
+ ]
968
1071
  }
969
1072
  },
970
1073
  "additionalProperties": false
@@ -963,6 +963,109 @@
963
963
  "additionalProperties": false
964
964
  }
965
965
  ]
966
+ },
967
+ "customNodeSupports": {
968
+ "oneOf": [
969
+ {
970
+ "type": [
971
+ "string",
972
+ "number",
973
+ "boolean",
974
+ "null"
975
+ ]
976
+ },
977
+ {
978
+ "type": "object",
979
+ "properties": {
980
+ "$eq": {
981
+ "type": [
982
+ "string",
983
+ "number",
984
+ "boolean",
985
+ "null"
986
+ ]
987
+ },
988
+ "$ne": {
989
+ "type": [
990
+ "string",
991
+ "number",
992
+ "boolean",
993
+ "null"
994
+ ]
995
+ },
996
+ "$gt": {
997
+ "type": [
998
+ "string",
999
+ "number",
1000
+ "boolean",
1001
+ "null"
1002
+ ]
1003
+ },
1004
+ "$lt": {
1005
+ "type": [
1006
+ "string",
1007
+ "number",
1008
+ "boolean",
1009
+ "null"
1010
+ ]
1011
+ },
1012
+ "$gte": {
1013
+ "type": [
1014
+ "string",
1015
+ "number",
1016
+ "boolean",
1017
+ "null"
1018
+ ]
1019
+ },
1020
+ "$lte": {
1021
+ "type": [
1022
+ "string",
1023
+ "number",
1024
+ "boolean",
1025
+ "null"
1026
+ ]
1027
+ },
1028
+ "$startsWith": {
1029
+ "type": "string",
1030
+ "minLength": 1
1031
+ },
1032
+ "$endsWith": {
1033
+ "type": "string",
1034
+ "minLength": 1
1035
+ },
1036
+ "$contains": {
1037
+ "type": "string",
1038
+ "minLength": 1
1039
+ },
1040
+ "$ci": {
1041
+ "type": "boolean"
1042
+ },
1043
+ "$in": {
1044
+ "type": "array",
1045
+ "maxItems": 100,
1046
+ "items": {
1047
+ "type": [
1048
+ "string",
1049
+ "number",
1050
+ "boolean"
1051
+ ]
1052
+ }
1053
+ },
1054
+ "$nin": {
1055
+ "type": "array",
1056
+ "maxItems": 100,
1057
+ "items": {
1058
+ "type": [
1059
+ "string",
1060
+ "number",
1061
+ "boolean"
1062
+ ]
1063
+ }
1064
+ }
1065
+ },
1066
+ "additionalProperties": false
1067
+ }
1068
+ ]
966
1069
  }
967
1070
  },
968
1071
  "additionalProperties": false
@@ -100,6 +100,7 @@
100
100
  "application.mqttSubscriptionStream",
101
101
  "application.patch",
102
102
  "application.payloadCounts",
103
+ "application.payloadCountsBreakdown",
103
104
  "application.deviceCounts",
104
105
  "application.notebookMinuteCounts",
105
106
  "application.search",
@@ -159,6 +160,7 @@
159
160
  "device.getState",
160
161
  "device.patch",
161
162
  "device.payloadCounts",
163
+ "device.payloadCountsBreakdown",
162
164
  "device.removeData",
163
165
  "device.sendCommand",
164
166
  "device.sendState",
@@ -178,6 +180,7 @@
178
180
  "devices.deviceNames",
179
181
  "devices.export",
180
182
  "devices.get",
183
+ "devices.getCompositeState",
181
184
  "devices.payloadCounts",
182
185
  "devices.post",
183
186
  "devices.sendCommand",
@@ -342,6 +345,7 @@
342
345
  "org.modifyMember",
343
346
  "org.removeMember",
344
347
  "org.payloadCounts",
348
+ "org.payloadCountsBreakdown",
345
349
  "org.deviceCounts",
346
350
  "org.notebookMinuteCounts",
347
351
  "org.invoices",
@@ -362,12 +366,14 @@
362
366
  "instance.patch",
363
367
  "instance.historicalSummaries",
364
368
  "instance.generateReport",
369
+ "instance.payloadCountsBreakdown",
365
370
  "instance.deviceCounts",
366
371
  "instance.notebookMinuteCounts",
367
372
  "instanceOrg.*",
368
373
  "instanceOrg.get",
369
374
  "instanceOrg.patch",
370
375
  "instanceOrg.delete",
376
+ "instanceOrg.payloadCountsBreakdown",
371
377
  "instanceOrg.deviceCounts",
372
378
  "instanceOrg.notebookMinuteCounts",
373
379
  "instanceOrgs.*",
@@ -453,6 +459,7 @@
453
459
  "me.addRecentItem",
454
460
  "me.fetchRecentItems",
455
461
  "me.payloadCounts",
462
+ "me.payloadCountsBreakdown",
456
463
  "me.deviceCounts",
457
464
  "me.notebookMinuteCounts",
458
465
  "me.transferResources",
@@ -0,0 +1,97 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "items": {
6
+ "type": "array",
7
+ "items": {
8
+ "type": "object",
9
+ "properties": {
10
+ "id": {
11
+ "type": "string",
12
+ "pattern": "^[A-Fa-f\\d]{24}$"
13
+ },
14
+ "name": {
15
+ "type": "string",
16
+ "minLength": 1,
17
+ "maxLength": 255
18
+ },
19
+ "compositeState": {
20
+ "title": "Composite Device State",
21
+ "description": "Schema for a composite Device state",
22
+ "type": "object",
23
+ "patternProperties": {
24
+ "^[0-9a-zA-Z_-]{1,255}$": {
25
+ "type": "object",
26
+ "properties": {
27
+ "value": {
28
+ "type": [
29
+ "number",
30
+ "string",
31
+ "boolean"
32
+ ]
33
+ },
34
+ "time": {
35
+ "oneOf": [
36
+ {
37
+ "type": "string"
38
+ },
39
+ {
40
+ "type": "number"
41
+ },
42
+ {
43
+ "type": "object",
44
+ "properties": {
45
+ "$date": {
46
+ "type": "string"
47
+ }
48
+ },
49
+ "additionalProperties": false,
50
+ "required": [
51
+ "$date"
52
+ ]
53
+ }
54
+ ]
55
+ }
56
+ }
57
+ }
58
+ },
59
+ "additionalProperties": false
60
+ }
61
+ }
62
+ }
63
+ },
64
+ "count": {
65
+ "type": "integer"
66
+ },
67
+ "totalCount": {
68
+ "type": "integer"
69
+ },
70
+ "perPage": {
71
+ "type": "integer"
72
+ },
73
+ "page": {
74
+ "type": "integer"
75
+ },
76
+ "sortField": {
77
+ "type": "string"
78
+ },
79
+ "sortDirection": {
80
+ "type": "string",
81
+ "enum": [
82
+ "asc",
83
+ "desc",
84
+ "ASC",
85
+ "DESC",
86
+ ""
87
+ ]
88
+ },
89
+ "applicationId": {
90
+ "type": "string",
91
+ "pattern": "^[A-Fa-f\\d]{24}$"
92
+ },
93
+ "query": {
94
+ "type": "object"
95
+ }
96
+ }
97
+ }
@@ -39,6 +39,7 @@
39
39
  "device.sendCommand",
40
40
  "device.setConnectionStatus",
41
41
  "devices.get",
42
+ "devices.getCompositeState",
42
43
  "devices.sendCommand"
43
44
  ]
44
45
  }
@@ -48,6 +48,13 @@
48
48
  "minLength": 1,
49
49
  "maxLength": 255
50
50
  },
51
+ "flowClass": {
52
+ "type": "string",
53
+ "enum": [
54
+ "edge",
55
+ "customNode"
56
+ ]
57
+ },
51
58
  "fileName": {
52
59
  "type": "string",
53
60
  "pattern": "^(?!\\.{1,2}$)[0-9a-zA-Z_.-]{1,255}$"
@@ -55,6 +55,13 @@
55
55
  "minLength": 1,
56
56
  "maxLength": 255
57
57
  },
58
+ "flowClass": {
59
+ "type": "string",
60
+ "enum": [
61
+ "edge",
62
+ "customNode"
63
+ ]
64
+ },
58
65
  "fileName": {
59
66
  "type": "string",
60
67
  "pattern": "^(?!\\.{1,2}$)[0-9a-zA-Z_.-]{1,255}$"
@@ -3055,10 +3055,12 @@
3055
3055
  },
3056
3056
  "customNodeSupports": {
3057
3057
  "type": "array",
3058
+ "maxItems": 1,
3058
3059
  "items": {
3059
3060
  "type": "string",
3060
3061
  "enum": [
3061
- "cloud"
3062
+ "cloud",
3063
+ "edge"
3062
3064
  ]
3063
3065
  }
3064
3066
  },