@itentialopensource/adapter-netbrain 1.1.1 → 1.2.0

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.
Files changed (42) hide show
  1. package/CALLS.md +18 -0
  2. package/CHANGELOG.md +8 -0
  3. package/CONTRIBUTING.md +1 -160
  4. package/ENHANCE.md +2 -2
  5. package/README.md +32 -23
  6. package/adapter.js +157 -329
  7. package/adapterBase.js +549 -879
  8. package/changelogs/changelog.md +151 -0
  9. package/metadata.json +47 -0
  10. package/package.json +24 -27
  11. package/pronghorn.json +981 -642
  12. package/propertiesSchema.json +431 -31
  13. package/refs?service=git-upload-pack +0 -0
  14. package/report/adapter-openapi.json +8023 -0
  15. package/report/adapter-openapi.yaml +5944 -0
  16. package/report/adapterInfo.json +8 -8
  17. package/report/updateReport1691507690977.json +120 -0
  18. package/report/updateReport1692202690574.json +120 -0
  19. package/report/updateReport1694462665367.json +120 -0
  20. package/report/updateReport1698421227451.json +120 -0
  21. package/sampleProperties.json +63 -2
  22. package/test/integration/adapterTestBasicGet.js +2 -4
  23. package/test/integration/adapterTestConnectivity.js +91 -42
  24. package/test/integration/adapterTestIntegration.js +130 -2
  25. package/test/unit/adapterBaseTestUnit.js +388 -313
  26. package/test/unit/adapterTestUnit.js +338 -130
  27. package/utils/adapterInfo.js +1 -1
  28. package/utils/addAuth.js +1 -1
  29. package/utils/artifactize.js +1 -1
  30. package/utils/checkMigrate.js +1 -1
  31. package/utils/entitiesToDB.js +2 -2
  32. package/utils/findPath.js +1 -1
  33. package/utils/methodDocumentor.js +273 -0
  34. package/utils/modify.js +13 -15
  35. package/utils/packModificationScript.js +1 -1
  36. package/utils/pre-commit.sh +2 -0
  37. package/utils/taskMover.js +309 -0
  38. package/utils/tbScript.js +89 -34
  39. package/utils/tbUtils.js +41 -21
  40. package/utils/testRunner.js +1 -1
  41. package/utils/troubleshootingAdapter.js +9 -6
  42. package/workflows/README.md +0 -3
@@ -18,6 +18,11 @@
18
18
  "minimum": 1,
19
19
  "maximum": 65535
20
20
  },
21
+ "choosepath": {
22
+ "type": "string",
23
+ "description": "choose the path to use -- requires entityPath choices",
24
+ "default": ""
25
+ },
21
26
  "base_path": {
22
27
  "type": "string",
23
28
  "description": "a base path that is consistent across api calls",
@@ -78,6 +83,14 @@
78
83
  "https"
79
84
  ]
80
85
  },
86
+ "service": {
87
+ "type": "string",
88
+ "description": "Service we are integrating with -- used with AWS Authentication",
89
+ "examples": [
90
+ "ec2",
91
+ "route53"
92
+ ]
93
+ },
81
94
  "authentication": {
82
95
  "$ref": "#/definitions/authentication"
83
96
  },
@@ -101,6 +114,9 @@
101
114
  },
102
115
  "devicebroker": {
103
116
  "$ref": "#/definitions/devicebroker"
117
+ },
118
+ "cache": {
119
+ "$ref": "#/definitions/cache"
104
120
  }
105
121
  },
106
122
  "required": [
@@ -122,7 +138,9 @@
122
138
  "static_token",
123
139
  "jwt_token",
124
140
  "request_token",
125
- "no_authentication"
141
+ "no_authentication",
142
+ "multi_step_authentication",
143
+ "aws_authentication"
126
144
  ]
127
145
  },
