losant_rest 1.13.1 → 1.15.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/docs/_schemas.md +10817 -3660
  3. data/docs/application.md +1 -1
  4. data/docs/device.md +43 -0
  5. data/docs/devices.md +39 -0
  6. data/docs/edgeDeployment.md +49 -0
  7. data/docs/embeddedDeployment.md +49 -0
  8. data/docs/embeddedDeployments.md +215 -0
  9. data/docs/flow.md +3 -3
  10. data/docs/flows.md +2 -2
  11. data/docs/instance.md +4 -2
  12. data/docs/instanceOrg.md +2 -0
  13. data/docs/instanceOrgInvite.md +139 -0
  14. data/docs/instanceOrgInvites.md +96 -0
  15. data/docs/instanceOrgMembers.md +2 -2
  16. data/docs/instanceOrgs.md +1 -1
  17. data/docs/me.md +1 -1
  18. data/docs/org.md +1 -1
  19. data/lib/losant_rest/client.rb +22 -2
  20. data/lib/losant_rest/device.rb +50 -0
  21. data/lib/losant_rest/devices.rb +46 -0
  22. data/lib/losant_rest/edge_deployment.rb +81 -0
  23. data/lib/losant_rest/embedded_deployment.rb +81 -0
  24. data/lib/losant_rest/embedded_deployments.rb +280 -0
  25. data/lib/losant_rest/flow.rb +3 -3
  26. data/lib/losant_rest/flows.rb +2 -2
  27. data/lib/losant_rest/instance.rb +1 -0
  28. data/lib/losant_rest/instance_org.rb +4 -0
  29. data/lib/losant_rest/instance_org_invite.rb +182 -0
  30. data/lib/losant_rest/instance_org_invites.rb +138 -0
  31. data/lib/losant_rest/instance_org_members.rb +2 -2
  32. data/lib/losant_rest/instance_orgs.rb +2 -2
  33. data/lib/losant_rest/version.rb +1 -1
  34. data/lib/losant_rest.rb +5 -0
  35. data/schemas/apiTokenPost.json +19 -0
  36. data/schemas/application.json +32 -32
  37. data/schemas/applicationCreationByTemplateResult.json +32 -32
  38. data/schemas/applicationDashboardPost.json +8 -5
  39. data/schemas/applicationPatch.json +13 -13
  40. data/schemas/applicationPost.json +13 -13
  41. data/schemas/applicationTemplate.json +16 -16
  42. data/schemas/applicationTemplates.json +16 -16
  43. data/schemas/applications.json +32 -32
  44. data/schemas/authedDevice.json +2 -1
  45. data/schemas/dashboard.json +8 -5
  46. data/schemas/dashboardPatch.json +8 -5
  47. data/schemas/dashboardPost.json +8 -5
  48. data/schemas/dashboardSendReport.json +6 -6
  49. data/schemas/dashboards.json +8 -5
  50. data/schemas/dataTableRowsDelete.json +1 -1
  51. data/schemas/device.json +2 -1
  52. data/schemas/deviceClassFilter.json +4 -2
  53. data/schemas/devicePatch.json +2 -1
  54. data/schemas/devicePayloadCounts.json +24 -0
  55. data/schemas/devicePost.json +2 -1
  56. data/schemas/deviceRecipe.json +2 -1
  57. data/schemas/deviceRecipePatch.json +2 -1
  58. data/schemas/deviceRecipePost.json +2 -1
  59. data/schemas/deviceRecipes.json +2 -1
  60. data/schemas/devices.json +4 -2
  61. data/schemas/devicesExportPayloadCountPost.json +1350 -0
  62. data/schemas/devicesPatch.json +4 -2
  63. data/schemas/edgeDeployment.json +20 -0
  64. data/schemas/edgeDeployments.json +20 -0
  65. data/schemas/embeddedDeployment.json +179 -0
  66. data/schemas/embeddedDeploymentExport.json +44 -0
  67. data/schemas/embeddedDeploymentRelease.json +58 -0
  68. data/schemas/embeddedDeploymentRemove.json +25 -0
  69. data/schemas/embeddedDeploymentReplace.json +29 -0
  70. data/schemas/embeddedDeployments.json +212 -0
  71. data/schemas/eventsDeleted.json +1 -1
  72. data/schemas/eventsExport.json +4 -0
  73. data/schemas/experienceEndpoint.json +6 -8
  74. data/schemas/experienceEndpointPatch.json +6 -8
  75. data/schemas/experienceEndpointPost.json +6 -8
  76. data/schemas/experienceEndpoints.json +6 -8
  77. data/schemas/experienceLinkedResources.json +790 -85
  78. data/schemas/flow.json +252 -16
  79. data/schemas/flowPatch.json +251 -16
  80. data/schemas/flowPost.json +252 -16
  81. data/schemas/flowVersion.json +503 -33
  82. data/schemas/flowVersionPost.json +251 -16
  83. data/schemas/flowVersions.json +503 -33
  84. data/schemas/flows.json +253 -16
  85. data/schemas/flowsImportPost.json +503 -32
  86. data/schemas/flowsImportResult.json +785 -79
  87. data/schemas/githubLogin.json +19 -0
  88. data/schemas/historicalSummary.json +147 -102
  89. data/schemas/instance.json +92 -79
  90. data/schemas/instanceMember.json +10 -0
  91. data/schemas/instanceMemberPost.json +18 -3
  92. data/schemas/instanceMembers.json +14 -0
  93. data/schemas/instanceOrg.json +87 -74
  94. data/schemas/instanceOrgMember.json +14 -0
  95. data/schemas/instanceOrgMembers.json +8 -0
  96. data/schemas/instanceOrgPatch.json +64 -26
  97. data/schemas/instanceOrgPost.json +65 -27
  98. data/schemas/instanceOrgs.json +91 -74
  99. data/schemas/instancePatch.json +2 -2
  100. data/schemas/me.json +134 -105
  101. data/schemas/notebook.json +32 -1
  102. data/schemas/notebookExecutionLogs.json +2 -1
  103. data/schemas/notebookPatch.json +32 -1
  104. data/schemas/notebookPost.json +32 -1
  105. data/schemas/notebooks.json +32 -1
  106. data/schemas/org.json +145 -110
  107. data/schemas/orgInvite.json +90 -0
  108. data/schemas/orgInviteCollection.json +130 -0
  109. data/schemas/orgInvites.json +82 -77
  110. data/schemas/orgRoleInfo.json +69 -0
  111. data/schemas/orgs.json +145 -110
  112. data/schemas/payloadStats.json +28 -12
  113. data/schemas/userCredentials.json +19 -0
  114. data/schemas/userPost.json +19 -0
  115. data/schemas/virtualButtonPress.json +4 -0
  116. metadata +27 -6
