losant_rest 1.0.5 → 1.0.6
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.
- checksums.yaml +4 -4
- data/docs/_schemas.md +580 -11
- data/docs/device.md +40 -1
- data/docs/me.md +34 -4
- data/docs/org.md +38 -3
- data/lib/losant_rest/client.rb +2 -2
- data/lib/losant_rest/device.rb +49 -1
- data/lib/losant_rest/me.rb +39 -2
- data/lib/losant_rest/org.rb +42 -1
- data/lib/losant_rest/version.rb +1 -1
- data/schemas/compositeDeviceState.json +44 -0
- data/schemas/me.json +140 -5
- data/schemas/org.json +131 -2
- data/schemas/orgPatch.json +16 -0
- data/schemas/orgPost.json +16 -0
- data/schemas/orgs.json +131 -2
- data/schemas/recentItem.json +2 -1
- data/schemas/recentItemList.json +2 -1
- data/schemas/resourceTransfer.json +46 -0
- data/schemas/timeSeriesQuery.json +3 -0
- metadata +4 -2
data/docs/device.md
CHANGED
@@ -10,6 +10,7 @@ parameters and the potential responses.
|
|
10
10
|
* [Export](#export)
|
11
11
|
* [Get](#get)
|
12
12
|
* [Get Command](#get-command)
|
13
|
+
* [Get Composite State](#get-composite-state)
|
13
14
|
* [Get Log Entries](#get-log-entries)
|
14
15
|
* [Get State](#get-state)
|
15
16
|
* [Patch](#patch)
|
@@ -55,7 +56,7 @@ puts result
|
|
55
56
|
|
56
57
|
## Export
|
57
58
|
|
58
|
-
Creates a device data export
|
59
|
+
Creates a device data export. Defaults to all data.
|
59
60
|
|
60
61
|
```ruby
|
61
62
|
result = client.device.export(
|
@@ -73,6 +74,8 @@ puts result
|
|
73
74
|
| deviceId | string | Y | ID associated with the device | | 575ecf887ae143cd83dc4aa2 |
|
74
75
|
| start | string | N | Start time of export (ms since epoch - 0 means now, negative is relative to now) | 1 | 1465790400000 |
|
75
76
|
| end | string | N | End time of export (ms since epoch - 0 means now, negative is relative to now) | 0 | 1465790400000 |
|
77
|
+
| email | string | N | Email address to send export to. Defaults to current user's email. | | email@example.com |
|
78
|
+
| callbackUrl | string | N | Callback URL to call with export result. | | https://example.com/cburl |
|
76
79
|
|
77
80
|
#### Successful Responses
|
78
81
|
|
@@ -159,6 +162,42 @@ puts result
|
|
159
162
|
|
160
163
|
<br/>
|
161
164
|
|
165
|
+
## Get Composite State
|
166
|
+
|
167
|
+
Retrieve the composite last complete state of the device
|
168
|
+
|
169
|
+
```ruby
|
170
|
+
result = client.device.get_composite_state(
|
171
|
+
applicationId: my_application_id,
|
172
|
+
deviceId: my_device_id)
|
173
|
+
|
174
|
+
puts result
|
175
|
+
```
|
176
|
+
|
177
|
+
#### Available Parameters
|
178
|
+
|
179
|
+
| Name | Type | Required | Description | Default | Example |
|
180
|
+
| ---- | ---- | -------- | ----------- | ------- | ------- |
|
181
|
+
| applicationId | string | Y | ID associated with the application | | 575ec8687ae143cd83dc4a97 |
|
182
|
+
| deviceId | string | Y | ID associated with the device | | 575ecf887ae143cd83dc4aa2 |
|
183
|
+
| start | string | N | Start of time range to look at to build composite state | 1 | 1465790400000 |
|
184
|
+
| end | string | N | End of time range to look at to build composite state | 0 | 1465790400000 |
|
185
|
+
|
186
|
+
#### Successful Responses
|
187
|
+
|
188
|
+
| Code | Type | Description |
|
189
|
+
| ---- | ---- | ----------- |
|
190
|
+
| 200 | [Composite Device State](_schemas.md#composite-device-state) | Composite last state of the device |
|
191
|
+
|
192
|
+
#### Error Responses
|
193
|
+
|
194
|
+
| Code | Type | Description |
|
195
|
+
| ---- | ---- | ----------- |
|
196
|
+
| 400 | [Error](_schemas.md#error) | Error if malformed request |
|
197
|
+
| 404 | [Error](_schemas.md#error) | Error if device was not found |
|
198
|
+
|
199
|
+
<br/>
|
200
|
+
|
162
201
|
## Get Log Entries
|
163
202
|
|
164
203
|
Retrieve the recent log entries about the device
|
data/docs/me.md
CHANGED
@@ -16,6 +16,7 @@ parameters and the potential responses.
|
|
16
16
|
* [Get](#get)
|
17
17
|
* [Patch](#patch)
|
18
18
|
* [Payload Counts](#payload-counts)
|
19
|
+
* [Transfer Resources](#transfer-resources)
|
19
20
|
* [Verify Email](#verify-email)
|
20
21
|
|
21
22
|
<br/>
|
@@ -211,7 +212,7 @@ puts result
|
|
211
212
|
| Name | Type | Required | Description | Default | Example |
|
212
213
|
| ---- | ---- | -------- | ----------- | ------- | ------- |
|
213
214
|
| parentId | string | N | Parent id of the recent list | | 575ec8687ae143cd83dc4a97 |
|
214
|
-
| itemType | undefined | Y | Item type to get the recent list of. Accepted values are: application, device, flow, dashboard | | application |
|
215
|
+
| itemType | undefined | Y | Item type to get the recent list of. Accepted values are: application, device, flow, dashboard, organization | | application |
|
215
216
|
|
216
217
|
#### Successful Responses
|
217
218
|
|
@@ -300,8 +301,8 @@ puts result
|
|
300
301
|
|
301
302
|
| Name | Type | Required | Description | Default | Example |
|
302
303
|
| ---- | ---- | -------- | ----------- | ------- | ------- |
|
303
|
-
| start | string | N | Start of range for payload count query (ms since epoch) |
|
304
|
-
| end | string | N | End of range for payload count query (ms since epoch) |
|
304
|
+
| start | string | N | Start of range for payload count query (ms since epoch) | | 0 |
|
305
|
+
| end | string | N | End of range for payload count query (ms since epoch) | | 1465790400000 |
|
305
306
|
|
306
307
|
#### Successful Responses
|
307
308
|
|
@@ -314,7 +315,36 @@ puts result
|
|
314
315
|
| Code | Type | Description |
|
315
316
|
| ---- | ---- | ----------- |
|
316
317
|
| 400 | [Error](_schemas.md#error) | Error if malformed request |
|
317
|
-
|
318
|
+
|
319
|
+
<br/>
|
320
|
+
|
321
|
+
## Transfer Resources
|
322
|
+
|
323
|
+
Moves resources to a new owner
|
324
|
+
|
325
|
+
```ruby
|
326
|
+
result = client.me.transfer_resources(transfer: my_transfer)
|
327
|
+
|
328
|
+
puts result
|
329
|
+
```
|
330
|
+
|
331
|
+
#### Available Parameters
|
332
|
+
|
333
|
+
| Name | Type | Required | Description | Default | Example |
|
334
|
+
| ---- | ---- | -------- | ----------- | ------- | ------- |
|
335
|
+
| transfer | [Resource Transfer](_schemas.md#resource-transfer) | Y | Object containing properties of the transfer | | [Resource Transfer Example](_schemas.md#resource-transfer-example) |
|
336
|
+
|
337
|
+
#### Successful Responses
|
338
|
+
|
339
|
+
| Code | Type | Description |
|
340
|
+
| ---- | ---- | ----------- |
|
341
|
+
| 200 | [Success](_schemas.md#success) | If resource transfer was successful |
|
342
|
+
|
343
|
+
#### Error Responses
|
344
|
+
|
345
|
+
| Code | Type | Description |
|
346
|
+
| ---- | ---- | ----------- |
|
347
|
+
| 400 | [Error](_schemas.md#error) | Error if malformed request |
|
318
348
|
|
319
349
|
<br/>
|
320
350
|
|
data/docs/org.md
CHANGED
@@ -15,6 +15,7 @@ parameters and the potential responses.
|
|
15
15
|
* [Pending Invites](#pending-invites)
|
16
16
|
* [Remove Member](#remove-member)
|
17
17
|
* [Revoke Invite](#revoke-invite)
|
18
|
+
* [Transfer Resources](#transfer-resources)
|
18
19
|
|
19
20
|
<br/>
|
20
21
|
|
@@ -197,8 +198,8 @@ puts result
|
|
197
198
|
| Name | Type | Required | Description | Default | Example |
|
198
199
|
| ---- | ---- | -------- | ----------- | ------- | ------- |
|
199
200
|
| orgId | string | Y | ID associated with the organization | | 575ed6e87ae143cd83dc4aa8 |
|
200
|
-
| start | string | N | Start of range for payload count query (ms since epoch) |
|
201
|
-
| end | string | N | End of range for payload count query (ms since epoch) |
|
201
|
+
| start | string | N | Start of range for payload count query (ms since epoch) | | 0 |
|
202
|
+
| end | string | N | End of range for payload count query (ms since epoch) | | 1465790400000 |
|
202
203
|
|
203
204
|
#### Successful Responses
|
204
205
|
|
@@ -211,7 +212,7 @@ puts result
|
|
211
212
|
| Code | Type | Description |
|
212
213
|
| ---- | ---- | ----------- |
|
213
214
|
| 400 | [Error](_schemas.md#error) | Error if malformed request |
|
214
|
-
| 404 | [Error](_schemas.md#error) | Error if
|
215
|
+
| 404 | [Error](_schemas.md#error) | Error if organization was not found |
|
215
216
|
|
216
217
|
<br/>
|
217
218
|
|
@@ -311,3 +312,37 @@ puts result
|
|
311
312
|
| ---- | ---- | ----------- |
|
312
313
|
| 400 | [Error](_schemas.md#error) | Error if malformed request |
|
313
314
|
| 404 | [Error](_schemas.md#error) | Error if organization not found |
|
315
|
+
|
316
|
+
<br/>
|
317
|
+
|
318
|
+
## Transfer Resources
|
319
|
+
|
320
|
+
Moves resources to a new owner
|
321
|
+
|
322
|
+
```ruby
|
323
|
+
result = client.org.transfer_resources(
|
324
|
+
orgId: my_org_id,
|
325
|
+
transfer: my_transfer)
|
326
|
+
|
327
|
+
puts result
|
328
|
+
```
|
329
|
+
|
330
|
+
#### Available Parameters
|
331
|
+
|
332
|
+
| Name | Type | Required | Description | Default | Example |
|
333
|
+
| ---- | ---- | -------- | ----------- | ------- | ------- |
|
334
|
+
| orgId | string | Y | ID associated with the organization | | 575ed6e87ae143cd83dc4aa8 |
|
335
|
+
| transfer | [Resource Transfer](_schemas.md#resource-transfer) | Y | Object containing properties of the transfer | | [Resource Transfer Example](_schemas.md#resource-transfer-example) |
|
336
|
+
|
337
|
+
#### Successful Responses
|
338
|
+
|
339
|
+
| Code | Type | Description |
|
340
|
+
| ---- | ---- | ----------- |
|
341
|
+
| 200 | [Success](_schemas.md#success) | If resource transfer was successful |
|
342
|
+
|
343
|
+
#### Error Responses
|
344
|
+
|
345
|
+
| Code | Type | Description |
|
346
|
+
| ---- | ---- | ----------- |
|
347
|
+
| 400 | [Error](_schemas.md#error) | Error if malformed request |
|
348
|
+
| 404 | [Error](_schemas.md#error) | Error if organization was not found |
|
data/lib/losant_rest/client.rb
CHANGED
@@ -5,7 +5,7 @@ module LosantRest
|
|
5
5
|
#
|
6
6
|
# User API for accessing Losant data
|
7
7
|
#
|
8
|
-
# Built For Version 1.
|
8
|
+
# Built For Version 1.5.0
|
9
9
|
class Client
|
10
10
|
attr_accessor :auth_token, :url
|
11
11
|
|
@@ -128,7 +128,7 @@ module LosantRest
|
|
128
128
|
|
129
129
|
headers["Accept"] = "application/json"
|
130
130
|
headers["Content-Type"] = "application/json"
|
131
|
-
headers["Accept-Version"] = "^1.
|
131
|
+
headers["Accept-Version"] = "^1.5.0"
|
132
132
|
headers["Authorization"] = "Bearer #{self.auth_token}" if self.auth_token
|
133
133
|
path = self.url + options.fetch(:path, "")
|
134
134
|
|
data/lib/losant_rest/device.rb
CHANGED
@@ -47,13 +47,15 @@ module LosantRest
|
|
47
47
|
body: body)
|
48
48
|
end
|
49
49
|
|
50
|
-
# Creates a device data export
|
50
|
+
# Creates a device data export. Defaults to all data.
|
51
51
|
#
|
52
52
|
# Parameters:
|
53
53
|
# * {string} applicationId - ID associated with the application
|
54
54
|
# * {string} deviceId - ID associated with the device
|
55
55
|
# * {string} start - Start time of export (ms since epoch - 0 means now, negative is relative to now)
|
56
56
|
# * {string} end - End time of export (ms since epoch - 0 means now, negative is relative to now)
|
57
|
+
# * {string} email - Email address to send export to. Defaults to current user's email.
|
58
|
+
# * {string} callbackUrl - Callback URL to call with export result.
|
57
59
|
# * {string} losantdomain - Domain scope of request (rarely needed)
|
58
60
|
# * {boolean} _actions - Return resource actions in response
|
59
61
|
# * {boolean} _links - Return resource link in response
|
@@ -76,6 +78,8 @@ module LosantRest
|
|
76
78
|
|
77
79
|
query_params[:start] = params[:start] if params.has_key?(:start)
|
78
80
|
query_params[:end] = params[:end] if params.has_key?(:end)
|
81
|
+
query_params[:email] = params[:email] if params.has_key?(:email)
|
82
|
+
query_params[:callbackUrl] = params[:callbackUrl] if params.has_key?(:callbackUrl)
|
79
83
|
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
80
84
|
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
81
85
|
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
@@ -175,6 +179,50 @@ module LosantRest
|
|
175
179
|
body: body)
|
176
180
|
end
|
177
181
|
|
182
|
+
# Retrieve the composite last complete state of the device
|
183
|
+
#
|
184
|
+
# Parameters:
|
185
|
+
# * {string} applicationId - ID associated with the application
|
186
|
+
# * {string} deviceId - ID associated with the device
|
187
|
+
# * {string} start - Start of time range to look at to build composite state
|
188
|
+
# * {string} end - End of time range to look at to build composite state
|
189
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
190
|
+
# * {boolean} _actions - Return resource actions in response
|
191
|
+
# * {boolean} _links - Return resource link in response
|
192
|
+
# * {boolean} _embedded - Return embedded resources in response
|
193
|
+
#
|
194
|
+
# Responses:
|
195
|
+
# * 200 - Composite last state of the device (https://api.losant.com/#/definitions/compositeDeviceState)
|
196
|
+
#
|
197
|
+
# Errors:
|
198
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
199
|
+
# * 404 - Error if device was not found (https://api.losant.com/#/definitions/error)
|
200
|
+
def get_composite_state(params = {})
|
201
|
+
params = Utils.symbolize_hash_keys(params)
|
202
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
203
|
+
headers = {}
|
204
|
+
body = nil
|
205
|
+
|
206
|
+
raise ArgumentError.new("applicationId is required") unless params.has_key?(:applicationId)
|
207
|
+
raise ArgumentError.new("deviceId is required") unless params.has_key?(:deviceId)
|
208
|
+
|
209
|
+
query_params[:start] = params[:start] if params.has_key?(:start)
|
210
|
+
query_params[:end] = params[:end] if params.has_key?(:end)
|
211
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
212
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
213
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
214
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
215
|
+
|
216
|
+
path = "/applications/#{params[:applicationId]}/devices/#{params[:deviceId]}/compositeState"
|
217
|
+
|
218
|
+
@client.request(
|
219
|
+
method: :get,
|
220
|
+
path: path,
|
221
|
+
query: query_params,
|
222
|
+
headers: headers,
|
223
|
+
body: body)
|
224
|
+
end
|
225
|
+
|
178
226
|
# Retrieve the recent log entries about the device
|
179
227
|
#
|
180
228
|
# Parameters:
|
data/lib/losant_rest/me.rb
CHANGED
@@ -233,7 +233,7 @@ module LosantRest
|
|
233
233
|
#
|
234
234
|
# Parameters:
|
235
235
|
# * {string} parentId - Parent id of the recent list
|
236
|
-
# * {undefined} itemType - Item type to get the recent list of. Accepted values are: application, device, flow, dashboard
|
236
|
+
# * {undefined} itemType - Item type to get the recent list of. Accepted values are: application, device, flow, dashboard, organization
|
237
237
|
# * {string} losantdomain - Domain scope of request (rarely needed)
|
238
238
|
# * {boolean} _actions - Return resource actions in response
|
239
239
|
# * {boolean} _links - Return resource link in response
|
@@ -358,7 +358,6 @@ module LosantRest
|
|
358
358
|
#
|
359
359
|
# Errors:
|
360
360
|
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
361
|
-
# * 404 - Error if application was not found (https://api.losant.com/#/definitions/error)
|
362
361
|
def payload_counts(params = {})
|
363
362
|
params = Utils.symbolize_hash_keys(params)
|
364
363
|
query_params = { _actions: false, _links: true, _embedded: true }
|
@@ -383,6 +382,44 @@ module LosantRest
|
|
383
382
|
body: body)
|
384
383
|
end
|
385
384
|
|
385
|
+
# Moves resources to a new owner
|
386
|
+
#
|
387
|
+
# Parameters:
|
388
|
+
# * {hash} transfer - Object containing properties of the transfer (https://api.losant.com/#/definitions/resourceTransfer)
|
389
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
390
|
+
# * {boolean} _actions - Return resource actions in response
|
391
|
+
# * {boolean} _links - Return resource link in response
|
392
|
+
# * {boolean} _embedded - Return embedded resources in response
|
393
|
+
#
|
394
|
+
# Responses:
|
395
|
+
# * 200 - If resource transfer was successful (https://api.losant.com/#/definitions/success)
|
396
|
+
#
|
397
|
+
# Errors:
|
398
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
399
|
+
def transfer_resources(params = {})
|
400
|
+
params = Utils.symbolize_hash_keys(params)
|
401
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
402
|
+
headers = {}
|
403
|
+
body = nil
|
404
|
+
|
405
|
+
raise ArgumentError.new("transfer is required") unless params.has_key?(:transfer)
|
406
|
+
|
407
|
+
body = params[:transfer] if params.has_key?(:transfer)
|
408
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
409
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
410
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
411
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
412
|
+
|
413
|
+
path = "/me/transferResources"
|
414
|
+
|
415
|
+
@client.request(
|
416
|
+
method: :patch,
|
417
|
+
path: path,
|
418
|
+
query: query_params,
|
419
|
+
headers: headers,
|
420
|
+
body: body)
|
421
|
+
end
|
422
|
+
|
386
423
|
# Sends an email verification to the user
|
387
424
|
#
|
388
425
|
# Parameters:
|
data/lib/losant_rest/org.rb
CHANGED
@@ -222,7 +222,7 @@ module LosantRest
|
|
222
222
|
#
|
223
223
|
# Errors:
|
224
224
|
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
225
|
-
# * 404 - Error if
|
225
|
+
# * 404 - Error if organization was not found (https://api.losant.com/#/definitions/error)
|
226
226
|
def payload_counts(params = {})
|
227
227
|
params = Utils.symbolize_hash_keys(params)
|
228
228
|
query_params = { _actions: false, _links: true, _embedded: true }
|
@@ -368,5 +368,46 @@ module LosantRest
|
|
368
368
|
body: body)
|
369
369
|
end
|
370
370
|
|
371
|
+
# Moves resources to a new owner
|
372
|
+
#
|
373
|
+
# Parameters:
|
374
|
+
# * {string} orgId - ID associated with the organization
|
375
|
+
# * {hash} transfer - Object containing properties of the transfer (https://api.losant.com/#/definitions/resourceTransfer)
|
376
|
+
# * {string} losantdomain - Domain scope of request (rarely needed)
|
377
|
+
# * {boolean} _actions - Return resource actions in response
|
378
|
+
# * {boolean} _links - Return resource link in response
|
379
|
+
# * {boolean} _embedded - Return embedded resources in response
|
380
|
+
#
|
381
|
+
# Responses:
|
382
|
+
# * 200 - If resource transfer was successful (https://api.losant.com/#/definitions/success)
|
383
|
+
#
|
384
|
+
# Errors:
|
385
|
+
# * 400 - Error if malformed request (https://api.losant.com/#/definitions/error)
|
386
|
+
# * 404 - Error if organization was not found (https://api.losant.com/#/definitions/error)
|
387
|
+
def transfer_resources(params = {})
|
388
|
+
params = Utils.symbolize_hash_keys(params)
|
389
|
+
query_params = { _actions: false, _links: true, _embedded: true }
|
390
|
+
headers = {}
|
391
|
+
body = nil
|
392
|
+
|
393
|
+
raise ArgumentError.new("orgId is required") unless params.has_key?(:orgId)
|
394
|
+
raise ArgumentError.new("transfer is required") unless params.has_key?(:transfer)
|
395
|
+
|
396
|
+
body = params[:transfer] if params.has_key?(:transfer)
|
397
|
+
headers[:losantdomain] = params[:losantdomain] if params.has_key?(:losantdomain)
|
398
|
+
query_params[:_actions] = params[:_actions] if params.has_key?(:_actions)
|
399
|
+
query_params[:_links] = params[:_links] if params.has_key?(:_links)
|
400
|
+
query_params[:_embedded] = params[:_embedded] if params.has_key?(:_embedded)
|
401
|
+
|
402
|
+
path = "/orgs/#{params[:orgId]}/transferResources"
|
403
|
+
|
404
|
+
@client.request(
|
405
|
+
method: :patch,
|
406
|
+
path: path,
|
407
|
+
query: query_params,
|
408
|
+
headers: headers,
|
409
|
+
body: body)
|
410
|
+
end
|
411
|
+
|
371
412
|
end
|
372
413
|
end
|
data/lib/losant_rest/version.rb
CHANGED
@@ -0,0 +1,44 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-04/schema#",
|
3
|
+
"type": "object",
|
4
|
+
"patternProperties": {
|
5
|
+
"^[0-9a-zA-Z_-]{1,255}$": {
|
6
|
+
"type": "object",
|
7
|
+
"properties": {
|
8
|
+
"value": {
|
9
|
+
"type": [
|
10
|
+
"number",
|
11
|
+
"string",
|
12
|
+
"boolean"
|
13
|
+
]
|
14
|
+
},
|
15
|
+
"time": {
|
16
|
+
"oneOf": [
|
17
|
+
{
|
18
|
+
"type": "string"
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"type": "number"
|
22
|
+
},
|
23
|
+
{
|
24
|
+
"type": "object",
|
25
|
+
"properties": {
|
26
|
+
"$date": {
|
27
|
+
"type": "string"
|
28
|
+
}
|
29
|
+
},
|
30
|
+
"additionalProperties": false,
|
31
|
+
"required": [
|
32
|
+
"$date"
|
33
|
+
]
|
34
|
+
}
|
35
|
+
]
|
36
|
+
},
|
37
|
+
"relayId": {
|
38
|
+
"type": "string"
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
42
|
+
},
|
43
|
+
"additionalProperties": false
|
44
|
+
}
|