@itentialopensource/adapter-zscaler 0.7.0 → 0.8.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 +342 -0
  2. package/CHANGELOG.md +3 -112
  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 +118 -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 +1828 -0
  15. package/report/adapter-openapi.yaml +1462 -0
  16. package/report/adapterInfo.json +8 -8
  17. package/report/updateReport1691508819418.json +120 -0
  18. package/report/updateReport1692203278243.json +120 -0
  19. package/report/updateReport1694468959859.json +120 -0
  20. package/report/updateReport1698422816279.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": {
@@ -260,6 +278,74 @@
260
278
  "type": "string",
261
279
  "description": "The grant type for OAuth requests - can also provide in schema",
262
280
  "default": ""
281
+ },
282
+ "sensitive": {
283
+ "type": "array",
284
+ "description": "List of sensitive keys to search and hide values from being logged",
285
+ "default": [],
286
+ "items": {
287
+ "type": "string"
288
+ }
289
+ },
290
+ "sso": {
291
+ "type": "object",
292
+ "properties": {
293
+ "protocol": {
294
+ "type": "string",
295
+ "description": "the protocol to request token from system",
296
+ "default": "",
297
+ "enum": [
298
+ "http",
299
+ "https",
300
+ ""
301
+ ]
302
+ },
303
+ "host": {
304
+ "type": "string",
305
+ "description": "hostname of the authentication system",
306
+ "default": "",
307
+ "examples": [
308
+ "systemx.customer.com"
309
+ ]
310
+ },
311
+ "port": {
312
+ "type": "integer",
313
+ "description": "port on which to connect to the authentication system",
314
+ "default": 0,
315
+ "minimum": 0,
316
+ "maximum": 65535
317
+ }
318
+ }
319
+ },
320
+ "multiStepAuthCalls": {
321
+ "type": "array",
322
+ "items": {
323
+ "type": "object",
324
+ "properties": {
325
+ "name": {
326
+ "type": "string",
327
+ "description": "Id of the step call",
328
+ "examples": [
329
+ "getAccessToken"
330
+ ]
331
+ },
332
+ "requestFields": {
333
+ "type": "object",
334
+ "description": "The fields set in step request"
335
+ },
336
+ "responseFields": {
337
+ "type": "object",
338
+ "description": "The fields from the step result"
339
+ },
340
+ "successfullResponseCode": {
341
+ "type": "integer",
342
+ "description": "Expected response code for given step, if not set any successfull http response is accepted",
343
+ "examples": [
344
+ 200
345
+ ]
346
+ }
347
+ }
348
+ }
263
349
  }
264
350
  },
265
351
  "required": [
@@ -362,7 +448,13 @@
362
448
  },
363
449
  "query_object": {
364
450
  "type": "object",
365
- "description": "Query object { device: xxxxx } to be placed into the healthcheck, will be converted to query string by the adapter"
451
+ "description": "Query object { device: xxxxx } to be placed into the healthcheck, will be converted to query string by the adapter",
452
+ "default": {}
453
+ },
454
+ "addlHeaders": {
455
+ "type": "object",
456
+ "description": "headers that will be appended to the headers for the call",
457
+ "default": {}
366
458
  }
367
459
  },
