@itentialopensource/adapter-efficientip_solidserver 0.2.0 → 0.3.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 +1296 -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 +158 -329
  7. package/adapterBase.js +549 -879
  8. package/changelogs/changelog.md +16 -0
  9. package/metadata.json +49 -0
  10. package/package.json +24 -25
  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 +41906 -0
  15. package/report/adapter-openapi.yaml +23138 -0
  16. package/report/adapterInfo.json +8 -8
  17. package/report/updateReport1691508450223.json +120 -0
  18. package/report/updateReport1692202927301.json +120 -0
  19. package/report/updateReport1694465845842.json +120 -0
  20. package/report/updateReport1698421858198.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 -112
  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": {
@@ -255,6 +273,74 @@
255
273
  "type": "string",
256
274
  "description": "The grant type for OAuth requests - can also provide in schema",
257
275
  "default": ""
276
+ },
277
+ "sensitive": {
278
+ "type": "array",
279
+ "description": "List of sensitive keys to search and hide values from being logged",
280
+ "default": [],
281
+ "items": {
282
+ "type": "string"
283
+ }
284
+ },
285
+ "sso": {
286
+ "type": "object",
287
+ "properties": {
288
+ "protocol": {
289
+ "type": "string",
290
+ "description": "the protocol to request token from system",
291
+ "default": "",
292
+ "enum": [
293
+ "http",
294
+ "https",
295
+ ""
296
+ ]
297
+ },
298
+ "host": {
299
+ "type": "string",
300
+ "description": "hostname of the authentication system",
301
+ "default": "",
302
+ "examples": [
303
+ "systemx.customer.com"
304
+ ]
305
+ },
306
+ "port": {
307
+ "type": "integer",
308
+ "description": "port on which to connect to the authentication system",
309
+ "default": 0,
310
+ "minimum": 0,
311
+ "maximum": 65535
312
+ }
313
+ }
314
+ },
315
+ "multiStepAuthCalls": {
316
+ "type": "array",
317
+ "items": {
318
+ "type": "object",
319
+ "properties": {
320
+ "name": {
321
+ "type": "string",
322
+ "description": "Id of the step call",
323
+ "examples": [
324
+ "getAccessToken"
325
+ ]
326
+ },
327
+ "requestFields": {
328
+ "type": "object",
329
+ "description": "The fields set in step request"
330
+ },
331
+ "responseFields": {
332
+ "type": "object",
333
+ "description": "The fields from the step result"
334
+ },
335
+ "successfullResponseCode": {
336
+ "type": "integer",
337
+ "description": "Expected response code for given step, if not set any successfull http response is accepted",
338
+ "examples": [
339
+ 200
340
+ ]
341
+ }
342
+ }
343
+ }
258
344
  }
259
345
  },
260
346
  "required": [
@@ -357,7 +443,13 @@
357
443
  },
358
444
  "query_object": {
359
445
  "type": "object",
360
- "description": "Query object { device: xxxxx } to be placed into the healthcheck, will be converted to query string by the adapter"
446
+ "description": "Query object { device: xxxxx } to be placed into the healthcheck, will be converted to query string by the adapter",
447
+ "default": {}
448
+ },
449
+ "addlHeaders": {
450
+ "type": "object",
451
+ "description": "headers that will be appended to the headers for the call",
452
+ "default": {}
361
453
  }
362
454
  },