128
146
  "username": {
@@ -265,6 +283,74 @@
265
283
  "type": "string",
266
284
  "description": "The domainId the adapter is working with",
267
285
  "default": ""
286
+ },
287
+ "sensitive": {
288
+ "type": "array",
289
+ "description": "List of sensitive keys to search and hide values from being logged",
290
+ "default": [],
291
+ "items": {
292
+ "type": "string"
293
+ }
294
+ },
295
+ "sso": {
296
+ "type": "object",
297
+ "properties": {
298
+ "protocol": {
299
+ "type": "string",
300
+ "description": "the protocol to request token from system",
301
+ "default": "",
302
+ "enum": [
303
+ "http",
304
+ "https",
305
+ ""
306
+ ]
307
+ },
308
+ "host": {
309
+ "type": "string",
310
+ "description": "hostname of the authentication system",
311
+ "default": "",
312
+ "examples": [
313
+ "systemx.customer.com"
314
+ ]
315
+ },
316
+ "port": {
317
+ "type": "integer",
318
+ "description": "port on which to connect to the authentication system",
319
+ "default": 0,
320
+ "minimum": 0,
321
+ "maximum": 65535
322
+ }
323
+ }
324
+ },
325
+ "multiStepAuthCalls": {
326
+ "type": "array",
327
+ "items": {
328
+ "type": "object",
329
+ "properties": {
330
+ "name": {
331
+ "type": "string",
332
+ "description": "Id of the step call",
333
+ "examples": [
334
+ "getAccessToken"
335
+ ]
336
+ },
337
+ "requestFields": {
338
+ "type": "object",
339
+ "description": "The fields set in step request"
340
+ },
341
+ "responseFields": {
342
+ "type": "object",
343
+ "description": "The fields from the step result"
344
+ },
345
+ "successfullResponseCode": {
346
+ "type": "integer",
347
+ "description": "Expected response code for given step, if not set any successfull http response is accepted",
348
+ "examples": [
349
+ 200
350
+ ]
351
+ }
352
+ }
353
+ }
268
354
  }
269
355
  },
270
356
  "required": [
@@ -367,7 +453,13 @@
367
453
  },
368
454
  "query_object": {
369
455
  "type": "object",
370
- "description": "Query object { device: xxxxx } to be placed into the healthcheck, will be converted to query string by the adapter"
456
+ "description": "Query object { device: xxxxx } to be placed into the healthcheck, will be converted to query string by the adapter",
457
+ "default": {}
458
+ },
459
+ "addlHeaders": {
460
+ "type": "object",
461
+ "description": "headers that will be appended to the headers for the call",
462
+ "default": {}
371
463
  }
372
464
  },