368
460
  "required": [
@@ -442,6 +534,7 @@
442
534
  "priorities": {
443
535
  "type": "array",
444
536
  "description": "define your priorities here",
537
+ "default": [],
445
538
  "items": {
446
539
  "type": "object",
447
540
  "properties": {
@@ -512,6 +605,7 @@
512
605
  "failover_codes": {
513
606
  "type": "array",
514
607
  "description": "An array of codes where it is ok to try another method",
608
+ "default": [],
515
609
  "items": {
516
610
  "type": "integer"
517
611
  }
@@ -529,19 +623,23 @@
529
623
  "properties": {
530
624
  "payload": {
531
625
  "type": "object",
532
- "description": "payload fields that will be appended to the provided payload (excluding GET calls)"
626
+ "description": "payload fields that will be appended to the provided payload (excluding GET calls)",
627
+ "default": {}
533
628
  },
534
629
  "uriOptions": {
535
630
  "type": "object",
536
- "description": "options that will be appended to all GET calls"
631
+ "description": "options that will be appended to all GET calls",
632
+ "default": {}
537
633
  },
538
634
  "addlHeaders": {
539
635
  "type": "object",
540
- "description": "headers that will be appended to the headers for the call"
636
+ "description": "headers that will be appended to the headers for the call",
637
+ "default": {}
541
638
  },
542
639
  "authData": {
543
640
  "type": "object",
544
- "description": "authentication data that will be appended to the payload for authentication calls"
641
+ "description": "authentication data that will be appended to the payload for authentication calls",
642
+ "default": {}
545
643
  }
546
644
  }
547
645
  },
@@ -856,6 +954,7 @@
856
954
  "type": "array",
857
955
  "description": "Broker call(s) to getDevice",
858
956
  "items": {
957
+ "type": "object",
859
958
  "properties": {
860
959
  "path": {
861
960
  "type": "string",
@@ -871,21 +970,30 @@
871
970
  "type": "object",
872
971
  "description": "The json object with query parameters of the call to getDevice",
873
972
  "additionalProperties": {
874
- "type": "string"
973
+ "type": [
974
+ "string",
975
+ "number"
976
+ ]
875
977
  }
876
978
  },
877
979
  "body": {
878
980
  "type": "object",
879
981
  "description": "The json object with body of the call to getDevice",
880
982
  "additionalProperties": {
881
- "type": "string"
983
+ "type": [
984
+ "string",
985
+ "number"
986
+ ]
882
987
  }
883
988
  },
884
989
  "headers": {
885
990
  "type": "object",
886
991
  "description": "The json object with headers of the call to getDevice",
887
992
  "additionalProperties": {
888
- "type": "string"
993
+ "type": [
994
+ "string",
995
+ "number"
996
+ ]
889
997
  }
890
998
  },
891
999
  "handleFailure": {
@@ -901,7 +1009,10 @@
901
1009
  "type": "object",
902
1010
  "description": "The json object with response fields of the call to getDevice",
903
1011
  "additionalProperties": {
904
- "type": "string"
1012
+ "type": [
1013
+ "string",
1014
+ "number"
1015
+ ]
905
1016
  },
906
1017
  "properties": {}
907
1018
  },
@@ -914,7 +1025,10 @@
914
1025
  "type": "object",
915
1026
  "description": "The json object with response fields of the call to getDevice",
916
1027
  "additionalProperties": {
917
- "type": "string"
1028
+ "type": [
1029
+ "string",
1030
+ "number"
1031
+ ]
918
1032
  },
919
1033
  "properties": {
920
1034
  "name": {
@@ -951,6 +1065,7 @@
951
1065
  "type": "array",
952
1066
  "description": "Broker call(s) to getDevicesFiltered",
953
1067
  "items": {
1068
+ "type": "object",
954
1069
  "properties": {
955
1070
  "path": {
956
1071
  "type": "string",
@@ -962,25 +1077,66 @@
962
1077
  "description": "The method of the call to getDevicesFiltered",
963
1078
  "default": "GET"
964
1079
  },
1080
+ "pagination": {
1081
+ "type": "object",
1082
+ "description": "todo",
1083
+ "properties": {
1084
+ "offsetVar": {
1085
+ "type": "string",
1086
+ "description": "Name of variable that defines how to go to next set of results"
1087
+ },
1088
+ "limitVar": {
1089
+ "type": "string",
1090
+ "description": "Name of variable that defines the max results returned in a request"
1091
+ },
1092
+ "incrementBy": {
1093
+ "type": "string",
1094
+ "enum": [
1095
+ "limit",
1096
+ "page"
1097
+ ],
1098
+ "description": "How to incremenet offset. Default limit",
1099
+ "default": "limit"
1100
+ },
1101
+ "requestLocation": {
1102
+ "type": "string",
1103
+ "enum": [
1104
+ "query",
1105
+ "body"
1106
+ ],
1107
+ "description": "Where in request the pagination data goes",
1108
+ "default": "query"
1109
+ }
1110
+ }
1111
+ },
965
1112
  "query": {
966
1113
  "type": "object",
967
1114
  "description": "The json object with query parameters of the call to getDevicesFiltered",
968
1115
  "additionalProperties": {
969
- "type": "string"
1116
+ "type": [
1117
+ "string",
1118
+ "number"
1119
+ ]
970
1120
  }
971
1121
  },
972
1122
  "body": {
973
1123
  "type": "object",
974
1124
  "description": "The json object with body of the call to getDevicesFiltered",
975
1125
  "additionalProperties": {
976
- "type": "string"
1126
+ "type": [
1127
+ "string",
1128
+ "number"
1129
+ ]
977
1130
  }
978
1131
  },
979
1132
  "headers": {
980
1133
  "type": "object",
981
1134
  "description": "The json object with headers of the call to getDevicesFiltered",
982
1135
  "additionalProperties": {
983
- "type": "string"
1136
+ "type": [
1137
+ "string",
1138
+ "number"
1139
+ ]
984
1140
  }
985
1141
  },
986
1142
  "handleFailure": {
@@ -996,7 +1152,10 @@
996
1152
  "type": "object",
997
1153
  "description": "The json object with response fields of the call to getDevice",
998
1154
  "additionalProperties": {
999
- "type": "string"
1155
+ "type": [
1156
+ "string",
1157
+ "number"
1158
+ ]
1000
1159
  },
1001
1160
  "properties": {}
1002
1161
  },
@@ -1009,7 +1168,10 @@
1009
1168
  "type": "object",
1010
1169
  "description": "The json object with response fields of the call to getDevicesFiltered",
1011
1170
  "additionalProperties": {
1012
- "type": "string"
1171
+ "type": [
1172
+ "string",
1173
+ "number"
1174
+ ]
1013
1175
  },
1014
1176
  "properties": {
1015
1177
  "name": {
@@ -1046,6 +1208,7 @@
1046
1208
  "type": "array",
1047
1209
  "description": "Broker call(s) to determine if the device isAlive",
1048
1210
  "items": {
1211
+ "type": "object",
1049
1212
  "properties": {
1050
1213
  "path": {
1051
1214
  "type": "string",
@@ -1061,21 +1224,30 @@
1061
1224
  "type": "object",
1062
1225
  "description": "The json object with query parameters of the call to isAlive",
1063
1226
  "additionalProperties": {
1064
- "type": "string"
1227
+ "type": [
1228
+ "string",
1229
+ "number"
1230
+ ]
1065
1231
  }
1066
1232
  },
1067
1233
  "body": {
1068
1234
  "type": "object",
1069
1235
  "description": "The json object with body of the call to isAlive",
1070
1236
  "additionalProperties": {
1071
- "type": "string"
1237
+ "type": [
1238
+ "string",
1239
+ "number"
1240
+ ]
1072
1241
  }
1073
1242
  },
1074
1243
  "headers": {
1075
1244
  "type": "object",
1076
1245
  "description": "The json object with headers of the call to isAlive",
1077
1246
  "additionalProperties": {
1078
- "type": "string"
1247
+ "type": [
1248
+ "string",
1249
+ "number"
1250
+ ]
1079
1251
  }
1080
1252
  },
1081
1253
  "handleFailure": {
@@ -1091,7 +1263,10 @@
1091
1263
  "type": "object",
1092
1264
  "description": "The json object with response fields of the call to getDevice",
1093
1265
  "additionalProperties": {
1094
- "type": "string"
1266
+ "type": [
1267
+ "string",
1268
+ "number"
1269
+ ]
1095
1270
  },
1096
1271
  "properties": {}
1097
1272
  },
@@ -1104,7 +1279,10 @@
1104
1279
  "type": "object",
1105
1280
  "description": "The json object with response fields of the call to isAlive",
1106
1281
  "additionalProperties": {
1107
- "type": "string"
1282
+ "type": [
1283
+ "string",
1284
+ "number"
1285
+ ]
1108
1286
  },
1109
1287
  "properties": {
1110
1288
  "status": {
@@ -1126,6 +1304,7 @@
1126
1304
  "type": "array",
1127
1305
  "description": "Broker call(s) to getConfig",
1128
1306
  "items": {
1307
+ "type": "object",
1129
1308
  "properties": {
1130
1309
  "path": {
1131
1310
  "type": "string",
@@ -1141,21 +1320,30 @@
1141
1320
  "type": "object",
1142
1321
  "description": "The json object with query parameters of the call to getConfig",
1143
1322
  "additionalProperties": {
1144
- "type": "string"
1323
+ "type": [
1324
+ "string",
1325
+ "number"
1326
+ ]
1145
1327
  }
1146
1328
  },
1147
1329
  "body": {
1148
1330
  "type": "object",
1149
1331
  "description": "The json object with body of the call to getConfig",
1150
1332
  "additionalProperties": {
1151
- "type": "string"
1333
+ "type": [
1334
+ "string",
1335
+ "number"
1336
+ ]
1152
1337
  }
1153
1338
  },
1154
1339
  "headers": {
1155
1340
  "type": "object",
1156
1341
  "description": "The json object with headers of the call to getConfig",
1157
1342
  "additionalProperties": {
1158
- "type": "string"
1343
+ "type": [
1344
+ "string",
1345
+ "number"
1346
+ ]
1159
1347
  }
1160
1348
  },
1161
1349
  "handleFailure": {
@@ -1171,7 +1359,10 @@
1171
1359
  "type": "object",
1172
1360
  "description": "The json object with response fields of the call to getDevice",
1173
1361
  "additionalProperties": {
1174
- "type": "string"
1362
+ "type": [
1363
+ "string",
1364
+ "number"
1365
+ ]
1175
1366
  },
1176
1367
  "properties": {}
1177
1368
  },
@@ -1184,7 +1375,10 @@
1184
1375
  "type": "object",
1185
1376
  "description": "The json object with response fields of the call to getConfig",
1186
1377
  "additionalProperties": {
1187
- "type": "string"
1378
+ "type": [
1379
+ "string",
1380
+ "number"
1381
+ ]
1188
1382
  },
1189
1383
  "properties": {}
1190
1384
  }
@@ -1195,6 +1389,7 @@
1195
1389
  "type": "array",
1196
1390
  "description": "Broker call(s) to getCount",
1197
1391
  "items": {
1392
+ "type": "object",
1198
1393
  "properties": {
1199
1394
  "path": {
1200
1395
  "type": "string",
@@ -1210,21 +1405,30 @@
1210
1405
  "type": "object",
1211
1406
  "description": "The json object with query parameters of the call to getCount",
1212
1407
  "additionalProperties": {
1213
- "type": "string"
1408
+ "type": [
1409
+ "string",
1410
+ "number"
1411
+ ]
1214
1412
  }
1215
1413
  },
1216
1414
  "body": {
1217
1415
  "type": "object",
1218
1416
  "description": "The json object with body of the call to getCount",
1219
1417
  "additionalProperties": {
1220
- "type": "string"
1418
+ "type": [
1419
+ "string",
1420
+ "number"
1421
+ ]
1221
1422
  }
1222
1423
  },
1223
1424
  "headers": {
1224
1425
  "type": "object",
1225
1426
  "description": "The json object with headers of the call to getCount",
1226
1427
  "additionalProperties": {
1227
- "type": "string"
1428
+ "type": [
1429
+ "string",
1430
+ "number"
1431
+ ]
1228
1432
  }
1229
1433
  },
1230
1434
  "handleFailure": {
@@ -1240,7 +1444,10 @@
1240
1444
  "type": "object",
1241
1445
  "description": "The json object with response fields of the call to getDevice",
1242
1446
  "additionalProperties": {
1243
- "type": "string"
1447
+ "type": [
1448
+ "string",
1449
+ "number"
1450
+ ]
1244
1451
  },
1245
1452
  "properties": {}
1246
1453
  },
@@ -1253,7 +1460,10 @@
1253
1460
  "type": "object",
1254
1461
  "description": "The json object with response fields of the call to getConfig",
1255
1462
  "additionalProperties": {
1256
- "type": "string"
1463
+ "type": [
1464
+ "string",
1465
+ "number"
1466
+ ]
1257
1467
  },
1258
1468
  "properties": {}
1259
1469
  }
@@ -1261,6 +1471,196 @@
1261
1471
  }
1262
1472
  }
1263
1473
  }
1474
+ },
1475
+ "cache": {
1476
+ "type": "object",
1477
+ "properties": {
1478
+ "enabled": {
1479
+ "type": "boolean",
1480
+ "description": "Whether or not cache is enabled for adapter",
1481
+ "default": false
1482
+ },
1483
+ "entities": {
1484
+ "type": "array",
1485
+ "description": "Information for the cached entities",
1486
+ "items": {
1487
+ "type": "object",
1488
+ "properties": {
1489
+ "entityType": {
1490
+ "type": "string",
1491
+ "description": "The name of the entity - should match adapter entity configuration or a broker (e.g. Device)",
1492
+ "default": ""
1493
+ },
1494
+ "frequency": {
1495
+ "type": "integer",
1496
+ "description": "how long (in minutes) we wait to re-populate the cache",
1497
+ "default": 1440,
1498
+ "maximum": 10080
1499
+ },
1500
+ "flushOnFail": {
1501
+ "type": "boolean",
1502
+ "description": "Whether to clear the cache we have if the populate failed",
1503
+ "default": false
1504
+ },
1505
+ "limit": {
1506
+ "type": "integer",
1507
+ "description": "maximum number of items to keep in cache",
1508
+ "default": 1000
1509
+ },
1510
+ "retryAttempts": {
1511
+ "type": "integer",
1512
+ "description": "number of times to retry the populate call before failure",
1513
+ "default": 5
1514
+ },
1515
+ "sort": {
1516
+ "type": "boolean",
1517
+ "description": "whether to sort the data or not",
1518
+ "default": true
1519
+ },
1520
+ "populate": {
1521
+ "type": "array",
1522
+ "description": "Information for the call(s) used to populate the cache",
1523
+ "items": {
1524
+ "type": "object",
1525
+ "properties": {
1526
+ "path": {
1527
+ "type": "string",
1528
+ "description": "The fully qualified path of the call to getDevice (e.g. /rest/api/device/{deviceid})",
1529
+ "default": ""
1530
+ },
1531
+ "method": {
1532
+ "type": "string",
1533
+ "description": "The method of the call to getDevice",
1534
+ "default": "GET"
1535
+ },
1536
+ "pagination": {
1537
+ "type": "object",
1538
+ "description": "todo",
1539
+ "properties": {
1540
+ "offsetVar": {
1541
+ "type": "string",
1542
+ "description": "Name of variable that defines how to go to next set of results"
1543
+ },
1544
+ "limitVar": {
1545
+ "type": "string",
1546
+ "description": "Name of variable that defines the max results returned in a request"
1547
+ },
1548
+ "incrementBy": {
1549
+ "type": "string",
1550
+ "enum": [
1551
+ "limit",
1552
+ "page"
1553
+ ],
1554
+ "description": "How to incremenet offset. Default limit",
1555
+ "default": "limit"
1556
+ },
1557
+ "requestLocation": {
1558
+ "type": "string",
1559
+ "enum": [
1560
+ "query",
1561
+ "body"
1562
+ ],
1563
+ "description": "Where in request the pagination data goes",
1564
+ "default": "query"
1565
+ }
1566
+ }
1567
+ },
1568
+ "query": {
1569
+ "type": "object",
1570
+ "description": "The json object with query parameters of the call to getDevice",
1571
+ "additionalProperties": {
1572
+ "type": [
1573
+ "string",
1574
+ "number"
1575
+ ]
1576
+ }
1577
+ },
1578
+ "body": {
1579
+ "type": "object",
1580
+ "description": "The json object with body of the call to getDevice",
1581
+ "additionalProperties": {
1582
+ "type": [
1583
+ "string",
1584
+ "number"
1585
+ ]
1586
+ }
1587
+ },
1588
+ "headers": {
1589
+ "type": "object",
1590
+ "description": "The json object with headers of the call to getDevice",
1591
+ "additionalProperties": {
1592
+ "type": [
1593
+ "string",
1594
+ "number"
1595
+ ]
1596
+ }
1597
+ },
1598
+ "handleFailure": {
1599
+ "type": "string",
1600
+ "enum": [
1601
+ "ignore",
1602
+ "fail"
1603
+ ],
1604
+ "description": "return failure or ignore failure",
1605
+ "default": "ignore"
1606
+ },
1607
+ "requestFields": {
1608
+ "type": "object",
1609
+ "description": "The json object with response fields of the call to getDevice",
1610
+ "additionalProperties": {
1611
+ "type": [
1612
+ "string",
1613
+ "number"
1614
+ ]
1615
+ },
1616
+ "properties": {}
1617
+ },
1618
+ "responseDatakey": {
1619
+ "type": "string",
1620
+ "description": "place in the response where the data is - supports jsonquery",
1621
+ "default": ""
1622
+ },
1623
+ "responseFields": {
1624
+ "type": "object",
1625
+ "description": "The json object with response fields of the call to getDevice",
1626
+ "additionalProperties": {
1627
+ "type": [
1628
+ "string",
1629
+ "number"
1630
+ ]
1631
+ }
1632
+ }
1633
+ }
1634
+ }
1635
+ },
1636
+ "cachedTasks": {
1637
+ "type": "array",
1638
+ "description": "Information for the call(s) used to populate the cache",
1639
+ "items": {
1640
+ "type": "object",
1641
+ "properties": {
1642
+ "name": {
1643
+ "type": "string",
1644
+ "description": "the name of the task/action that should utilize cached information",
1645
+ "default": ""
1646
+ },
1647
+ "filterField": {
1648
+ "type": "string",
1649
+ "description": "the field that contains filter information for this call",
1650
+ "default": ""
1651
+ },
1652
+ "filterLoc": {
1653
+ "type": "string",
1654
+ "description": "the field that contains the location of the filter field",
1655
+ "default": ""
1656
+ }
1657
+ }
1658
+ }
1659
+ }
1660
+ }
1661
+ }
1662
+ }
1663
+ }
1264
1664
  }
1265
1665
  }
1266
1666
  }