363
455
  "required": [
@@ -437,6 +529,7 @@
437
529
  "priorities": {
438
530
  "type": "array",
439
531
  "description": "define your priorities here",
532
+ "default": [],
440
533
  "items": {
441
534
  "type": "object",
442
535
  "properties": {
@@ -507,6 +600,7 @@
507
600
  "failover_codes": {
508
601
  "type": "array",
509
602
  "description": "An array of codes where it is ok to try another method",
603
+ "default": [],
510
604
  "items": {
511
605
  "type": "integer"
512
606
  }
@@ -524,19 +618,23 @@
524
618
  "properties": {
525
619
  "payload": {
526
620
  "type": "object",
527
- "description": "payload fields that will be appended to the provided payload (excluding GET calls)"
621
+ "description": "payload fields that will be appended to the provided payload (excluding GET calls)",
622
+ "default": {}
528
623
  },
529
624
  "uriOptions": {
530
625
  "type": "object",
531
- "description": "options that will be appended to all GET calls"
626
+ "description": "options that will be appended to all GET calls",
627
+ "default": {}
532
628
  },
533
629
  "addlHeaders": {
534
630
  "type": "object",
535
- "description": "headers that will be appended to the headers for the call"
631
+ "description": "headers that will be appended to the headers for the call",
632
+ "default": {}
536
633
  },
537
634
  "authData": {
538
635
  "type": "object",
539
- "description": "authentication data that will be appended to the payload for authentication calls"
636
+ "description": "authentication data that will be appended to the payload for authentication calls",
637
+ "default": {}
540
638
  }
541
639
  }
542
640
  },
@@ -851,6 +949,7 @@
851
949
  "type": "array",
852
950
  "description": "Broker call(s) to getDevice",
853
951
  "items": {
952
+ "type": "object",
854
953
  "properties": {
855
954
  "path": {
856
955
  "type": "string",
@@ -866,21 +965,30 @@
866
965
  "type": "object",
867
966
  "description": "The json object with query parameters of the call to getDevice",
868
967
  "additionalProperties": {
869
- "type": "string"
968
+ "type": [
969
+ "string",
970
+ "number"
971
+ ]
870
972
  }
871
973
  },
872
974
  "body": {
873
975
  "type": "object",
874
976
  "description": "The json object with body of the call to getDevice",
875
977
  "additionalProperties": {
876
- "type": "string"
978
+ "type": [
979
+ "string",
980
+ "number"
981
+ ]
877
982
  }
878
983
  },
879
984
  "headers": {
880
985
  "type": "object",
881
986
  "description": "The json object with headers of the call to getDevice",
882
987
  "additionalProperties": {
883
- "type": "string"
988
+ "type": [
989
+ "string",
990
+ "number"
991
+ ]
884
992
  }
885
993
  },
886
994
  "handleFailure": {
@@ -896,7 +1004,10 @@
896
1004
  "type": "object",
897
1005
  "description": "The json object with response fields of the call to getDevice",
898
1006
  "additionalProperties": {
899
- "type": "string"
1007
+ "type": [
1008
+ "string",
1009
+ "number"
1010
+ ]
900
1011
  },
901
1012
  "properties": {}
902
1013
  },
@@ -909,7 +1020,10 @@
909
1020
  "type": "object",
910
1021
  "description": "The json object with response fields of the call to getDevice",
911
1022
  "additionalProperties": {
912
- "type": "string"
1023
+ "type": [
1024
+ "string",
1025
+ "number"
1026
+ ]
913
1027
  },
914
1028
  "properties": {
915
1029
  "name": {
@@ -946,6 +1060,7 @@
946
1060
  "type": "array",
947
1061
  "description": "Broker call(s) to getDevicesFiltered",
948
1062
  "items": {
1063
+ "type": "object",
949
1064
  "properties": {
950
1065
  "path": {
951
1066
  "type": "string",
@@ -957,25 +1072,66 @@
957
1072
  "description": "The method of the call to getDevicesFiltered",
958
1073
  "default": "GET"
959
1074
  },
1075
+ "pagination": {
1076
+ "type": "object",
1077
+ "description": "todo",
1078
+ "properties": {
1079
+ "offsetVar": {
1080
+ "type": "string",
1081
+ "description": "Name of variable that defines how to go to next set of results"
1082
+ },
1083
+ "limitVar": {
1084
+ "type": "string",
1085
+ "description": "Name of variable that defines the max results returned in a request"
1086
+ },
1087
+ "incrementBy": {
1088
+ "type": "string",
1089
+ "enum": [
1090
+ "limit",
1091
+ "page"
1092
+ ],
1093
+ "description": "How to incremenet offset. Default limit",
1094
+ "default": "limit"
1095
+ },
1096
+ "requestLocation": {
1097
+ "type": "string",
1098
+ "enum": [
1099
+ "query",
1100
+ "body"
1101
+ ],
1102
+ "description": "Where in request the pagination data goes",
1103
+ "default": "query"
1104
+ }
1105
+ }
1106
+ },
960
1107
  "query": {
961
1108
  "type": "object",
962
1109
  "description": "The json object with query parameters of the call to getDevicesFiltered",
963
1110
  "additionalProperties": {
964
- "type": "string"
1111
+ "type": [
1112
+ "string",
1113
+ "number"
1114
+ ]
965
1115
  }
966
1116
  },
967
1117
  "body": {
968
1118
  "type": "object",
969
1119
  "description": "The json object with body of the call to getDevicesFiltered",
970
1120
  "additionalProperties": {
971
- "type": "string"
1121
+ "type": [
1122
+ "string",
1123
+ "number"
1124
+ ]
972
1125
  }
973
1126
  },
974
1127
  "headers": {
975
1128
  "type": "object",
976
1129
  "description": "The json object with headers of the call to getDevicesFiltered",
977
1130
  "additionalProperties": {
978
- "type": "string"
1131
+ "type": [
1132
+ "string",
1133
+ "number"
1134
+ ]
979
1135
  }
980
1136
  },
981
1137
  "handleFailure": {
@@ -991,7 +1147,10 @@
991
1147
  "type": "object",
992
1148
  "description": "The json object with response fields of the call to getDevice",
993
1149
  "additionalProperties": {
994
- "type": "string"
1150
+ "type": [
1151
+ "string",
1152
+ "number"
1153
+ ]
995
1154
  },
996
1155
  "properties": {}
997
1156
  },
@@ -1004,7 +1163,10 @@
1004
1163
  "type": "object",
1005
1164
  "description": "The json object with response fields of the call to getDevicesFiltered",
1006
1165
  "additionalProperties": {
1007
- "type": "string"
1166
+ "type": [
1167
+ "string",
1168
+ "number"
1169
+ ]
1008
1170
  },
1009
1171
  "properties": {
1010
1172
  "name": {
@@ -1041,6 +1203,7 @@
1041
1203
  "type": "array",
1042
1204
  "description": "Broker call(s) to determine if the device isAlive",
1043
1205
  "items": {
1206
+ "type": "object",
1044
1207
  "properties": {
1045
1208
  "path": {
1046
1209
  "type": "string",
@@ -1056,21 +1219,30 @@
1056
1219
  "type": "object",
1057
1220
  "description": "The json object with query parameters of the call to isAlive",
1058
1221
  "additionalProperties": {
1059
- "type": "string"
1222
+ "type": [
1223
+ "string",
1224
+ "number"
1225
+ ]
1060
1226
  }
1061
1227
  },
1062
1228
  "body": {
1063
1229
  "type": "object",
1064
1230
  "description": "The json object with body of the call to isAlive",
1065
1231
  "additionalProperties": {
1066
- "type": "string"
1232
+ "type": [
1233
+ "string",
1234
+ "number"
1235
+ ]
1067
1236
  }
1068
1237
  },
1069
1238
  "headers": {
1070
1239
  "type": "object",
1071
1240
  "description": "The json object with headers of the call to isAlive",
1072
1241
  "additionalProperties": {
1073
- "type": "string"
1242
+ "type": [
1243
+ "string",
1244
+ "number"
1245
+ ]
1074
1246
  }
1075
1247
  },
1076
1248
  "handleFailure": {
@@ -1086,7 +1258,10 @@
1086
1258
  "type": "object",
1087
1259
  "description": "The json object with response fields of the call to getDevice",
1088
1260
  "additionalProperties": {
1089
- "type": "string"
1261
+ "type": [
1262
+ "string",
1263
+ "number"
1264
+ ]
1090
1265
  },
1091
1266
  "properties": {}
1092
1267
  },
@@ -1099,7 +1274,10 @@
1099
1274
  "type": "object",
1100
1275
  "description": "The json object with response fields of the call to isAlive",
1101
1276
  "additionalProperties": {
1102
- "type": "string"
1277
+ "type": [
1278
+ "string",
1279
+ "number"
1280
+ ]
1103
1281
  },
1104
1282
  "properties": {
1105
1283
  "status": {
@@ -1121,6 +1299,7 @@
1121
1299
  "type": "array",
1122
1300
  "description": "Broker call(s) to getConfig",
1123
1301
  "items": {
1302
+ "type": "object",
1124
1303
  "properties": {
1125
1304
  "path": {
1126
1305
  "type": "string",
@@ -1136,21 +1315,30 @@
1136
1315
  "type": "object",
1137
1316
  "description": "The json object with query parameters of the call to getConfig",
1138
1317
  "additionalProperties": {
1139
- "type": "string"
1318
+ "type": [
1319
+ "string",
1320
+ "number"
1321
+ ]
1140
1322
  }
1141
1323
  },
1142
1324
  "body": {
1143
1325
  "type": "object",
1144
1326
  "description": "The json object with body of the call to getConfig",
1145
1327
  "additionalProperties": {
1146
- "type": "string"
1328
+ "type": [
1329
+ "string",
1330
+ "number"
1331
+ ]
1147
1332
  }
1148
1333
  },
1149
1334
  "headers": {
1150
1335
  "type": "object",
1151
1336
  "description": "The json object with headers of the call to getConfig",
1152
1337
  "additionalProperties": {
1153
- "type": "string"
1338
+ "type": [
1339
+ "string",
1340
+ "number"
1341
+ ]
1154
1342
  }
1155
1343
  },
1156
1344
  "handleFailure": {
@@ -1166,7 +1354,10 @@
1166
1354
  "type": "object",
1167
1355
  "description": "The json object with response fields of the call to getDevice",
1168
1356
  "additionalProperties": {
1169
- "type": "string"
1357
+ "type": [
1358
+ "string",
1359
+ "number"
1360
+ ]
1170
1361
  },
1171
1362
  "properties": {}
1172
1363
  },
@@ -1179,7 +1370,10 @@
1179
1370
  "type": "object",
1180
1371
  "description": "The json object with response fields of the call to getConfig",
1181
1372
  "additionalProperties": {
1182
- "type": "string"
1373
+ "type": [
1374
+ "string",
1375
+ "number"
1376
+ ]
1183
1377
  },
1184
1378
  "properties": {}
1185
1379
  }
@@ -1190,6 +1384,7 @@
1190
1384
  "type": "array",
1191
1385
  "description": "Broker call(s) to getCount",
1192
1386
  "items": {
1387
+ "type": "object",
1193
1388
  "properties": {
1194
1389
  "path": {
1195
1390
  "type": "string",
@@ -1205,21 +1400,30 @@
1205
1400
  "type": "object",
1206
1401
  "description": "The json object with query parameters of the call to getCount",
1207
1402
  "additionalProperties": {
1208
- "type": "string"
1403
+ "type": [
1404
+ "string",
1405
+ "number"
1406
+ ]
1209
1407
  }
1210
1408
  },
1211
1409
  "body": {
1212
1410
  "type": "object",
1213
1411
  "description": "The json object with body of the call to getCount",
1214
1412
  "additionalProperties": {
1215
- "type": "string"
1413
+ "type": [
1414
+ "string",
1415
+ "number"
1416
+ ]
1216
1417
  }
1217
1418
  },
1218
1419
  "headers": {
1219
1420
  "type": "object",
1220
1421
  "description": "The json object with headers of the call to getCount",
1221
1422
  "additionalProperties": {
1222
- "type": "string"
1423
+ "type": [
1424
+ "string",
1425
+ "number"
1426
+ ]
1223
1427
  }
1224
1428
  },
1225
1429
  "handleFailure": {
@@ -1235,7 +1439,10 @@
1235
1439
  "type": "object",
1236
1440
  "description": "The json object with response fields of the call to getDevice",
1237
1441
  "additionalProperties": {
1238
- "type": "string"
1442
+ "type": [
1443
+ "string",
1444
+ "number"
1445
+ ]
1239
1446
  },
1240
1447
  "properties": {}
1241
1448
  },
@@ -1248,7 +1455,10 @@
1248
1455
  "type": "object",
1249
1456
  "description": "The json object with response fields of the call to getConfig",
1250
1457
  "additionalProperties": {
1251
- "type": "string"
1458
+ "type": [
1459
+ "string",
1460
+ "number"
1461
+ ]
1252
1462
  },
1253
1463
  "properties": {}
1254
1464
  }
@@ -1256,6 +1466,196 @@
1256
1466
  }
1257
1467
  }
1258
1468
  }
1469
+ },
1470
+ "cache": {
1471
+ "type": "object",
1472
+ "properties": {
1473
+ "enabled": {
1474
+ "type": "boolean",
1475
+ "description": "Whether or not cache is enabled for adapter",
1476
+ "default": false
1477
+ },
1478
+ "entities": {
1479
+ "type": "array",
1480
+ "description": "Information for the cached entities",
1481
+ "items": {
1482
+ "type": "object",
1483
+ "properties": {
1484
+ "entityType": {
1485
+ "type": "string",
1486
+ "description": "The name of the entity - should match adapter entity configuration or a broker (e.g. Device)",
1487
+ "default": ""
1488
+ },
1489
+ "frequency": {
1490
+ "type": "integer",
1491
+ "description": "how long (in minutes) we wait to re-populate the cache",
1492
+ "default": 1440,
1493
+ "maximum": 10080
1494
+ },
1495
+ "flushOnFail": {
1496
+ "type": "boolean",
1497
+ "description": "Whether to clear the cache we have if the populate failed",
1498
+ "default": false
1499
+ },
1500
+ "limit": {
1501
+ "type": "integer",
1502
+ "description": "maximum number of items to keep in cache",
1503
+ "default": 1000
1504
+ },
1505
+ "retryAttempts": {
1506
+ "type": "integer",
1507
+ "description": "number of times to retry the populate call before failure",
1508
+ "default": 5
1509
+ },
1510
+ "sort": {
1511
+ "type": "boolean",
1512
+ "description": "whether to sort the data or not",
1513
+ "default": true
1514
+ },
1515
+ "populate": {
1516
+ "type": "array",
1517
+ "description": "Information for the call(s) used to populate the cache",
1518
+ "items": {
1519
+ "type": "object",
1520
+ "properties": {
1521
+ "path": {
1522
+ "type": "string",
1523
+ "description": "The fully qualified path of the call to getDevice (e.g. /rest/api/device/{deviceid})",
1524
+ "default": ""
1525
+ },
1526
+ "method": {
1527
+ "type": "string",
1528
+ "description": "The method of the call to getDevice",
1529
+ "default": "GET"
1530
+ },
1531
+ "pagination": {
1532
+ "type": "object",
1533
+ "description": "todo",
1534
+ "properties": {
1535
+ "offsetVar": {
1536
+ "type": "string",
1537
+ "description": "Name of variable that defines how to go to next set of results"
1538
+ },
1539
+ "limitVar": {
1540
+ "type": "string",
1541
+ "description": "Name of variable that defines the max results returned in a request"
1542
+ },
1543
+ "incrementBy": {
1544
+ "type": "string",
1545
+ "enum": [
1546
+ "limit",
1547
+ "page"
1548
+ ],
1549
+ "description": "How to incremenet offset. Default limit",
1550
+ "default": "limit"
1551
+ },
1552
+ "requestLocation": {
1553
+ "type": "string",
1554
+ "enum": [
1555
+ "query",
1556
+ "body"
1557
+ ],
1558
+ "description": "Where in request the pagination data goes",
1559
+ "default": "query"
1560
+ }
1561
+ }
1562
+ },
1563
+ "query": {
1564
+ "type": "object",
1565
+ "description": "The json object with query parameters of the call to getDevice",
1566
+ "additionalProperties": {
1567
+ "type": [
1568
+ "string",
1569
+ "number"
1570
+ ]
1571
+ }
1572
+ },
1573
+ "body": {
1574
+ "type": "object",
1575
+ "description": "The json object with body of the call to getDevice",
1576
+ "additionalProperties": {
1577
+ "type": [
1578
+ "string",
1579
+ "number"
1580
+ ]
1581
+ }
1582
+ },
1583
+ "headers": {
1584
+ "type": "object",
1585
+ "description": "The json object with headers of the call to getDevice",
1586
+ "additionalProperties": {
1587
+ "type": [
1588
+ "string",
1589
+ "number"
1590
+ ]
1591
+ }
1592
+ },
1593
+ "handleFailure": {
1594
+ "type": "string",
1595
+ "enum": [
1596
+ "ignore",
1597
+ "fail"
1598
+ ],
1599
+ "description": "return failure or ignore failure",
1600
+ "default": "ignore"
1601
+ },
1602
+ "requestFields": {
1603
+ "type": "object",
1604
+ "description": "The json object with response fields of the call to getDevice",
1605
+ "additionalProperties": {
1606
+ "type": [
1607
+ "string",
1608
+ "number"
1609
+ ]
1610
+ },
1611
+ "properties": {}
1612
+ },
1613
+ "responseDatakey": {
1614
+ "type": "string",
1615
+ "description": "place in the response where the data is - supports jsonquery",
1616
+ "default": ""
1617
+ },
1618
+ "responseFields": {
1619
+ "type": "object",
1620
+ "description": "The json object with response fields of the call to getDevice",
1621
+ "additionalProperties": {
1622
+ "type": [
1623
+ "string",
1624
+ "number"
1625
+ ]
1626
+ }
1627
+ }
1628
+ }
1629
+ }
1630
+ },
1631
+ "cachedTasks": {
1632
+ "type": "array",
1633
+ "description": "Information for the call(s) used to populate the cache",
1634
+ "items": {
1635
+ "type": "object",
1636
+ "properties": {
1637
+ "name": {
1638
+ "type": "string",
1639
+ "description": "the name of the task/action that should utilize cached information",
1640
+ "default": ""
1641
+ },
1642
+ "filterField": {
1643
+ "type": "string",
1644
+ "description": "the field that contains filter information for this call",
1645
+ "default": ""
1646
+ },
1647
+ "filterLoc": {
1648
+ "type": "string",
1649
+ "description": "the field that contains the location of the filter field",
1650
+ "default": ""
1651
+ }
1652
+ }
1653
+ }
1654
+ }
1655
+ }
1656
+ }
1657
+ }
1658
+ }
1259
1659
  }
1260
1660
  }
1261
1661
  }