373
465
  "required": [
@@ -447,6 +539,7 @@
447
539
  "priorities": {
448
540
  "type": "array",
449
541
  "description": "define your priorities here",
542
+ "default": [],
450
543
  "items": {
451
544
  "type": "object",
452
545
  "properties": {
@@ -517,6 +610,7 @@
517
610
  "failover_codes": {
518
611
  "type": "array",
519
612
  "description": "An array of codes where it is ok to try another method",
613
+ "default": [],
520
614
  "items": {
521
615
  "type": "integer"
522
616
  }
@@ -534,19 +628,23 @@
534
628
  "properties": {
535
629
  "payload": {
536
630
  "type": "object",
537
- "description": "payload fields that will be appended to the provided payload (excluding GET calls)"
631
+ "description": "payload fields that will be appended to the provided payload (excluding GET calls)",
632
+ "default": {}
538
633
  },
539
634
  "uriOptions": {
540
635
  "type": "object",
541
- "description": "options that will be appended to all GET calls"
636
+ "description": "options that will be appended to all GET calls",
637
+ "default": {}
542
638
  },
543
639
  "addlHeaders": {
544
640
  "type": "object",
545
- "description": "headers that will be appended to the headers for the call"
641
+ "description": "headers that will be appended to the headers for the call",
642
+ "default": {}
546
643
  },
547
644
  "authData": {
548
645
  "type": "object",
549
- "description": "authentication data that will be appended to the payload for authentication calls"
646
+ "description": "authentication data that will be appended to the payload for authentication calls",
647
+ "default": {}
550
648
  }
551
649
  }
552
650
  },
@@ -861,6 +959,7 @@
861
959
  "type": "array",
862
960
  "description": "Broker call(s) to getDevice",
863
961
  "items": {
962
+ "type": "object",
864
963
  "properties": {
865
964
  "path": {
866
965
  "type": "string",
@@ -876,21 +975,30 @@
876
975
  "type": "object",
877
976
  "description": "The json object with query parameters of the call to getDevice",
878
977
  "additionalProperties": {
879
- "type": "string"
978
+ "type": [
979
+ "string",
980
+ "number"
981
+ ]
880
982
  }
881
983
  },
882
984
  "body": {
883
985
  "type": "object",
884
986
  "description": "The json object with body of the call to getDevice",
885
987
  "additionalProperties": {
886
- "type": "string"
988
+ "type": [
989
+ "string",
990
+ "number"
991
+ ]
887
992
  }
888
993
  },
889
994
  "headers": {
890
995
  "type": "object",
891
996
  "description": "The json object with headers of the call to getDevice",
892
997
  "additionalProperties": {
893
- "type": "string"
998
+ "type": [
999
+ "string",
1000
+ "number"
1001
+ ]
894
1002
  }
895
1003
  },
896
1004
  "handleFailure": {
@@ -906,7 +1014,10 @@
906
1014
  "type": "object",
907
1015
  "description": "The json object with response fields of the call to getDevice",
908
1016
  "additionalProperties": {
909
- "type": "string"
1017
+ "type": [
1018
+ "string",
1019
+ "number"
1020
+ ]
910
1021
  },
911
1022
  "properties": {}
912
1023
  },
@@ -919,7 +1030,10 @@
919
1030
  "type": "object",
920
1031
  "description": "The json object with response fields of the call to getDevice",
921
1032
  "additionalProperties": {
922
- "type": "string"
1033
+ "type": [
1034
+ "string",
1035
+ "number"
1036
+ ]
923
1037
  },
924
1038
  "properties": {
925
1039
  "name": {
@@ -956,6 +1070,7 @@
956
1070
  "type": "array",
957
1071
  "description": "Broker call(s) to getDevicesFiltered",
958
1072
  "items": {
1073
+ "type": "object",
959
1074
  "properties": {
960
1075
  "path": {
961
1076
  "type": "string",
@@ -967,25 +1082,66 @@
967
1082
  "description": "The method of the call to getDevicesFiltered",
968
1083
  "default": "GET"
969
1084
  },
1085
+ "pagination": {
1086
+ "type": "object",
1087
+ "description": "todo",
1088
+ "properties": {
1089
+ "offsetVar": {
1090
+ "type": "string",
1091
+ "description": "Name of variable that defines how to go to next set of results"
1092
+ },
1093
+ "limitVar": {
1094
+ "type": "string",
1095
+ "description": "Name of variable that defines the max results returned in a request"
1096
+ },
1097
+ "incrementBy": {
1098
+ "type": "string",
1099
+ "enum": [
1100
+ "limit",
1101
+ "page"
1102
+ ],
1103
+ "description": "How to incremenet offset. Default limit",
1104
+ "default": "limit"
1105
+ },
1106
+ "requestLocation": {
1107
+ "type": "string",
1108
+ "enum": [
1109
+ "query",
1110
+ "body"
1111
+ ],
1112
+ "description": "Where in request the pagination data goes",
1113
+ "default": "query"
1114
+ }
1115
+ }
1116
+ },
970
1117
  "query": {
971
1118
  "type": "object",
972
1119
  "description": "The json object with query parameters of the call to getDevicesFiltered",
973
1120
  "additionalProperties": {
974
- "type": "string"
1121
+ "type": [
1122
+ "string",
1123
+ "number"
1124
+ ]
975
1125
  }
976
1126
  },
977
1127
  "body": {
978
1128
  "type": "object",
979
1129
  "description": "The json object with body of the call to getDevicesFiltered",
980
1130
  "additionalProperties": {
981
- "type": "string"
1131
+ "type": [
1132
+ "string",
1133
+ "number"
1134
+ ]
982
1135
  }
983
1136
  },
984
1137
  "headers": {
985
1138
  "type": "object",
986
1139
  "description": "The json object with headers of the call to getDevicesFiltered",
987
1140
  "additionalProperties": {
988
- "type": "string"
1141
+ "type": [
1142
+ "string",
1143
+ "number"
1144
+ ]
989
1145
  }
990
1146
  },
991
1147
  "handleFailure": {
@@ -1001,7 +1157,10 @@
1001
1157
  "type": "object",
1002
1158
  "description": "The json object with response fields of the call to getDevice",
1003
1159
  "additionalProperties": {
1004
- "type": "string"
1160
+ "type": [
1161
+ "string",
1162
+ "number"
1163
+ ]
1005
1164
  },
1006
1165
  "properties": {}
1007
1166
  },
@@ -1014,7 +1173,10 @@
1014
1173
  "type": "object",
1015
1174
  "description": "The json object with response fields of the call to getDevicesFiltered",
1016
1175
  "additionalProperties": {
1017
- "type": "string"
1176
+ "type": [
1177
+ "string",
1178
+ "number"
1179
+ ]
1018
1180
  },
1019
1181
  "properties": {
1020
1182
  "name": {
@@ -1051,6 +1213,7 @@
1051
1213
  "type": "array",
1052
1214
  "description": "Broker call(s) to determine if the device isAlive",
1053
1215
  "items": {
1216
+ "type": "object",
1054
1217
  "properties": {
1055
1218
  "path": {
1056
1219
  "type": "string",
@@ -1066,21 +1229,30 @@
1066
1229
  "type": "object",
1067
1230
  "description": "The json object with query parameters of the call to isAlive",
1068
1231
  "additionalProperties": {
1069
- "type": "string"
1232
+ "type": [
1233
+ "string",
1234
+ "number"
1235
+ ]
1070
1236
  }
1071
1237
  },
1072
1238
  "body": {
1073
1239
  "type": "object",
1074
1240
  "description": "The json object with body of the call to isAlive",
1075
1241
  "additionalProperties": {
1076
- "type": "string"
1242
+ "type": [
1243
+ "string",
1244
+ "number"
1245
+ ]
1077
1246
  }
1078
1247
  },
1079
1248
  "headers": {
1080
1249
  "type": "object",
1081
1250
  "description": "The json object with headers of the call to isAlive",
1082
1251
  "additionalProperties": {
1083
- "type": "string"
1252
+ "type": [
1253
+ "string",
1254
+ "number"
1255
+ ]
1084
1256
  }
1085
1257
  },
1086
1258
  "handleFailure": {
@@ -1096,7 +1268,10 @@
1096
1268
  "type": "object",
1097
1269
  "description": "The json object with response fields of the call to getDevice",
1098
1270
  "additionalProperties": {
1099
- "type": "string"
1271
+ "type": [
1272
+ "string",
1273
+ "number"
1274
+ ]
1100
1275
  },
1101
1276
  "properties": {}
1102
1277
  },
@@ -1109,7 +1284,10 @@
1109
1284
  "type": "object",
1110
1285
  "description": "The json object with response fields of the call to isAlive",
1111
1286
  "additionalProperties": {
1112
- "type": "string"
1287
+ "type": [
1288
+ "string",
1289
+ "number"
1290
+ ]
1113
1291
  },
1114
1292
  "properties": {
1115
1293
  "status": {
@@ -1131,6 +1309,7 @@
1131
1309
  "type": "array",
1132
1310
  "description": "Broker call(s) to getConfig",
1133
1311
  "items": {
1312
+ "type": "object",
1134
1313
  "properties": {
1135
1314
  "path": {
1136
1315
  "type": "string",
@@ -1146,21 +1325,30 @@
1146
1325
  "type": "object",
1147
1326
  "description": "The json object with query parameters of the call to getConfig",
1148
1327
  "additionalProperties": {
1149
- "type": "string"
1328
+ "type": [
1329
+ "string",
1330
+ "number"
1331
+ ]
1150
1332
  }
1151
1333
  },
1152
1334
  "body": {
1153
1335
  "type": "object",
1154
1336
  "description": "The json object with body of the call to getConfig",
1155
1337
  "additionalProperties": {
1156
- "type": "string"
1338
+ "type": [
1339
+ "string",
1340
+ "number"
1341
+ ]
1157
1342
  }
1158
1343
  },
1159
1344
  "headers": {
1160
1345
  "type": "object",
1161
1346
  "description": "The json object with headers of the call to getConfig",
1162
1347
  "additionalProperties": {
1163
- "type": "string"
1348
+ "type": [
1349
+ "string",
1350
+ "number"
1351
+ ]
1164
1352
  }
1165
1353
  },
1166
1354
  "handleFailure": {
@@ -1176,7 +1364,10 @@
1176
1364
  "type": "object",
1177
1365
  "description": "The json object with response fields of the call to getDevice",
1178
1366
  "additionalProperties": {
1179
- "type": "string"
1367
+ "type": [
1368
+ "string",
1369
+ "number"
1370
+ ]
1180
1371
  },
1181
1372
  "properties": {}
1182
1373
  },
@@ -1189,7 +1380,10 @@
1189
1380
  "type": "object",
1190
1381
  "description": "The json object with response fields of the call to getConfig",
1191
1382
  "additionalProperties": {
1192
- "type": "string"
1383
+ "type": [
1384
+ "string",
1385
+ "number"
1386
+ ]
1193
1387
  },
1194
1388
  "properties": {}
1195
1389
  }
@@ -1200,6 +1394,7 @@
1200
1394
  "type": "array",
1201
1395
  "description": "Broker call(s) to getCount",
1202
1396
  "items": {
1397
+ "type": "object",
1203
1398
  "properties": {
1204
1399
  "path": {
1205
1400
  "type": "string",
@@ -1215,21 +1410,30 @@
1215
1410
  "type": "object",
1216
1411
  "description": "The json object with query parameters of the call to getCount",
1217
1412
  "additionalProperties": {
1218
- "type": "string"
1413
+ "type": [
1414
+ "string",
1415
+ "number"
1416
+ ]
1219
1417
  }
1220
1418
  },
1221
1419
  "body": {
1222
1420
  "type": "object",
1223
1421
  "description": "The json object with body of the call to getCount",
1224
1422
  "additionalProperties": {
1225
- "type": "string"
1423
+ "type": [
1424
+ "string",
1425
+ "number"
1426
+ ]
1226
1427
  }
1227
1428
  },
1228
1429
  "headers": {
1229
1430
  "type": "object",
1230
1431
  "description": "The json object with headers of the call to getCount",
1231
1432
  "additionalProperties": {
1232
- "type": "string"
1433
+ "type": [
1434
+ "string",
1435
+ "number"
1436
+ ]
1233
1437
  }
1234
1438
  },
1235
1439
  "handleFailure": {
@@ -1245,7 +1449,10 @@
1245
1449
  "type": "object",
1246
1450
  "description": "The json object with response fields of the call to getDevice",
1247
1451
  "additionalProperties": {
1248
- "type": "string"
1452
+ "type": [
1453
+ "string",
1454
+ "number"
1455
+ ]
1249
1456
  },
1250
1457
  "properties": {}
1251
1458
  },
@@ -1258,7 +1465,10 @@
1258
1465
  "type": "object",
1259
1466
  "description": "The json object with response fields of the call to getConfig",
1260
1467
  "additionalProperties": {
1261
- "type": "string"
1468
+ "type": [
1469
+ "string",
1470
+ "number"
1471
+ ]
1262
1472
  },
1263
1473
  "properties": {}
1264
1474
  }
@@ -1266,6 +1476,196 @@
1266
1476
  }
1267
1477
  }
1268
1478
  }
1479
+ },
1480
+ "cache": {
1481
+ "type": "object",
1482
+ "properties": {
1483
+ "enabled": {
1484
+ "type": "boolean",
1485
+ "description": "Whether or not cache is enabled for adapter",
1486
+ "default": false
1487
+ },
1488
+ "entities": {
1489
+ "type": "array",
1490
+ "description": "Information for the cached entities",
1491
+ "items": {
1492
+ "type": "object",
1493
+ "properties": {
1494
+ "entityType": {
1495
+ "type": "string",
1496
+ "description": "The name of the entity - should match adapter entity configuration or a broker (e.g. Device)",
1497
+ "default": ""
1498
+ },
1499
+ "frequency": {
1500
+ "type": "integer",
1501
+ "description": "how long (in minutes) we wait to re-populate the cache",
1502
+ "default": 1440,
1503
+ "maximum": 10080
1504
+ },
1505
+ "flushOnFail": {
1506
+ "type": "boolean",
1507
+ "description": "Whether to clear the cache we have if the populate failed",
1508
+ "default": false
1509
+ },
1510
+ "limit": {
1511
+ "type": "integer",
1512
+ "description": "maximum number of items to keep in cache",
1513
+ "default": 1000
1514
+ },
1515
+ "retryAttempts": {
1516
+ "type": "integer",
1517
+ "description": "number of times to retry the populate call before failure",
1518
+ "default": 5
1519
+ },
1520
+ "sort": {
1521
+ "type": "boolean",
1522
+ "description": "whether to sort the data or not",
1523
+ "default": true
1524
+ },
1525
+ "populate": {
1526
+ "type": "array",
1527
+ "description": "Information for the call(s) used to populate the cache",
1528
+ "items": {
1529
+ "type": "object",
1530
+ "properties": {
1531
+ "path": {
1532
+ "type": "string",
1533
+ "description": "The fully qualified path of the call to getDevice (e.g. /rest/api/device/{deviceid})",
1534
+ "default": ""
1535
+ },
1536
+ "method": {
1537
+ "type": "string",
1538
+ "description": "The method of the call to getDevice",
1539
+ "default": "GET"
1540
+ },
1541
+ "pagination": {
1542
+ "type": "object",
1543
+ "description": "todo",
1544
+ "properties": {
1545
+ "offsetVar": {
1546
+ "type": "string",
1547
+ "description": "Name of variable that defines how to go to next set of results"
1548
+ },
1549
+ "limitVar": {
1550
+ "type": "string",
1551
+ "description": "Name of variable that defines the max results returned in a request"
1552
+ },
1553
+ "incrementBy": {
1554
+ "type": "string",
1555
+ "enum": [
1556
+ "limit",
1557
+ "page"
1558
+ ],
1559
+ "description": "How to incremenet offset. Default limit",
1560
+ "default": "limit"
1561
+ },
1562
+ "requestLocation": {
1563
+ "type": "string",
1564
+ "enum": [
1565
+ "query",
1566
+ "body"
1567
+ ],
1568
+ "description": "Where in request the pagination data goes",
1569
+ "default": "query"
1570
+ }
1571
+ }
1572
+ },
1573
+ "query": {
1574
+ "type": "object",
1575
+ "description": "The json object with query parameters of the call to getDevice",
1576
+ "additionalProperties": {
1577
+ "type": [
1578
+ "string",
1579
+ "number"
1580
+ ]
1581
+ }
1582
+ },
1583
+ "body": {
1584
+ "type": "object",
1585
+ "description": "The json object with body of the call to getDevice",
1586
+ "additionalProperties": {
1587
+ "type": [
1588
+ "string",
1589
+ "number"
1590
+ ]
1591
+ }
1592
+ },
1593
+ "headers": {
1594
+ "type": "object",
1595
+ "description": "The json object with headers of the call to getDevice",
1596
+ "additionalProperties": {
1597
+ "type": [
1598
+ "string",
1599
+ "number"
1600
+ ]
1601
+ }
1602
+ },
1603
+ "handleFailure": {
1604
+ "type": "string",
1605
+ "enum": [
1606
+ "ignore",
1607
+ "fail"
1608
+ ],
1609
+ "description": "return failure or ignore failure",
1610
+ "default": "ignore"
1611
+ },
1612
+ "requestFields": {
1613
+ "type": "object",
1614
+ "description": "The json object with response fields of the call to getDevice",
1615
+ "additionalProperties": {
1616
+ "type": [
1617
+ "string",
1618
+ "number"
1619
+ ]
1620
+ },
1621
+ "properties": {}
1622
+ },
1623
+ "responseDatakey": {
1624
+ "type": "string",
1625
+ "description": "place in the response where the data is - supports jsonquery",
1626
+ "default": ""
1627
+ },
1628
+ "responseFields": {
1629
+ "type": "object",
1630
+ "description": "The json object with response fields of the call to getDevice",
1631
+ "additionalProperties": {
1632
+ "type": [
1633
+ "string",
1634
+ "number"
1635
+ ]
1636
+ }
1637
+ }
1638
+ }
1639
+ }
1640
+ },
1641
+ "cachedTasks": {
1642
+ "type": "array",
1643
+ "description": "Information for the call(s) used to populate the cache",
1644
+ "items": {
1645
+ "type": "object",
1646
+ "properties": {
1647
+ "name": {
1648
+ "type": "string",
1649
+ "description": "the name of the task/action that should utilize cached information",
1650
+ "default": ""
1651
+ },
1652
+ "filterField": {
1653
+ "type": "string",
1654
+ "description": "the field that contains filter information for this call",
1655
+ "default": ""
1656
+ },
1657
+ "filterLoc": {
1658
+ "type": "string",
1659
+ "description": "the field that contains the location of the filter field",
1660
+ "default": ""
1661
+ }
1662
+ }
1663
+ }
1664
+ }
1665
+ }
1666
+ }
1667
+ }
1668
+ }
1269
1669
  }
1270
1670
  }
1271
1671
  }