data/schemas/orgs.json CHANGED
@@ -123,150 +123,169 @@
123
123
  "additionalProperties": false
124
124
  },
125
125
  "maxItems": 1000
126
+ },
127
+ "twoFactorAuthEnabled": {
128
+ "type": "boolean"
129
+ },
130
+ "ssoLinked": {
131
+ "type": "boolean"
126
132
  }
127
133
  }
128
134
  }
129
135
  },
130
136
  "limits": {
131
- "apitoken": {
132
- "type": "number"
133
- },
134
- "application": {
135
- "type": "number"
136
- },
137
- "applicationkey": {
138
- "type": "number"
139
- },
140
- "dashboard": {
141
- "type": "number"
142
- },
143
- "datatable": {
144
- "type": "number"
145
- },
146
- "device": {
147
- "type": "number"
148
- },
149
- "devicerecipe": {
150
- "type": "number"
151
- },
152
- "experiencedomain": {
153
- "type": "number"
154
- },
155
- "experienceendpoint": {
156
- "type": "number"
157
- },
158
- "experiencegroup": {
159
- "type": "number"
160
- },
161
- "experienceslug": {
162
- "type": "number"
163
- },
164
- "experienceuser": {
165
- "type": "number"
166
- },
167
- "experienceversion": {
168
- "type": "number"
169
- },
170
- "experienceview": {
171
- "type": "number"
172
- },
173
- "file": {
174
- "type": "number"
175
- },
176
- "flow": {
177
- "type": "number"
178
- },
179
- "integration": {
180
- "type": "number"
181
- },
182
- "notebook": {
183
- "type": "number"
184
- },
185
- "webhook": {
186
- "type": "number"
187
- },
188
- "dataTTL": {
189
- "type": "number"
190
- },
191
- "member": {
192
- "type": "number"
193
- },
194
- "payload": {
195
- "type": "number"
196
- },
197
- "notebookMinutesPerRun": {
198
- "type": "number"
199
- },
200
- "notebookMinutesPerMonth": {
201
- "type": "number"
137
+ "type": "object",
138
+ "properties": {
139
+ "apitoken": {
140
+ "type": "integer"
141
+ },
142
+ "application": {
143
+ "type": "integer"
144
+ },
145
+ "applicationkey": {
146
+ "type": "integer"
147
+ },
148
+ "dashboard": {
149
+ "type": "integer"
150
+ },
151
+ "datatable": {
152
+ "type": "integer"
153
+ },
154
+ "device": {
155
+ "type": "integer"
156
+ },
157
+ "devicerecipe": {
158
+ "type": "integer"
159
+ },
160
+ "experiencedomain": {
161
+ "type": "integer"
162
+ },
163
+ "experienceendpoint": {
164
+ "type": "integer"
165
+ },
166
+ "experiencegroup": {
167
+ "type": "integer"
168
+ },
169
+ "experienceslug": {
170
+ "type": "integer"
171
+ },
172
+ "experienceuser": {
173
+ "type": "integer"
174
+ },
175
+ "experienceversion": {
176
+ "type": "integer"
177
+ },
178
+ "experienceview": {
179
+ "type": "integer"
180
+ },
181
+ "file": {
182
+ "type": "integer"
183
+ },
184
+ "flow": {
185
+ "type": "integer"
186
+ },
187
+ "integration": {
188
+ "type": "integer"
189
+ },
190
+ "notebook": {
191
+ "type": "integer"
192
+ },
193
+ "webhook": {
194
+ "type": "integer"
195
+ },
196
+ "dataTTL": {
197
+ "type": "integer"
198
+ },
199
+ "member": {
200
+ "type": "integer"
201
+ },
202
+ "payload": {
203
+ "type": "integer"
204
+ },
205
+ "storage": {
206
+ "type": "integer"
207
+ },
208
+ "notebookMinutesPerRun": {
209
+ "type": "integer"
210
+ },
211
+ "notebookMinutesPerMonth": {
212
+ "type": "integer"
213
+ },
214
+ "notebookInParallel": {
215
+ "type": "integer"
216
+ },
217
+ "experienceFlowSlots": {
218
+ "type": "integer"
219
+ },
220
+ "applicationFlowSlots": {
221
+ "type": "integer"
222
+ }
202
223
  },
203
- "notebookInParallel": {
204
- "type": "number"
205
- }
224
+ "additionalProperties": false
206
225
  },
207
226
  "summary": {
208
227
  "type": "object",
209
228
  "properties": {
210
229
  "apiTokenCount": {
211
- "type": "number"
230
+ "type": "integer"
212
231
  },
213
232
  "appCount": {
214
- "type": "number"
233
+ "type": "integer"
215
234
  },
216
235
  "dashCount": {
217
- "type": "number"
236
+ "type": "integer"
218
237
  },
219
238
  "dataTableCount": {
220
- "type": "number"
239
+ "type": "integer"
221
240
  },
222
241
  "deviceCount": {
223
- "type": "number"
242
+ "type": "integer"
224
243
  },
225
244
  "deviceRecipeCount": {
226
- "type": "number"
245
+ "type": "integer"
227
246
  },
228
247
  "experienceDomainCount": {
229
- "type": "number"
248
+ "type": "integer"
230
249
  },
231
250
  "experienceEndpointCount": {
232
- "type": "number"
251
+ "type": "integer"
233
252
  },
234
253
  "experienceGroupCount": {
235
- "type": "number"
254
+ "type": "integer"
236
255
  },
237
256
  "experienceSlugCount": {
238
- "type": "number"
257
+ "type": "integer"
239
258
  },
240
259
  "experienceUserCount": {
241
- "type": "number"
260
+ "type": "integer"
242
261
  },
243
262
  "experienceVersionCount": {
244
- "type": "number"
263
+ "type": "integer"
245
264
  },
246
265
  "experienceViewCount": {
247
- "type": "number"
266
+ "type": "integer"
248
267
  },
249
268
  "fileCount": {
250
- "type": "number"
269
+ "type": "integer"
251
270
  },
252
271
  "flowCount": {
253
- "type": "number"
272
+ "type": "integer"
254
273
  },
255
274
  "integrationCount": {
256
- "type": "number"
275
+ "type": "integer"
257
276
  },
258
277
  "keyCount": {
259
- "type": "number"
278
+ "type": "integer"
260
279
  },
261
280
  "memberCount": {
262
- "type": "number"
281
+ "type": "integer"
263
282
  },
264
283
  "payloadCount": {
265
- "title": "Payload Counts",
266
- "description": "Schema for the result of a payload count request",
284
+ "title": "Payload Stats",
285
+ "description": "Schema for the result of a payload stats request",
267
286
  "type": "object",
268
287
  "properties": {
269
- "mqttOut": {
288
+ "dataTable": {
270
289
  "type": "object",
271
290
  "patternProperties": {
272
291
  ".*": {
@@ -274,7 +293,7 @@
274
293
  }
275
294
  }
276
295
  },
277
- "mqttIn": {
296
+ "deviceCommand": {
278
297
  "type": "object",
279
298
  "patternProperties": {
280
299
  ".*": {
@@ -282,7 +301,15 @@
282
301
  }
283
302
  }
284
303
  },
285
- "dataTable": {
304
+ "deviceConnect": {
305
+ "type": "object",
306
+ "patternProperties": {
307
+ ".*": {
308
+ "type": "number"
309
+ }
310
+ }
311
+ },
312
+ "deviceDisconnect": {
286
313
  "type": "object",
287
314
  "patternProperties": {
288
315
  ".*": {
@@ -298,7 +325,7 @@
298
325
  }
299
326
  }
300
327
  },
301
- "deviceCommand": {
328
+ "endpoint": {
302
329
  "type": "object",
303
330
  "patternProperties": {
304
331
  ".*": {
@@ -306,7 +333,7 @@
306
333
  }
307
334
  }
308
335
  },
309
- "webhook": {
336
+ "event": {
310
337
  "type": "object",
311
338
  "patternProperties": {
312
339
  ".*": {
@@ -314,7 +341,7 @@
314
341
  }
315
342
  }
316
343
  },
317
- "timer": {
344
+ "flowError": {
318
345
  "type": "object",
319
346
  "patternProperties": {
320
347
  ".*": {
@@ -322,7 +349,7 @@
322
349
  }
323
350
  }
324
351
  },
325
- "event": {
352
+ "integration": {
326
353
  "type": "object",
327
354
  "patternProperties": {
328
355
  ".*": {
@@ -330,7 +357,7 @@
330
357
  }
331
358
  }
332
359
  },
333
- "virtualButton": {
360
+ "mqttIn": {
334
361
  "type": "object",
335
362
  "patternProperties": {
336
363
  ".*": {
@@ -338,7 +365,7 @@
338
365
  }
339
366
  }
340
367
  },
341
- "deviceConnect": {
368
+ "mqttOut": {
342
369
  "type": "object",
343
370
  "patternProperties": {
344
371
  ".*": {
@@ -346,7 +373,7 @@
346
373
  }
347
374
  }
348
375
  },
349
- "deviceDisconnect": {
376
+ "notebook": {
350
377
  "type": "object",
351
378
  "patternProperties": {
352
379
  ".*": {
@@ -354,7 +381,7 @@
354
381
  }
355
382
  }
356
383
  },
357
- "endpoint": {
384
+ "timer": {
358
385
  "type": "object",
359
386
  "patternProperties": {
360
387
  ".*": {
@@ -362,7 +389,15 @@
362
389
  }
363
390
  }
364
391
  },
365
- "integration": {
392
+ "virtualButton": {
393
+ "type": "object",
394
+ "patternProperties": {
395
+ ".*": {
396
+ "type": "number"
397
+ }
398
+ }
399
+ },
400
+ "webhook": {
366
401
  "type": "object",
367
402
  "patternProperties": {
368
403
  ".*": {
@@ -373,21 +408,21 @@
373
408
  }
374
409
  },
375
410
  "pendingInviteCount": {
376
- "type": "number"
411
+ "type": "integer"
377
412
  },
378
413
  "storageStats": {
379
414
  "type": "object",
380
415
  "properties": {
381
416
  "count": {
382
- "type": "number"
417
+ "type": "integer"
383
418
  },
384
419
  "size": {
385
- "type": "number"
420
+ "type": "integer"
386
421
  }
387
422
  }
388
423
  },
389
424
  "webhookCount": {
390
- "type": "number"
425
+ "type": "integer"
391
426
  }
392
427
  }
393
428
  },
@@ -2,7 +2,7 @@
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
3
  "type": "object",
4
4
  "properties": {
5
- "mqttOut": {
5
+ "dataTable": {
6
6
  "type": "object",
7
7
  "patternProperties": {
8
8
  ".*": {
@@ -10,7 +10,7 @@
10
10
  }
11
11
  }
12
12
  },
13
- "mqttIn": {
13
+ "deviceCommand": {
14
14
  "type": "object",
15
15
  "patternProperties": {
16
16
  ".*": {
@@ -18,7 +18,15 @@
18
18
  }
19
19
  }
20
20
  },
21
- "dataTable": {
21
+ "deviceConnect": {
22
+ "type": "object",
23
+ "patternProperties": {
24
+ ".*": {
25
+ "type": "number"
26
+ }
27
+ }
28
+ },
29
+ "deviceDisconnect": {
22
30
  "type": "object",
23
31
  "patternProperties": {
24
32
  ".*": {
@@ -34,7 +42,7 @@
34
42
  }
35
43
  }
36
44
  },
37
- "deviceCommand": {
45
+ "endpoint": {
38
46
  "type": "object",
39
47
  "patternProperties": {
40
48
  ".*": {
@@ -42,7 +50,7 @@
42
50
  }
43
51
  }
44
52
  },
45
- "webhook": {
53
+ "event": {
46
54
  "type": "object",
47
55
  "patternProperties": {
48
56
  ".*": {
@@ -50,7 +58,7 @@
50
58
  }
51
59
  }
52
60
  },
53
- "timer": {
61
+ "flowError": {
54
62
  "type": "object",
55
63
  "patternProperties": {
56
64
  ".*": {
@@ -58,7 +66,7 @@
58
66
  }
59
67
  }
60
68
  },
61
- "event": {
69
+ "integration": {
62
70
  "type": "object",
63
71
  "patternProperties": {
64
72
  ".*": {
@@ -66,7 +74,7 @@
66
74
  }
67
75
  }
68
76
  },
69
- "virtualButton": {
77
+ "mqttIn": {
70
78
  "type": "object",
71
79
  "patternProperties": {
72
80
  ".*": {
@@ -74,7 +82,7 @@
74
82
  }
75
83
  }
76
84
  },
77
- "deviceConnect": {
85
+ "mqttOut": {
78
86
  "type": "object",
79
87
  "patternProperties": {
80
88
  ".*": {
@@ -82,7 +90,7 @@
82
90
  }
83
91
  }
84
92
  },
85
- "deviceDisconnect": {
93
+ "notebook": {
86
94
  "type": "object",
87
95
  "patternProperties": {
88
96
  ".*": {
@@ -90,7 +98,7 @@
90
98
  }
91
99
  }
92
100
  },
93
- "endpoint": {
101
+ "timer": {
94
102
  "type": "object",
95
103
  "patternProperties": {
96
104
  ".*": {
@@ -98,7 +106,15 @@
98
106
  }
99
107
  }
100
108
  },
101
- "integration": {
109
+ "virtualButton": {
110
+ "type": "object",
111
+ "patternProperties": {
112
+ ".*": {
113
+ "type": "number"
114
+ }
115
+ }
116
+ },
117
+ "webhook": {
102
118
  "type": "object",
103
119
  "patternProperties": {
104
120
  ".*": {
@@ -51,7 +51,10 @@
51
51
  "deviceRecipe.*",
52
52
  "deviceRecipes.*",
53
53
  "devices.*",
54
+ "edgeDeployment.*",
54
55
  "edgeDeployments.*",
56
+ "embeddedDeployment.*",
57
+ "embeddedDeployments.*",
55
58
  "event.*",
56
59
  "events.*",
57
60
  "experience.*",
@@ -151,6 +154,7 @@
151
154
  "device.getLogEntries",
152
155
  "device.getState",
153
156
  "device.patch",
157
+ "device.payloadCounts",
154
158
  "device.removeData",
155
159
  "device.sendCommand",
156
160
  "device.sendState",
@@ -169,14 +173,22 @@
169
173
  "devices.detailedSummary",
170
174
  "devices.export",
171
175
  "devices.get",
176
+ "devices.payloadCounts",
172
177
  "devices.post",
173
178
  "devices.sendCommand",
174
179
  "devices.tagKeys",
175
180
  "devices.tagValues",
181
+ "edgeDeployment.get",
176
182
  "edgeDeployments.get",
177
183
  "edgeDeployments.release",
178
184
  "edgeDeployments.remove",
179
185
  "edgeDeployments.replace",
186
+ "embeddedDeployment.get",
187
+ "embeddedDeployments.get",
188
+ "embeddedDeployments.release",
189
+ "embeddedDeployments.remove",
190
+ "embeddedDeployments.replace",
191
+ "embeddedDeployments.export",
180
192
  "event.delete",
181
193
  "event.get",
182
194
  "event.patch",
@@ -354,6 +366,13 @@
354
366
  "instanceOrgMembers.*",
355
367
  "instanceOrgMembers.get",
356
368
  "instanceOrgMembers.post",
369
+ "instanceOrgInvite.*",
370
+ "instanceOrgInvite.get",
371
+ "instanceOrgInvite.delete",
372
+ "instanceOrgInvite.resendInvite",
373
+ "instanceOrgInvites.*",
374
+ "instanceOrgInvites.get",
375
+ "instanceOrgInvites.post",
357
376
  "instanceApiTokens.*",
358
377
  "instanceApiTokens.get",
359
378
  "instanceApiTokens.post",
@@ -110,7 +110,10 @@
110
110
  "deviceRecipe.*",
111
111
  "deviceRecipes.*",
112
112
  "devices.*",
113
+ "edgeDeployment.*",
113
114
  "edgeDeployments.*",
115
+ "embeddedDeployment.*",
116
+ "embeddedDeployments.*",
114
117
  "event.*",
115
118
  "events.*",
116
119
  "experience.*",
@@ -210,6 +213,7 @@
210
213
  "device.getLogEntries",
211
214
  "device.getState",
212
215
  "device.patch",
216
+ "device.payloadCounts",
213
217
  "device.removeData",
214
218
  "device.sendCommand",
215
219
  "device.sendState",
@@ -228,14 +232,22 @@
228
232
  "devices.detailedSummary",
229
233
  "devices.export",
230
234
  "devices.get",
235
+ "devices.payloadCounts",
231
236
  "devices.post",
232
237
  "devices.sendCommand",
233
238
  "devices.tagKeys",
234
239
  "devices.tagValues",
240
+ "edgeDeployment.get",
235
241
  "edgeDeployments.get",
236
242
  "edgeDeployments.release",
237
243
  "edgeDeployments.remove",
238
244
  "edgeDeployments.replace",
245
+ "embeddedDeployment.get",
246
+ "embeddedDeployments.get",
247
+ "embeddedDeployments.release",
248
+ "embeddedDeployments.remove",
249
+ "embeddedDeployments.replace",
250
+ "embeddedDeployments.export",
239
251
  "event.delete",
240
252
  "event.get",
241
253
  "event.patch",
@@ -413,6 +425,13 @@
413
425
  "instanceOrgMembers.*",
414
426
  "instanceOrgMembers.get",
415
427
  "instanceOrgMembers.post",
428
+ "instanceOrgInvite.*",
429
+ "instanceOrgInvite.get",
430
+ "instanceOrgInvite.delete",
431
+ "instanceOrgInvite.resendInvite",
432
+ "instanceOrgInvites.*",
433
+ "instanceOrgInvites.get",
434
+ "instanceOrgInvites.post",
416
435
  "instanceApiTokens.*",
417
436
  "instanceApiTokens.get",
418
437
  "instanceApiTokens.post",
@@ -15,6 +15,10 @@
15
15
  "deviceId": {
16
16
  "type": "string",
17
17
  "pattern": "^[A-Fa-f\\d]{24}$"
18
+ },
19
+ "deploymentId": {
20
+ "type": "string",
21
+ "pattern": "^[A-Fa-f\\d]{24}$"
18
22
  }
19
23
  },
20
24
  "required": [