From c59368002980b99d7a20507fe24d020e15832984 Mon Sep 17 00:00:00 2001 From: Ben Novak Date: Thu, 26 Oct 2023 11:51:53 -0500 Subject: [PATCH] 3.15 work (#235) * 3.15 work * changelog for ext loading issues --- CHANGELOG.md | 24 + diagRules/tmosXcRules.json | 38 +- docs/device_importing.md | 12 +- package-lock.json | 1367 ++--- package.json | 25 +- schemas/nextCm/AddIHealthConfigRequest.json | 15 - schemas/nextCm/AlertIDList.json | 17 - schemas/nextCm/AlertJsonFilterList.json | 13 - schemas/nextCm/ApmPolicy.json | 1 - schemas/nextCm/AuthenticationRequest.json | 14 - schemas/nextCm/BatchBackupTasksRequest.json | 16 - schemas/nextCm/CertificateRequest.json | 131 - schemas/nextCm/ChangePasswordRequest.json | 26 - schemas/nextCm/CreateAlertRequest.json | 92 - schemas/nextCm/CreateAlertTypeRequest.json | 60 - schemas/nextCm/CreateApplicationRequest.json | 35 - schemas/nextCm/CreateDeploymentRequest.json | 21 - .../nextCm/CreateInstanceLicensesRequest.json | 25 - schemas/nextCm/CreateQkviewRequest.json | 76 - schemas/nextCm/CreateSchemaRequest.json | 12 - .../nextCm/CreateTemplateParamsRequest.json | 26 - schemas/nextCm/CreateTemplateRequest.json | 54 - .../nextCm/CreateVelosProviderRequest.json | 31 - schemas/nextCm/Device.json | 57 - schemas/nextCm/DeviceDiscoveryRequest.json | 41 - schemas/nextCm/DeviceGroup.json | 15 - schemas/nextCm/EditDeploymentRequest.json | 16 - schemas/nextCm/EditTemplateTask.json | 54 - schemas/nextCm/EffectivePermissions.json | 36 - schemas/nextCm/ExportSamlSpRequest.json | 1 - ...tInstanceLicensesWithBasicAuthRequest.json | 29 - schemas/nextCm/HAInstanceCreateRequest.json | 214 - schemas/nextCm/HealthSyncRequest.json | 23 - schemas/nextCm/ImportIdpConnectorRequest.json | 14 - schemas/nextCm/ImportRequest.json | 39 - .../nextCm/InstanceAuthenticityRequest.json | 30 - schemas/nextCm/InstanceBackupRequest.json | 11 - schemas/nextCm/InstanceRestoreRequest.json | 8 - schemas/nextCm/ModifyAlertTypeRequest.json | 59 - .../nextCm/ModifyAlertTypeRequestByID.json | 45 - schemas/nextCm/ModifyGeolocation.json | 31 - ...NotificationConfigurationsRequestByID.json | 64 - .../NotificationConfigCreateRequest.json | 66 - .../NotificationConfigUpdateRequest.json | 69 - schemas/nextCm/NotificationIDList.json | 17 - schemas/nextCm/ObjectID.json | 9 - schemas/nextCm/PerAppConfig.json | 44 - schemas/nextCm/PolicyEvasionList.json | 9 - schemas/nextCm/PolicyHttpRFCList.json | 9 - schemas/nextCm/PolicySuggestionList.json | 12 - schemas/nextCm/PolicySuggestionsIDsList.json | 16 - schemas/nextCm/PolicyViolationsList.json | 9 - schemas/nextCm/RenewRequest.json | 125 - schemas/nextCm/ResetPasswordRequest.json | 15 - schemas/nextCm/ResourcePermission.json | 29 - schemas/nextCm/ResourcePermissionGroup.json | 15 - schemas/nextCm/RestorePasswordRequest.json | 12 - schemas/nextCm/Role.json | 15 - schemas/nextCm/RoleGroup.json | 15 - schemas/nextCm/SMTPServerConnection.json | 22 - schemas/nextCm/SMTPServerRequest.json | 63 - schemas/nextCm/TemplateParams.json | 33 - .../nextCm/UpdateIHealthConfigRequest.json | 11 - schemas/nextCm/UpdateLicensesRequest.json | 17 - schemas/nextCm/UpdateQkviewRequest.json | 11 - schemas/nextCm/UpdateSMTPServer.json | 49 - schemas/nextCm/UploadIHealthRequest.json | 27 - schemas/nextCm/UserUpdate.json | 101 - schemas/nextCm/VelosProvider.json | 21 - .../VelosProviderAuthenticationRequest.json | 23 - schemas/nextCm/WafAnalytics.json | 1 - .../nextCm/WafAnalyticsPercentageRequest.json | 1 - schemas/nextCm/WafAnalyticsTopRequest.json | 1 - schemas/nextCm/WafPolicy.json | 4941 ----------------- schemas/nextCm/serviceDefinition.json | 4 - src/deviceImport.ts | 33 +- src/devicesCore.ts | 71 +- src/extension.ts | 3 +- src/extensionVariables.ts | 3 - src/scripts/changelog.js | 30 - src/scripts/main.js | 91 - src/treeViewsProviders/hostsTreeProvider.ts | 24 +- src/treeViewsProviders/tclTreeProvider.ts | 12 +- src/utils/utils.ts | 3 +- tsconfig.json | 7 +- 85 files changed, 476 insertions(+), 8531 deletions(-) delete mode 100644 schemas/nextCm/AddIHealthConfigRequest.json delete mode 100644 schemas/nextCm/AlertIDList.json delete mode 100644 schemas/nextCm/AlertJsonFilterList.json delete mode 100644 schemas/nextCm/ApmPolicy.json delete mode 100644 schemas/nextCm/AuthenticationRequest.json delete mode 100644 schemas/nextCm/BatchBackupTasksRequest.json delete mode 100644 schemas/nextCm/CertificateRequest.json delete mode 100644 schemas/nextCm/ChangePasswordRequest.json delete mode 100644 schemas/nextCm/CreateAlertRequest.json delete mode 100644 schemas/nextCm/CreateAlertTypeRequest.json delete mode 100644 schemas/nextCm/CreateApplicationRequest.json delete mode 100644 schemas/nextCm/CreateDeploymentRequest.json delete mode 100644 schemas/nextCm/CreateInstanceLicensesRequest.json delete mode 100644 schemas/nextCm/CreateQkviewRequest.json delete mode 100644 schemas/nextCm/CreateSchemaRequest.json delete mode 100644 schemas/nextCm/CreateTemplateParamsRequest.json delete mode 100644 schemas/nextCm/CreateTemplateRequest.json delete mode 100644 schemas/nextCm/CreateVelosProviderRequest.json delete mode 100644 schemas/nextCm/Device.json delete mode 100644 schemas/nextCm/DeviceDiscoveryRequest.json delete mode 100644 schemas/nextCm/DeviceGroup.json delete mode 100644 schemas/nextCm/EditDeploymentRequest.json delete mode 100644 schemas/nextCm/EditTemplateTask.json delete mode 100644 schemas/nextCm/EffectivePermissions.json delete mode 100644 schemas/nextCm/ExportSamlSpRequest.json delete mode 100644 schemas/nextCm/GetInstanceLicensesWithBasicAuthRequest.json delete mode 100644 schemas/nextCm/HAInstanceCreateRequest.json delete mode 100644 schemas/nextCm/HealthSyncRequest.json delete mode 100644 schemas/nextCm/ImportIdpConnectorRequest.json delete mode 100644 schemas/nextCm/ImportRequest.json delete mode 100644 schemas/nextCm/InstanceAuthenticityRequest.json delete mode 100644 schemas/nextCm/InstanceBackupRequest.json delete mode 100644 schemas/nextCm/InstanceRestoreRequest.json delete mode 100644 schemas/nextCm/ModifyAlertTypeRequest.json delete mode 100644 schemas/nextCm/ModifyAlertTypeRequestByID.json delete mode 100644 schemas/nextCm/ModifyGeolocation.json delete mode 100644 schemas/nextCm/ModifyNotificationConfigurationsRequestByID.json delete mode 100644 schemas/nextCm/NotificationConfigCreateRequest.json delete mode 100644 schemas/nextCm/NotificationConfigUpdateRequest.json delete mode 100644 schemas/nextCm/NotificationIDList.json delete mode 100644 schemas/nextCm/ObjectID.json delete mode 100644 schemas/nextCm/PerAppConfig.json delete mode 100644 schemas/nextCm/PolicyEvasionList.json delete mode 100644 schemas/nextCm/PolicyHttpRFCList.json delete mode 100644 schemas/nextCm/PolicySuggestionList.json delete mode 100644 schemas/nextCm/PolicySuggestionsIDsList.json delete mode 100644 schemas/nextCm/PolicyViolationsList.json delete mode 100644 schemas/nextCm/RenewRequest.json delete mode 100644 schemas/nextCm/ResetPasswordRequest.json delete mode 100644 schemas/nextCm/ResourcePermission.json delete mode 100644 schemas/nextCm/ResourcePermissionGroup.json delete mode 100644 schemas/nextCm/RestorePasswordRequest.json delete mode 100644 schemas/nextCm/Role.json delete mode 100644 schemas/nextCm/RoleGroup.json delete mode 100644 schemas/nextCm/SMTPServerConnection.json delete mode 100644 schemas/nextCm/SMTPServerRequest.json delete mode 100644 schemas/nextCm/TemplateParams.json delete mode 100644 schemas/nextCm/UpdateIHealthConfigRequest.json delete mode 100644 schemas/nextCm/UpdateLicensesRequest.json delete mode 100644 schemas/nextCm/UpdateQkviewRequest.json delete mode 100644 schemas/nextCm/UpdateSMTPServer.json delete mode 100644 schemas/nextCm/UploadIHealthRequest.json delete mode 100644 schemas/nextCm/UserUpdate.json delete mode 100644 schemas/nextCm/VelosProvider.json delete mode 100644 schemas/nextCm/VelosProviderAuthenticationRequest.json delete mode 100644 schemas/nextCm/WafAnalytics.json delete mode 100644 schemas/nextCm/WafAnalyticsPercentageRequest.json delete mode 100644 schemas/nextCm/WafAnalyticsTopRequest.json delete mode 100644 schemas/nextCm/WafPolicy.json delete mode 100644 schemas/nextCm/serviceDefinition.json delete mode 100644 src/scripts/changelog.js delete mode 100644 src/scripts/main.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 453899c..c469797 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,30 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how --- +## [3.15.0] - (08-18-2023) + +### Added + +- added/updated several diagnostic rules + +### Fixed + +- fixed iapp template bug that was commenting out template params +- fixed bug with corkscrew erroring on ucs (was expecting qkview stats) +- [BUG] no feedback when importing single object in device import #202 +- [BUG] password focus away issues #228 +- v.3.14 keytar.node is not a valid Win32 application #232 +- Unable to add BIG-IP after upgrade to VSCode 1.83 #230 +- September 2023 (version 1.83) fails to load extension #229 +- [BUG] Error running command f5.addHost: command 'f5.addHost' not found. #206 + +### Changed + +- Continue to remove old/unused items + - removed api/swagger parsers/validators + +--- + ## [3.14.0] - (07-19-2023) ### Added diff --git a/diagRules/tmosXcRules.json b/diagRules/tmosXcRules.json index 4086298..81021e0 100644 --- a/diagRules/tmosXcRules.json +++ b/diagRules/tmosXcRules.json @@ -100,9 +100,9 @@ { "code": "d633", "severity": "Error", - "title": "iRule stream profile detected", - "message": "F5 TMOS stream profile functionality not supported", - "regex": "stream::" + "title": "XC - iRule stream profile detected", + "message": "F5 TMOS stream profile functionality not supported --- https://my.f5.com/manage/s/article/K39394712", + "regex": "STREAM::(enable|disable|expression)" }, { "code": "05ab", @@ -134,31 +134,31 @@ }, { "code": "659b", - "severity": "Hint", - "title": "", - "message": "", - "regex": "" + "severity": "Error", + "title": "iRule contains subtables", + "message": "iRule subtables are not supported in XC", + "regex": " -subtable " }, { "code": "b432", - "severity": "Hint", - "title": "", - "message": "", - "regex": "" + "severity": "Warning", + "title": "XC - iRule HTTP response", + "message": "custome HTTP response not supported in XC", + "regex": "HTTP::respond" }, { "code": "c5dc", - "severity": "Hint", - "title": "", - "message": "", - "regex": "" + "severity": "Error", + "title": "XC - iRule TCP collect/payload/release", + "message": "tcp payload manipulation not supported in XC", + "regex": "TCP::(collect|payload|release)" }, { "code": "86d2", - "severity": "Hint", - "title": "", - "message": "", - "regex": "" + "severity": "Error", + "title": "XC - iRule binary scan", + "message": "binary data scan not supported in XC", + "regex": "binary scan " }, { "code": "f4a6", diff --git a/docs/device_importing.md b/docs/device_importing.md index 66558bf..aad7ba0 100644 --- a/docs/device_importing.md +++ b/docs/device_importing.md @@ -41,7 +41,17 @@ admin@1.1.1.1 ] ``` -### json object import structure +### single json object import structure + +```json +{ + "device": "dude@2.1.3.4", + "password": "coolness", + "provider": "tmos" +} +``` + +### json object list import structure ```json [ diff --git a/package-lock.json b/package-lock.json index 2927360..707b083 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,27 +1,24 @@ { "name": "vscode-f5", - "version": "3.14.0", + "version": "3.15.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "vscode-f5", - "version": "3.14.0", + "version": "3.15.0", "license": "Apache-2.0", "dependencies": { - "@apidevtools/json-schema-ref-parser": "^9.1.0", - "@f5devcentral/f5-fast-core": "^0.19.1", + "@f5devcentral/f5-fast-core": "^0.23.0", "ajv": "^8.11.2", "f5-conx-core": "^0.17.2", - "f5-corkscrew": "^1.3.0", - "js-yaml": "^4.0.0", - "keytar": "^7.9.0", - "openapi-data-validator": "^2.0.44" + "f5-corkscrew": "^1.4.0", + "js-yaml": "^4.0.0" }, "devDependencies": { - "@types/glob": "^7.1.3", - "@types/js-yaml": "^4.0.5", - "@types/mocha": "^7.0.1", + "@types/glob": "^8.1.0", + "@types/js-yaml": "^4.0.8", + "@types/mocha": "^10.0.3", "@types/node": "^14.18.1", "@types/vscode": "^1.63.0", "@typescript-eslint/eslint-plugin": "^5.60.0", @@ -29,10 +26,10 @@ "@vscode/test-electron": "^2.2.1", "eslint": "^8.12.0", "glob": "^7.1.6", - "mocha": "^9.2.2", + "mocha": "^10.2.0", "nock": "^13.2.9", "ts-node": "^10.9.1", - "typescript": "^4.8.4" + "typescript": "^5.2.2" }, "engines": { "node": "^16", @@ -48,17 +45,6 @@ "node": ">=0.10.0" } }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", - "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, "node_modules/@babel/runtime-corejs3": { "version": "7.21.5", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.5.tgz", @@ -179,27 +165,38 @@ } }, "node_modules/@f5devcentral/f5-fast-core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@f5devcentral/f5-fast-core/-/f5-fast-core-0.19.1.tgz", - "integrity": "sha512-tEcwgLqOtocrTqX4+niy3B4XP54TeRfctCnneQW/R7vuMSbIPc9GI3QrXwtzyVRc7/SFtFBKbDqjSf/4gTlAYQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@f5devcentral/f5-fast-core/-/f5-fast-core-0.23.0.tgz", + "integrity": "sha512-j1Eolg7iPkDvomE5psVTJoqfLApTo0izBTyJp5g6BLLISqExfM95uCDn72NyVNZFRWZ9PGU5PrpAyERxMES1tw==", "dependencies": { - "@apidevtools/json-schema-ref-parser": "^9.0.9", - "@f5devcentral/atg-storage": "^1.3.3", - "adm-zip": "^0.5.9", + "@apidevtools/json-schema-ref-parser": "9.0.9", + "@f5devcentral/atg-storage": "^1.3.9", + "adm-zip": "^0.5.10", "ajv": "^6.12.6", "axios": "^0.27.2", - "deepmerge": "^4.2.2", + "deepmerge": "^4.3.1", "js-yaml": "^4.1.0", "jsonpath-plus": "^4.0.0", - "math-expression-evaluator": "^1.3.14", + "math-expression-evaluator": "^1.4.0", "merge-lite": "^1.0.2", "mustache": "^4.2.0", - "yargs": "^17.5.1" + "yargs": "^17.7.2" }, "bin": { "fast": "cli.js" } }, + "node_modules/@f5devcentral/f5-fast-core/node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, "node_modules/@f5devcentral/f5-fast-core/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -313,9 +310,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -450,19 +447,19 @@ "dev": true }, "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", "dev": true, "dependencies": { - "@types/minimatch": "*", + "@types/minimatch": "^5.1.2", "@types/node": "*" } }, "node_modules/@types/js-yaml": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", - "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.8.tgz", + "integrity": "sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==", "dev": true }, "node_modules/@types/json-schema": { @@ -477,9 +474,9 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", - "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "node_modules/@types/node": { @@ -688,12 +685,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "node_modules/@vscode/test-electron": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.2.tgz", @@ -709,17 +700,6 @@ "node": ">=16" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -785,22 +765,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/ansi-color": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-color/-/ansi-color-0.2.1.tgz", @@ -894,9 +858,12 @@ "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" }, "node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-3.0.1.tgz", + "integrity": "sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==", + "engines": { + "node": ">= 16" + } }, "node_modules/base64-js": { "version": "1.5.1", @@ -926,38 +893,6 @@ "node": ">=8" } }, - "node_modules/bl": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.1.tgz", - "integrity": "sha512-zk1P1eAEBHhhB+4NfGxqmuV6NgwECnIoRgsOq2ObdEsmoFVIYzJ/Jjcgaj7JOY/8ekH27bIHSV4Si2T+evqu+Q==", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - } - }, - "node_modules/bl/node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz", - "integrity": "sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -992,29 +927,6 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", @@ -1197,14 +1109,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/core-js-pure": { "version": "3.30.2", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.2.tgz", @@ -1286,20 +1190,6 @@ "node": ">=4" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -1397,14 +1287,6 @@ "node": ">=0.10.0" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -1435,14 +1317,6 @@ "node": ">=0.4.0" } }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "engines": { - "node": ">=8" - } - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -1728,30 +1602,6 @@ "node": ">=0.10.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "engines": { - "node": ">=6" - } - }, "node_modules/f5-conx-core": { "version": "0.17.2", "resolved": "https://registry.npmjs.org/f5-conx-core/-/f5-conx-core-0.17.2.tgz", @@ -1771,20 +1621,20 @@ } }, "node_modules/f5-corkscrew": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/f5-corkscrew/-/f5-corkscrew-1.3.0.tgz", - "integrity": "sha512-klpWaFe5Li/dcoIlZxywImPfMnVw6a+VFXw5U59uJa2sLKxzEnzRUVqjyPKJx/cKlCRiE1ZzcyJ897lzgR0fGQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/f5-corkscrew/-/f5-corkscrew-1.4.0.tgz", + "integrity": "sha512-zA3Rpk16mM/ZAPNi2lDz9zVO+PMittw4KGa/D8QxAMiPJz4iwLrppYwYPY+013KHWGHaBSvIPjBwSdTc4irXkg==", "dependencies": { - "balanced-match": "^2.0.0", + "balanced-match": "^3.0.1", "decompress": "^4.2.1", "deepmerge-ts": "^5.1.0", "f5-conx-core": "^0.17.2", - "fast-xml-parser": "^4.2.2", - "glob": "^10.2.3", + "fast-xml-parser": "^4.3.2", + "glob": "^10.3.10", "object-path": "^0.11.8", - "tar": "^6.1.14", - "tar-stream": "^3.0.0", - "uuid": "^9.0.0", + "tar": "^6.2.0", + "tar-stream": "^3.1.6", + "uuid": "^9.0.1", "xregexp": "^5.1.1", "yargs": "^17.7.2", "zlib": "^1.0.5" @@ -1807,18 +1657,18 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/f5-corkscrew/node_modules/glob": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", - "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.5", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -1828,9 +1678,9 @@ } }, "node_modules/f5-corkscrew/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1847,9 +1697,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-fifo": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.2.0.tgz", - "integrity": "sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "node_modules/fast-glob": { "version": "3.2.12", @@ -1891,17 +1741,17 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", + "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" } ], "dependencies": { @@ -2118,21 +1968,16 @@ "node": ">=0.10.0" } }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -2207,15 +2052,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2353,11 +2189,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2462,9 +2293,9 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -2551,16 +2382,6 @@ "setimmediate": "^1.0.5" } }, - "node_modules/keytar": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2604,16 +2425,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -2649,6 +2460,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -2686,14 +2498,6 @@ "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.4.0.tgz", "integrity": "sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==" }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/merge-lite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/merge-lite/-/merge-lite-1.0.2.tgz", @@ -2740,17 +2544,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -2767,6 +2560,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "optional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -2813,54 +2607,52 @@ "node": ">=10" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, "node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "dependencies": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" + "node": ">= 14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mochajs" } }, + "node_modules/mocha/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, "node_modules/mocha/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -2872,29 +2664,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/mocha/node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -2928,17 +2697,26 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/mocha/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2993,9 +2771,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -3004,11 +2782,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -3036,22 +2809,6 @@ "node": ">= 10.13" } }, - "node_modules/node-abi": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz", - "integrity": "sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -3091,24 +2848,6 @@ "wrappy": "1" } }, - "node_modules/openapi-data-validator": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/openapi-data-validator/-/openapi-data-validator-2.0.46.tgz", - "integrity": "sha512-6/qCruOqxEPfchoUOu5hWsRAXGv1VXgUzN5+p03J+vrbmO4iLEeOiWW4I/pAr4fduwNKvSp5ZFmUTpDcm9FLmQ==", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "^9.0", - "ajv": "^8.5", - "ajv-formats": "^2.1", - "content-type": "^1.0", - "lodash.clonedeep": "^4.5", - "lodash.get": "^4.4", - "media-typer": "^1.1", - "require-from-string": "^2.0.2" - }, - "engines": { - "node": ">=14.5.0" - } - }, "node_modules/opentracing": { "version": "0.14.7", "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", @@ -3210,12 +2949,12 @@ } }, "node_modules/path-scurry": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", - "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dependencies": { - "lru-cache": "^9.1.1", - "minipass": "^5.0.0 || ^6.0.2" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -3225,9 +2964,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", "engines": { "node": "14 || >=16.14" } @@ -3285,31 +3024,6 @@ "node": ">=0.10.0" } }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3347,15 +3061,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -3398,28 +3103,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -3501,6 +3184,26 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -3545,6 +3248,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -3590,9 +3294,9 @@ } }, "node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { "node": ">=14" }, @@ -3600,49 +3304,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3653,9 +3314,9 @@ } }, "node_modules/streamx": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.13.2.tgz", - "integrity": "sha512-+TWqixPhGDXEG9L/XczSbhfkmwAtGs3BJX5QNU6cvno+pOLKeszByWcnaTu6dg8efsTYqR8ZZuXWHhZfgrxMvA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", "dependencies": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" @@ -3763,9 +3424,9 @@ } }, "node_modules/tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -3778,91 +3439,14 @@ "node": ">=10" } }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-fs/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/tar-fs/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/tar-fs/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tar-fs/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tar-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.0.0.tgz", - "integrity": "sha512-O6OfUKBbQOqAhh6owTWmA730J/yZCYcpmZ1DBj2YX51ZQrt7d7NgzrR+CnO9wP6nt/viWZW2XeXLavX3/ZEbEg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dependencies": { - "b4a": "^1.6.1", - "bl": "^6.0.0", - "streamx": "^2.12.5" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/text-table": { @@ -3993,17 +3577,6 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4029,16 +3602,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/unbzip2-stream": { @@ -4087,9 +3660,13 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -4115,9 +3692,9 @@ } }, "node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "node_modules/wrap-ansi": { @@ -4289,17 +3866,6 @@ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true }, - "@apidevtools/json-schema-ref-parser": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", - "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", - "requires": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, "@babel/runtime-corejs3": { "version": "7.21.5", "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.5.tgz", @@ -4394,24 +3960,35 @@ } }, "@f5devcentral/f5-fast-core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@f5devcentral/f5-fast-core/-/f5-fast-core-0.19.1.tgz", - "integrity": "sha512-tEcwgLqOtocrTqX4+niy3B4XP54TeRfctCnneQW/R7vuMSbIPc9GI3QrXwtzyVRc7/SFtFBKbDqjSf/4gTlAYQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@f5devcentral/f5-fast-core/-/f5-fast-core-0.23.0.tgz", + "integrity": "sha512-j1Eolg7iPkDvomE5psVTJoqfLApTo0izBTyJp5g6BLLISqExfM95uCDn72NyVNZFRWZ9PGU5PrpAyERxMES1tw==", "requires": { - "@apidevtools/json-schema-ref-parser": "^9.0.9", - "@f5devcentral/atg-storage": "^1.3.3", - "adm-zip": "^0.5.9", + "@apidevtools/json-schema-ref-parser": "9.0.9", + "@f5devcentral/atg-storage": "^1.3.9", + "adm-zip": "^0.5.10", "ajv": "^6.12.6", "axios": "^0.27.2", - "deepmerge": "^4.2.2", + "deepmerge": "^4.3.1", "js-yaml": "^4.1.0", "jsonpath-plus": "^4.0.0", - "math-expression-evaluator": "^1.3.14", + "math-expression-evaluator": "^1.4.0", "merge-lite": "^1.0.2", "mustache": "^4.2.0", - "yargs": "^17.5.1" + "yargs": "^17.7.2" }, "dependencies": { + "@apidevtools/json-schema-ref-parser": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz", + "integrity": "sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==", + "requires": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.6", + "call-me-maybe": "^1.0.1", + "js-yaml": "^4.1.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -4492,9 +4069,9 @@ } }, "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "requires": { "ansi-regex": "^6.0.1" } @@ -4601,19 +4178,19 @@ "dev": true }, "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", "dev": true, "requires": { - "@types/minimatch": "*", + "@types/minimatch": "^5.1.2", "@types/node": "*" } }, "@types/js-yaml": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", - "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.8.tgz", + "integrity": "sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==", "dev": true }, "@types/json-schema": { @@ -4628,9 +4205,9 @@ "dev": true }, "@types/mocha": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-7.0.2.tgz", - "integrity": "sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.3.tgz", + "integrity": "sha512-RsOPImTriV/OE4A9qKjMtk2MnXiuLLbcO3nCXK+kvq4nr0iMfFgpjaX3MPLb6f7+EL1FGSelYvuJMV6REH+ZPQ==", "dev": true }, "@types/node": { @@ -4750,12 +4327,6 @@ "eslint-visitor-keys": "^3.3.0" } }, - "@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, "@vscode/test-electron": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.3.2.tgz", @@ -4768,14 +4339,6 @@ "semver": "^7.3.8" } }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { - "event-target-shim": "^5.0.0" - } - }, "acorn": { "version": "8.8.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", @@ -4820,14 +4383,6 @@ "uri-js": "^4.2.2" } }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "requires": { - "ajv": "^8.0.0" - } - }, "ansi-color": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/ansi-color/-/ansi-color-0.2.1.tgz", @@ -4900,9 +4455,9 @@ "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" }, "balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-3.0.1.tgz", + "integrity": "sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==" }, "base64-js": { "version": "1.5.1", @@ -4915,34 +4470,6 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, - "bl": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.1.tgz", - "integrity": "sha512-zk1P1eAEBHhhB+4NfGxqmuV6NgwECnIoRgsOq2ObdEsmoFVIYzJ/Jjcgaj7JOY/8ekH27bIHSV4Si2T+evqu+Q==", - "requires": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - }, - "dependencies": { - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "readable-stream": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.0.tgz", - "integrity": "sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - } - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4976,15 +4503,6 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", @@ -5122,11 +4640,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - }, "core-js-pure": { "version": "3.30.2", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.2.tgz", @@ -5183,14 +4696,6 @@ "strip-dirs": "^2.0.0" } }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "requires": { - "mimic-response": "^3.1.0" - } - }, "decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -5273,11 +4778,6 @@ } } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -5299,11 +4799,6 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" - }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -5522,21 +5017,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" - }, "f5-conx-core": { "version": "0.17.2", "resolved": "https://registry.npmjs.org/f5-conx-core/-/f5-conx-core-0.17.2.tgz", @@ -5558,20 +5038,20 @@ } }, "f5-corkscrew": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/f5-corkscrew/-/f5-corkscrew-1.3.0.tgz", - "integrity": "sha512-klpWaFe5Li/dcoIlZxywImPfMnVw6a+VFXw5U59uJa2sLKxzEnzRUVqjyPKJx/cKlCRiE1ZzcyJ897lzgR0fGQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/f5-corkscrew/-/f5-corkscrew-1.4.0.tgz", + "integrity": "sha512-zA3Rpk16mM/ZAPNi2lDz9zVO+PMittw4KGa/D8QxAMiPJz4iwLrppYwYPY+013KHWGHaBSvIPjBwSdTc4irXkg==", "requires": { - "balanced-match": "^2.0.0", + "balanced-match": "^3.0.1", "decompress": "^4.2.1", "deepmerge-ts": "^5.1.0", "f5-conx-core": "^0.17.2", - "fast-xml-parser": "^4.2.2", - "glob": "^10.2.3", + "fast-xml-parser": "^4.3.2", + "glob": "^10.3.10", "object-path": "^0.11.8", - "tar": "^6.1.14", - "tar-stream": "^3.0.0", - "uuid": "^9.0.0", + "tar": "^6.2.0", + "tar-stream": "^3.1.6", + "uuid": "^9.0.1", "xregexp": "^5.1.1", "yargs": "^17.7.2", "zlib": "^1.0.5" @@ -5593,21 +5073,21 @@ } }, "glob": { - "version": "10.2.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz", - "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.5", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" } }, "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "requires": { "brace-expansion": "^2.0.1" } @@ -5620,9 +5100,9 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-fifo": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.2.0.tgz", - "integrity": "sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "fast-glob": { "version": "3.2.12", @@ -5660,9 +5140,9 @@ "dev": true }, "fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", + "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", "requires": { "strnum": "^1.0.5" } @@ -5813,21 +5293,16 @@ "pinkie-promise": "^2.0.0" } }, - "github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" - }, "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -5881,12 +5356,6 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5980,11 +5449,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -6059,9 +5523,9 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "requires": { "@isaacs/cliui": "^8.0.2", "@pkgjs/parseargs": "^0.11.0" @@ -6130,15 +5594,6 @@ "setimmediate": "^1.0.5" } }, - "keytar": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", - "requires": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" - } - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -6173,16 +5628,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" - }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -6209,6 +5654,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -6239,11 +5685,6 @@ "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.4.0.tgz", "integrity": "sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==" }, - "media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==" - }, "merge-lite": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/merge-lite/-/merge-lite-1.0.2.tgz", @@ -6278,11 +5719,6 @@ "mime-db": "1.52.0" } }, - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -6295,7 +5731,8 @@ "minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "optional": true }, "minipass": { "version": "5.0.0", @@ -6326,43 +5763,41 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" - }, "mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, "requires": { - "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", "chokidar": "3.5.3", - "debug": "4.3.3", + "debug": "4.3.4", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", "glob": "7.2.0", - "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", - "minimatch": "4.2.1", + "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.1", + "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", + "workerpool": "6.2.1", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" }, "dependencies": { + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -6374,23 +5809,6 @@ "wrap-ansi": "^7.0.0" } }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -6417,12 +5835,23 @@ } }, "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } } }, "ms": { @@ -6469,16 +5898,11 @@ "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==" }, "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true }, - "napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -6503,19 +5927,6 @@ "propagate": "^2.0.0" } }, - "node-abi": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.40.0.tgz", - "integrity": "sha512-zNy02qivjjRosswoYmPi8hIKJRr8MpQyeKT6qlcq/OnOgA3Rhoae+IYOqsM9V5+JnHWmxKnWOT2GxvtqdtOCXA==", - "requires": { - "semver": "^7.3.5" - } - }, - "node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" - }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -6546,21 +5957,6 @@ "wrappy": "1" } }, - "openapi-data-validator": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/openapi-data-validator/-/openapi-data-validator-2.0.46.tgz", - "integrity": "sha512-6/qCruOqxEPfchoUOu5hWsRAXGv1VXgUzN5+p03J+vrbmO4iLEeOiWW4I/pAr4fduwNKvSp5ZFmUTpDcm9FLmQ==", - "requires": { - "@apidevtools/json-schema-ref-parser": "^9.0", - "ajv": "^8.5", - "ajv-formats": "^2.1", - "content-type": "^1.0", - "lodash.clonedeep": "^4.5", - "lodash.get": "^4.4", - "media-typer": "^1.1", - "require-from-string": "^2.0.2" - } - }, "opentracing": { "version": "0.14.7", "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", @@ -6632,18 +6028,18 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-scurry": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", - "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "requires": { - "lru-cache": "^9.1.1", - "minipass": "^5.0.0 || ^6.0.2" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { "lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==" + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==" } } }, @@ -6682,25 +6078,6 @@ "pinkie": "^2.0.0" } }, - "prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6729,15 +6106,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -6763,24 +6131,6 @@ "safe-buffer": "^5.1.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - } - } - }, "readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -6838,6 +6188,22 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "run-parallel": { @@ -6866,6 +6232,7 @@ "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -6899,24 +6266,9 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==" - }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - }, - "simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" }, "slash": { "version": "3.0.0", @@ -6925,9 +6277,9 @@ "dev": true }, "streamx": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.13.2.tgz", - "integrity": "sha512-+TWqixPhGDXEG9L/XczSbhfkmwAtGs3BJX5QNU6cvno+pOLKeszByWcnaTu6dg8efsTYqR8ZZuXWHhZfgrxMvA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", "requires": { "fast-fifo": "^1.1.0", "queue-tick": "^1.0.1" @@ -7012,9 +6364,9 @@ } }, "tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -7024,73 +6376,14 @@ "yallist": "^4.0.0" } }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - }, - "dependencies": { - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - } - } - }, "tar-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.0.0.tgz", - "integrity": "sha512-O6OfUKBbQOqAhh6owTWmA730J/yZCYcpmZ1DBj2YX51ZQrt7d7NgzrR+CnO9wP6nt/viWZW2XeXLavX3/ZEbEg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "requires": { - "b4a": "^1.6.1", - "bl": "^6.0.0", - "streamx": "^2.12.5" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "text-table": { @@ -7185,14 +6478,6 @@ "tslib": "^1.8.1" } }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -7209,9 +6494,9 @@ "dev": true }, "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true }, "unbzip2-stream": { @@ -7248,9 +6533,9 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" }, "v8-compile-cache-lib": { "version": "3.0.1", @@ -7267,9 +6552,9 @@ } }, "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", "dev": true }, "wrap-ansi": { diff --git a/package.json b/package.json index b932335..f725ad5 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "displayName": "The F5 Extension", "description": "Supercharge your F5 automation development", "publisher": "F5DevCentral", - "version": "3.14.0", + "version": "3.15.0", "keywords": [ "F5", "F5Networks", @@ -53,9 +53,9 @@ "docs": "docsify serve docs" }, "devDependencies": { - "@types/glob": "^7.1.3", - "@types/js-yaml": "^4.0.5", - "@types/mocha": "^7.0.1", + "@types/glob": "^8.1.0", + "@types/js-yaml": "^4.0.8", + "@types/mocha": "^10.0.3", "@types/node": "^14.18.1", "@types/vscode": "^1.63.0", "@typescript-eslint/eslint-plugin": "^5.60.0", @@ -63,20 +63,17 @@ "@vscode/test-electron": "^2.2.1", "eslint": "^8.12.0", "glob": "^7.1.6", - "mocha": "^9.2.2", + "mocha": "^10.2.0", "nock": "^13.2.9", "ts-node": "^10.9.1", - "typescript": "^4.8.4" + "typescript": "^5.2.2" }, "dependencies": { - "@apidevtools/json-schema-ref-parser": "^9.1.0", - "@f5devcentral/f5-fast-core": "^0.19.1", + "@f5devcentral/f5-fast-core": "^0.23.0", "ajv": "^8.11.2", "f5-conx-core": "^0.17.2", - "f5-corkscrew": "^1.3.0", - "js-yaml": "^4.0.0", - "keytar": "^7.9.0", - "openapi-data-validator": "^2.0.44" + "f5-corkscrew": "^1.4.0", + "js-yaml": "^4.0.0" }, "release": { "branches": [ @@ -162,10 +159,6 @@ { "fileMatch": "*.cf.json", "url": "https://raw.githubusercontent.com/F5Networks/f5-cloud-failover-extension/master/src/nodejs/schema/base_schema.json" - }, - { - "fileMatch": "*.nextcm.json", - "url": "./openapi_nextCm.json" } ], "viewsContainers": { diff --git a/schemas/nextCm/AddIHealthConfigRequest.json b/schemas/nextCm/AddIHealthConfigRequest.json deleted file mode 100644 index 593242f..0000000 --- a/schemas/nextCm/AddIHealthConfigRequest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "properties": { - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - }, - "required": [ - "username", - "password" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/AlertIDList.json b/schemas/nextCm/AlertIDList.json deleted file mode 100644 index 7e66fcd..0000000 --- a/schemas/nextCm/AlertIDList.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "description": "list of alert ids", - "properties": { - "alerts": { - "description": "alert ids", - "items": { - "format": "uuid", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "alerts" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/AlertJsonFilterList.json b/schemas/nextCm/AlertJsonFilterList.json deleted file mode 100644 index 4bed821..0000000 --- a/schemas/nextCm/AlertJsonFilterList.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "description": "list of alert json filters", - "properties": { - "filters": { - "description": "json filters", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ApmPolicy.json b/schemas/nextCm/ApmPolicy.json deleted file mode 100644 index ec747fa..0000000 --- a/schemas/nextCm/ApmPolicy.json +++ /dev/null @@ -1 +0,0 @@ -null \ No newline at end of file diff --git a/schemas/nextCm/AuthenticationRequest.json b/schemas/nextCm/AuthenticationRequest.json deleted file mode 100644 index 51e5183..0000000 --- a/schemas/nextCm/AuthenticationRequest.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "properties": { - "password": { - "type": "string" - }, - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/BatchBackupTasksRequest.json b/schemas/nextCm/BatchBackupTasksRequest.json deleted file mode 100644 index aa9cfa7..0000000 --- a/schemas/nextCm/BatchBackupTasksRequest.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "description": "Instance IDs of the BIG-IP Next instances to be backed up.", - "properties": { - "instance_ids": { - "items": { - "format": "uuid", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "instance_ids" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CertificateRequest.json b/schemas/nextCm/CertificateRequest.json deleted file mode 100644 index 3fc5b1d..0000000 --- a/schemas/nextCm/CertificateRequest.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "properties": { - "administrator_email": { - "description": "administrator email", - "format": "email", - "type": "string" - }, - "challenge_password": { - "description": "challenge password", - "type": "string" - }, - "common_name": { - "description": "the common_name of the certificate cannot be empty", - "minLength": 1, - "type": "string" - }, - "country": { - "description": "country", - "items": { - "maxLength": 2, - "minLength": 2, - "pattern": "^[A-Z]{2}$", - "type": "string" - }, - "type": "array" - }, - "division": { - "description": "division", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "duration_in_days": { - "description": "duration in days", - "format": "int64", - "minimum": 1, - "type": "integer" - }, - "email": { - "description": "email", - "items": { - "format": "email", - "type": "string" - }, - "type": "array" - }, - "issuer": { - "description": "issuer details", - "enum": [ - "Self", - "CA" - ], - "type": "string" - }, - "key_curve_name": { - "description": "supported curve names for ECDSA", - "enum": [ - "prime256v1", - "secp384r1", - "secp521r1" - ], - "type": "string" - }, - "key_passphrase": { - "description": "key passphrase", - "pattern": "[^`$&()|\\\";'<>?]+", - "type": "string" - }, - "key_size": { - "description": "supported key size for RSA", - "enum": [ - 2048, - 3072, - 4096, - 8192 - ], - "format": "int64", - "type": "integer" - }, - "key_type": { - "description": "key type", - "enum": [ - "RSA", - "ECDSA" - ], - "type": "string" - }, - "locality": { - "description": "locality", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "the unique user-given name of the certificate. Certificate names cannot contain spaces or special characters. allowed characters are a-z, A-Z, 0-9, dot(.), dash (-) and underscore (_) starting with only a-z, A-Z.", - "pattern": "^[^\\d._-][\\w\\d._-]+$", - "type": "string" - }, - "organization": { - "description": "organization", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "state": { - "description": "state/province", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "subject_alternative_name": { - "type": "string" - } - }, - "required": [ - "name", - "issuer", - "common_name", - "key_type", - "duration_in_days" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ChangePasswordRequest.json b/schemas/nextCm/ChangePasswordRequest.json deleted file mode 100644 index e32c705..0000000 --- a/schemas/nextCm/ChangePasswordRequest.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "description": "Change password request body.", - "properties": { - "new_password": { - "description": "New password", - "minLength": 1, - "type": "string" - }, - "temp_password": { - "description": "Temporary password", - "minLength": 1, - "type": "string" - }, - "username": { - "description": "User Name", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "username", - "temp_password", - "new_password" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateAlertRequest.json b/schemas/nextCm/CreateAlertRequest.json deleted file mode 100644 index 0657cf7..0000000 --- a/schemas/nextCm/CreateAlertRequest.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "description": "create alert requests", - "properties": { - "alerts": { - "description": "alerts", - "items": { - "description": "create alert", - "properties": { - "annotations": { - "description": "annotations", - "properties": { - "description": { - "description": "alert description", - "type": "string" - }, - "summary": { - "description": "alert summary", - "type": "string" - } - }, - "required": [ - "summary", - "description" - ], - "type": "object" - }, - "endsAt": { - "description": "alert ends at", - "type": "string" - }, - "labels": { - "description": "levels", - "properties": { - "alertname": { - "description": "alert name", - "type": "string" - }, - "helpLink": { - "description": "help link", - "type": "string" - }, - "job": { - "description": "alert job", - "type": "string" - }, - "notificationConfigName": { - "description": "notification config name", - "type": "string" - }, - "severity": { - "description": "alert severity", - "enum": [ - "INFO", - "WARNING", - "SEVERE" - ], - "type": "string" - } - }, - "required": [ - "alertname", - "job" - ], - "type": "object" - }, - "startsAt": { - "description": "alert starts at", - "type": "string" - }, - "status": { - "description": "alert status", - "enum": [ - "firing", - "resolved" - ], - "type": "string" - } - }, - "required": [ - "annotations", - "labels" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "alerts" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateAlertTypeRequest.json b/schemas/nextCm/CreateAlertTypeRequest.json deleted file mode 100644 index 82c7ecf..0000000 --- a/schemas/nextCm/CreateAlertTypeRequest.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "description": "create alert type requests", - "properties": { - "help_link": { - "description": "help link", - "type": "string" - }, - "level": { - "description": "alert severity", - "enum": [ - "INFO", - "WARNING", - "SEVERE" - ], - "type": "string" - }, - "name": { - "description": "alert type name", - "minLength": 1, - "type": "string" - }, - "notifications": { - "description": "list of IDs to link and/or removal", - "properties": { - "delink": { - "description": "IDs to delink", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "link": { - "description": "IDs link", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "source": { - "description": "feature name who is source of this type", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "name", - "source", - "level" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateApplicationRequest.json b/schemas/nextCm/CreateApplicationRequest.json deleted file mode 100644 index c4ccdee..0000000 --- a/schemas/nextCm/CreateApplicationRequest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "properties": { - "allowOverwrite": { - "description": "Allow application with the same name to be overwritten.", - "type": "boolean" - }, - "name": { - "description": "Name of the template in templateSetName/templateName format.", - "type": "string" - }, - "parameters": { - "description": "Parameters for the template.", - "type": "object" - }, - "target": { - "description": "IP address, hostname, or both, of the target instance, expressed in JSON format (for example:{\"target\":{\"address\":\"1.2.3.4\",\"hostname\":\"example.host.net\"}}).", - "properties": { - "address": { - "type": "string" - }, - "hostname": { - "format": "hostname", - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "name", - "parameters", - "target" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateDeploymentRequest.json b/schemas/nextCm/CreateDeploymentRequest.json deleted file mode 100644 index 7a86b2f..0000000 --- a/schemas/nextCm/CreateDeploymentRequest.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "properties": { - "device_id": { - "format": "uuid", - "type": "string" - }, - "template_params_id": { - "format": "uuid", - "type": "string" - }, - "wf_type": { - "type": "string" - } - }, - "required": [ - "device_id", - "template_params_id", - "wf_type" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateInstanceLicensesRequest.json b/schemas/nextCm/CreateInstanceLicensesRequest.json deleted file mode 100644 index 98fd1cf..0000000 --- a/schemas/nextCm/CreateInstanceLicensesRequest.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "properties": { - "connected": { - "default": true, - "type": "boolean" - }, - "instances": { - "description": "instance ids", - "items": { - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "jwt": { - "description": "jwt token to activate the license to given instances.", - "type": "string" - } - }, - "required": [ - "instances" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateQkviewRequest.json b/schemas/nextCm/CreateQkviewRequest.json deleted file mode 100644 index 0c2809b..0000000 --- a/schemas/nextCm/CreateQkviewRequest.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "properties": { - "description": { - "description": "Upload description", - "type": "string" - }, - "f5_support_case": { - "description": "F5 Support Case Number", - "type": "string" - }, - "filename": { - "description": "Qkview file name", - "type": "string" - }, - "ha_node_ips": { - "description": "List of HA Node Control Plane Addresses", - "items": { - "type": "string" - }, - "type": "array" - }, - "ihealth_password": { - "description": "Ihealth password", - "type": "string" - }, - "ihealth_user": { - "description": "Ihealth username", - "type": "string" - }, - "instance_id": { - "description": "The UUID of a BIG-IP Next instance.", - "format": "uuid", - "type": "string" - }, - "save_credentials": { - "default": false, - "description": "Save ihealth credentials", - "type": "boolean" - }, - "share_with_case_owner": { - "description": "Share with case owner", - "type": "boolean" - }, - "source": { - "default": "INSTANCE", - "enum": [ - "CM", - "INSTANCE" - ], - "type": "string" - }, - "storage": { - "default": "EXTERNAL", - "description": "Storage of qkview file", - "enum": [ - "LOCAL", - "EXTERNAL" - ], - "type": "string" - }, - "user_agent": { - "default": "CM", - "description": "User Agent", - "type": "string" - }, - "visible_in_gui": { - "description": "Upload visible in gui", - "type": "boolean" - } - }, - "required": [ - "filename", - "ihealth_user" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateSchemaRequest.json b/schemas/nextCm/CreateSchemaRequest.json deleted file mode 100644 index 9664a22..0000000 --- a/schemas/nextCm/CreateSchemaRequest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "properties": { - "template": { - "description": "Template name in setName/templateName format.", - "type": "string" - } - }, - "required": [ - "template" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateTemplateParamsRequest.json b/schemas/nextCm/CreateTemplateParamsRequest.json deleted file mode 100644 index 443caea..0000000 --- a/schemas/nextCm/CreateTemplateParamsRequest.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "properties": { - "description": { - "type": "string" - }, - "name": { - "type": "string" - }, - "parameters": { - "type": "object" - }, - "source_device_id": { - "format": "uuid", - "type": "string" - }, - "template_id": { - "format": "uuid", - "type": "string" - } - }, - "required": [ - "name", - "template_id" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateTemplateRequest.json b/schemas/nextCm/CreateTemplateRequest.json deleted file mode 100644 index 5a4eb41..0000000 --- a/schemas/nextCm/CreateTemplateRequest.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "Payload for creating a new FAST template.", - "example": { - "body": "template: |\n {\n \"class\": \"AS3\",\n \"action\": \"deploy\",\n \"persist\": true,\n \"declaration\": {\n \"class\": \"ADC\",\n \"schemaVersion\": \"3.0.0\",\n \"{{tenant_name}}\": {\n \"class\": \"Tenant\",\n \"{{application_name}}\": {\n \"class\": \"Application\",\n \"template\": \"http\",\n \"serviceMain\": {\n \"class\": \"Service_HTTP\",\n \"virtualPort\": {{virtual_port::integer}},\n \"virtualAddresses\": [\"{{virtual_address}}\"],\n \"pool\": \"{{application_name}}_web_pool\"\n },\n \"{{application_name}}_web_pool\": {\n \"class\": \"Pool\",\n \"monitors\": [\n \"http\"\n ],\n \"members\": [\n {\n \"servicePort\": {{service_port::integer}},\n \"serverAddresses\": {{server_addresses::array}}\n }\n ]\n }\n }\n }\n }\n }", - "description": "optional template description", - "file_type": "JSON", - "name": "example-AS3-template", - "set_name": "as3" - }, - "properties": { - "body": { - "minLength": 1, - "title": "Template body", - "type": "string" - }, - "description": { - "title": "Template description", - "type": "string" - }, - "file_type": { - "enum": [ - "YAML", - "MST", - "JSON" - ], - "type": "string" - }, - "name": { - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "title": "Template name", - "type": "string" - }, - "published": { - "default": false, - "description": "The value true indicates that the template has been published, and this means the template is in use by an application or that it cannot be modified. When the template is published (value set to true), the template cannot be updated, deleted or moved from one template-set to another.", - "type": "boolean" - }, - "set_name": { - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "title": "Template set name", - "type": "string" - } - }, - "required": [ - "name", - "set_name", - "body", - "file_type" - ], - "title": "Payload for creating a template", - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/CreateVelosProviderRequest.json b/schemas/nextCm/CreateVelosProviderRequest.json deleted file mode 100644 index 37670c9..0000000 --- a/schemas/nextCm/CreateVelosProviderRequest.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "properties": { - "name": { - "type": "string" - }, - "partition_address": { - "type": "string" - }, - "partition_password": { - "type": "string" - }, - "partition_port": { - "type": "integer" - }, - "partition_user": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "type", - "name", - "partition_address", - "partition_port", - "partition_user", - "partition_password" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/Device.json b/schemas/nextCm/Device.json deleted file mode 100644 index 4c0f084..0000000 --- a/schemas/nextCm/Device.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "properties": { - "address": { - "readOnly": true, - "title": "IP Address", - "type": "string" - }, - "certificate_validated": { - "format": "date-time", - "type": "string" - }, - "certificate_validation_error": { - "type": "string" - }, - "certificate_validity": { - "type": "boolean" - }, - "hostname": { - "type": "string" - }, - "id": { - "format": "uuid", - "type": "string" - }, - "mode": { - "enum": [ - "STANDALONE", - "HA" - ], - "type": "string" - }, - "platform_type": { - "description": "Specifies the platform of this BIG-IP Next instance.", - "maxLength": 16, - "type": "string" - }, - "port": { - "format": "int32", - "type": "integer" - }, - "status": { - "enum": [ - "HEALTHY", - "UNHEALTHY", - "UNKNOWN" - ], - "type": "string" - }, - "version": { - "type": "string" - } - }, - "required": [ - "id" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/DeviceDiscoveryRequest.json b/schemas/nextCm/DeviceDiscoveryRequest.json deleted file mode 100644 index 85683c1..0000000 --- a/schemas/nextCm/DeviceDiscoveryRequest.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "properties": { - "address": { - "type": "string" - }, - "device_group": { - "type": "string" - }, - "device_password": { - "format": "password", - "type": "string" - }, - "device_user": { - "type": "string" - }, - "management_password": { - "format": "password", - "minLength": 1, - "type": "string" - }, - "management_user": { - "minLength": 1, - "type": "string" - }, - "port": { - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "address", - "port", - "device_user", - "device_password", - "management_user", - "management_password" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/DeviceGroup.json b/schemas/nextCm/DeviceGroup.json deleted file mode 100644 index 70c7ce9..0000000 --- a/schemas/nextCm/DeviceGroup.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "properties": { - "id": { - "format": "uuid", - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/EditDeploymentRequest.json b/schemas/nextCm/EditDeploymentRequest.json deleted file mode 100644 index 64a5b8e..0000000 --- a/schemas/nextCm/EditDeploymentRequest.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "properties": { - "template_params_id": { - "format": "uuid", - "type": "string" - }, - "wf_type": { - "type": "string" - } - }, - "required": [ - "template_params_id", - "wf_type" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/EditTemplateTask.json b/schemas/nextCm/EditTemplateTask.json deleted file mode 100644 index 5a4eb41..0000000 --- a/schemas/nextCm/EditTemplateTask.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "description": "Payload for creating a new FAST template.", - "example": { - "body": "template: |\n {\n \"class\": \"AS3\",\n \"action\": \"deploy\",\n \"persist\": true,\n \"declaration\": {\n \"class\": \"ADC\",\n \"schemaVersion\": \"3.0.0\",\n \"{{tenant_name}}\": {\n \"class\": \"Tenant\",\n \"{{application_name}}\": {\n \"class\": \"Application\",\n \"template\": \"http\",\n \"serviceMain\": {\n \"class\": \"Service_HTTP\",\n \"virtualPort\": {{virtual_port::integer}},\n \"virtualAddresses\": [\"{{virtual_address}}\"],\n \"pool\": \"{{application_name}}_web_pool\"\n },\n \"{{application_name}}_web_pool\": {\n \"class\": \"Pool\",\n \"monitors\": [\n \"http\"\n ],\n \"members\": [\n {\n \"servicePort\": {{service_port::integer}},\n \"serverAddresses\": {{server_addresses::array}}\n }\n ]\n }\n }\n }\n }\n }", - "description": "optional template description", - "file_type": "JSON", - "name": "example-AS3-template", - "set_name": "as3" - }, - "properties": { - "body": { - "minLength": 1, - "title": "Template body", - "type": "string" - }, - "description": { - "title": "Template description", - "type": "string" - }, - "file_type": { - "enum": [ - "YAML", - "MST", - "JSON" - ], - "type": "string" - }, - "name": { - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "title": "Template name", - "type": "string" - }, - "published": { - "default": false, - "description": "The value true indicates that the template has been published, and this means the template is in use by an application or that it cannot be modified. When the template is published (value set to true), the template cannot be updated, deleted or moved from one template-set to another.", - "type": "boolean" - }, - "set_name": { - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]+$", - "title": "Template set name", - "type": "string" - } - }, - "required": [ - "name", - "set_name", - "body", - "file_type" - ], - "title": "Payload for creating a template", - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/EffectivePermissions.json b/schemas/nextCm/EffectivePermissions.json deleted file mode 100644 index fc9eb31..0000000 --- a/schemas/nextCm/EffectivePermissions.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "properties": { - "effectivepermissions": { - "items": { - "properties": { - "action": { - "enum": [ - "GET", - "POST", - "PUT", - "DELETE" - ], - "type": "string" - }, - "allowed": { - "type": "boolean" - }, - "resource": { - "type": "string" - }, - "user_name": { - "type": "string" - } - }, - "required": [ - "user_name", - "resource", - "action" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ExportSamlSpRequest.json b/schemas/nextCm/ExportSamlSpRequest.json deleted file mode 100644 index ec747fa..0000000 --- a/schemas/nextCm/ExportSamlSpRequest.json +++ /dev/null @@ -1 +0,0 @@ -null \ No newline at end of file diff --git a/schemas/nextCm/GetInstanceLicensesWithBasicAuthRequest.json b/schemas/nextCm/GetInstanceLicensesWithBasicAuthRequest.json deleted file mode 100644 index 4ce7e81..0000000 --- a/schemas/nextCm/GetInstanceLicensesWithBasicAuthRequest.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "properties": { - "address": { - "type": "string" - }, - "password": { - "format": "password", - "minLength": 1, - "type": "string" - }, - "port": { - "format": "int", - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "username": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "address", - "port", - "username", - "password" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/HAInstanceCreateRequest.json b/schemas/nextCm/HAInstanceCreateRequest.json deleted file mode 100644 index 01a1f03..0000000 --- a/schemas/nextCm/HAInstanceCreateRequest.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "properties": { - "auto_failback": { - "default": false, - "description": "Automatically restore operations to the original active node if it is available, or when it becomes available if it is not.", - "title": "Auto Failback", - "type": "boolean" - }, - "cluster_management_ip": { - "description": "The cluster IP address on management network.", - "example": "10.192.1.1", - "title": "Cluster Management IP", - "type": "string" - }, - "cluster_name": { - "description": "Name of the BIG-IP Next HA instance.", - "maxLength": 192, - "type": "string" - }, - "control_plane_vlan": { - "description": "The VLAN used for high availability.", - "properties": { - "mtu": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "selfIps": { - "items": { - "properties": { - "address": { - "type": "string" - }, - "instanceName": { - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - "type": "array" - }, - "tag": { - "type": "integer" - }, - "taggedInterfaces": { - "items": { - "type": "string" - }, - "type": "array" - }, - "untaggedInterfaces": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "name", - "tag" - ], - "title": "HA VLAN", - "type": "object" - }, - "data_plane_vlan": { - "description": "The VLAN used for high availability.", - "properties": { - "mtu": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "selfIps": { - "items": { - "properties": { - "address": { - "type": "string" - }, - "instanceName": { - "type": "string" - } - }, - "required": [ - "address" - ], - "type": "object" - }, - "type": "array" - }, - "tag": { - "type": "integer" - }, - "taggedInterfaces": { - "items": { - "type": "string" - }, - "type": "array" - }, - "untaggedInterfaces": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "name", - "tag" - ], - "title": "HA VLAN", - "type": "object" - }, - "nodes": { - "description": "The first item is the configuration for the active node in a BIG-IP Next HA instance. Subsequent items are for other nodes.", - "items": { - "properties": { - "control_plane_address": { - "description": "The IP address and netmask of the node on control plane in a BIG-IP Next HA instance.", - "example": "10.30.1.11/24", - "title": "HA Network Node IP with network mask", - "type": "string" - }, - "data_plane_primary_address": { - "description": "Specifies the IP address and network mask used for state mirroring for a BIG-IP Next HA instance.", - "example": "10.20.1.1/24", - "title": "Primary Mirror IP and network mask", - "type": "string" - }, - "data_plane_secondary_address": { - "description": "Specifies the secondary IP address and network mask used for state mirroring between nodes in a BIG-IP Next HA instance.", - "example": "10.20.10.1/24", - "title": "Secondary Mirror IP and network mask", - "type": "string" - }, - "name": { - "description": "The name of a BIG-IP Next instance. The maximum length is 192 characters.", - "maxLength": 192, - "title": "Name", - "type": "string" - } - }, - "required": [ - "control_plane_address", - "data_plane_primary_address" - ], - "type": "object" - }, - "maxItems": 2, - "minItems": 2, - "type": "array" - }, - "standby_instance_id": { - "description": "The UUID of a managed standalone BIG-IP Next instance that has been selected to become the standby node in a BIG-IP Next HA instance.", - "format": "uuid", - "type": "string" - }, - "traffic_vlan": { - "items": { - "properties": { - "name": { - "type": "string" - }, - "networkName": { - "type": "string" - }, - "selfIps": { - "items": { - "properties": { - "address": { - "type": "string" - }, - "instanceName": { - "enum": [ - "FLOATING-IP", - "ACTIVE-NODE", - "STANDBY-NODE" - ], - "type": "string" - } - }, - "required": [ - "address", - "instanceName" - ], - "type": "object" - }, - "minItems": 3, - "type": "array" - } - }, - "required": [ - "name", - "networkName", - "selfIps" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "cluster_management_ip", - "standby_instance_id", - "data_plane_vlan", - "control_plane_vlan", - "nodes" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/HealthSyncRequest.json b/schemas/nextCm/HealthSyncRequest.json deleted file mode 100644 index db46d88..0000000 --- a/schemas/nextCm/HealthSyncRequest.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "properties": { - "address": { - "type": "string" - }, - "instance_id": { - "format": "uuid", - "type": "string" - }, - "port": { - "format": "int32", - "maximum": 65535, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "instance_id", - "address", - "port" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ImportIdpConnectorRequest.json b/schemas/nextCm/ImportIdpConnectorRequest.json deleted file mode 100644 index fabcabc..0000000 --- a/schemas/nextCm/ImportIdpConnectorRequest.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "properties": { - "metadata": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "metadata" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ImportRequest.json b/schemas/nextCm/ImportRequest.json deleted file mode 100644 index 77c524b..0000000 --- a/schemas/nextCm/ImportRequest.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "properties": { - "cert_passphrase": { - "description": "certificate password for pkcs12 import", - "type": "string" - }, - "cert_text": { - "description": "certificate content", - "type": "string" - }, - "id": { - "description": "uuid of the certificate", - "format": "uuid", - "type": "string" - }, - "import_type": { - "enum": [ - "PEM", - "PKCS12" - ], - "type": "string" - }, - "key_passphrase": { - "description": "key passphrase", - "pattern": "[^`$&()|\\\";'<>?]+", - "type": "string" - }, - "key_text": { - "description": "key content", - "type": "string" - }, - "name": { - "description": "the unique user-given name of the certificate. Certificate names cannot contain spaces or special characters. allowed characters are a-z, A-Z, 0-9, dot(.), dash (-) and underscore (_) starting with only a-z, A-Z.", - "pattern": "^[^\\d._-][\\w\\d._-]+$", - "type": "string" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/InstanceAuthenticityRequest.json b/schemas/nextCm/InstanceAuthenticityRequest.json deleted file mode 100644 index a9d5eb5..0000000 --- a/schemas/nextCm/InstanceAuthenticityRequest.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "description": "A BIG-IP Next instance authenticity request.", - "properties": { - "address": { - "type": "string" - }, - "password": { - "format": "password", - "minLength": 1, - "type": "string" - }, - "port": { - "format": "int", - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "username": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "address", - "port", - "username", - "password" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/InstanceBackupRequest.json b/schemas/nextCm/InstanceBackupRequest.json deleted file mode 100644 index c4b182f..0000000 --- a/schemas/nextCm/InstanceBackupRequest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "properties": { - "file_name": { - "type": "string" - }, - "file_path": { - "type": "string" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/InstanceRestoreRequest.json b/schemas/nextCm/InstanceRestoreRequest.json deleted file mode 100644 index b715048..0000000 --- a/schemas/nextCm/InstanceRestoreRequest.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "properties": { - "file_name": { - "type": "string" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ModifyAlertTypeRequest.json b/schemas/nextCm/ModifyAlertTypeRequest.json deleted file mode 100644 index 690de55..0000000 --- a/schemas/nextCm/ModifyAlertTypeRequest.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "description": "modify alert type request", - "properties": { - "help_link": { - "description": "help link", - "type": "string" - }, - "level": { - "description": "alert severity", - "enum": [ - "INFO", - "WARNING", - "SEVERE" - ], - "type": "string" - }, - "name": { - "description": "alert type name", - "minLength": 1, - "type": "string" - }, - "notifications": { - "description": "list of IDs to link and/or removal", - "properties": { - "delink": { - "description": "IDs to delink", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "link": { - "description": "IDs link", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "source": { - "description": "feature name who is source of this type", - "minLength": 1, - "type": "string" - } - }, - "required": [ - "name", - "source" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ModifyAlertTypeRequestByID.json b/schemas/nextCm/ModifyAlertTypeRequestByID.json deleted file mode 100644 index 08801d4..0000000 --- a/schemas/nextCm/ModifyAlertTypeRequestByID.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "description": "modify alert type request", - "properties": { - "help_link": { - "description": "help link", - "type": "string" - }, - "level": { - "description": "alert severity", - "enum": [ - "INFO", - "WARNING", - "SEVERE" - ], - "type": "string" - }, - "notifications": { - "description": "list of IDs to link and/or removal", - "properties": { - "delink": { - "description": "IDs to delink", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "link": { - "description": "IDs link", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ModifyGeolocation.json b/schemas/nextCm/ModifyGeolocation.json deleted file mode 100644 index 720108c..0000000 --- a/schemas/nextCm/ModifyGeolocation.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "description": "Defines geolocation allow/disallow data.", - "properties": { - "action": { - "description": "The action to apply.", - "enum": [ - "allow", - "disallow" - ], - "type": "string" - }, - "country_name": { - "description": "Specifies the name of the country.", - "example": "Sierra Leone", - "type": "string" - }, - "policies": { - "description": "The array of WAF policy names, don't specify to apply to all policies.", - "items": { - "example": "waf_policy", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "country_name", - "action" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ModifyNotificationConfigurationsRequestByID.json b/schemas/nextCm/ModifyNotificationConfigurationsRequestByID.json deleted file mode 100644 index 6a4c6aa..0000000 --- a/schemas/nextCm/ModifyNotificationConfigurationsRequestByID.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "properties": { - "alert_types": { - "description": "list of IDs to link and/or removal", - "properties": { - "delink": { - "description": "IDs to delink", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "link": { - "description": "IDs link", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "location": { - "type": "string" - }, - "name": { - "type": "string" - }, - "notification_type": { - "enum": [ - "SMTP", - "UI" - ], - "type": "string" - }, - "periodicity": { - "type": "string" - }, - "server_config": { - "type": "string" - }, - "suppressed": { - "type": "boolean" - }, - "to_emails": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "name", - "notification_type" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/NotificationConfigCreateRequest.json b/schemas/nextCm/NotificationConfigCreateRequest.json deleted file mode 100644 index 6132fdf..0000000 --- a/schemas/nextCm/NotificationConfigCreateRequest.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "properties": { - "alert_types": { - "description": "list of IDs to link and/or removal", - "properties": { - "delink": { - "description": "IDs to delink", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "link": { - "description": "IDs link", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "location": { - "type": "string" - }, - "name": { - "minLength": 1, - "type": "string" - }, - "notification_type": { - "enum": [ - "SMTP", - "UI" - ], - "type": "string" - }, - "periodicity": { - "minLength": 1, - "type": "string" - }, - "server_config": { - "type": "string" - }, - "suppressed": { - "type": "boolean" - }, - "to_emails": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "name", - "notification_type" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/NotificationConfigUpdateRequest.json b/schemas/nextCm/NotificationConfigUpdateRequest.json deleted file mode 100644 index bc28111..0000000 --- a/schemas/nextCm/NotificationConfigUpdateRequest.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "properties": { - "alert_types": { - "description": "list of IDs to link and/or removal", - "properties": { - "delink": { - "description": "IDs to delink", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "link": { - "description": "IDs link", - "items": { - "description": "ID", - "format": "uuid", - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "type": "object" - }, - "id": { - "format": "uuid", - "type": "string" - }, - "location": { - "type": "string" - }, - "name": { - "type": "string" - }, - "notification_type": { - "enum": [ - "SMTP", - "UI" - ], - "type": "string" - }, - "periodicity": { - "type": "string" - }, - "server_config": { - "type": "string" - }, - "suppressed": { - "type": "boolean" - }, - "to_emails": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "id", - "name", - "notification_type" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/NotificationIDList.json b/schemas/nextCm/NotificationIDList.json deleted file mode 100644 index 585b8f9..0000000 --- a/schemas/nextCm/NotificationIDList.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "description": "list of notification ids", - "properties": { - "notifications": { - "description": "notification ids", - "items": { - "format": "uuid", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "notifications" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ObjectID.json b/schemas/nextCm/ObjectID.json deleted file mode 100644 index 9d2b5be..0000000 --- a/schemas/nextCm/ObjectID.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "properties": { - "id": { - "format": "uuid", - "type": "string" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/PerAppConfig.json b/schemas/nextCm/PerAppConfig.json deleted file mode 100644 index fa78e04..0000000 --- a/schemas/nextCm/PerAppConfig.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "properties": { - "merging_overlapping_objects": { - "example": [ - "ltm pool", - "ltm virtual-address", - "ltm monitor", - "ltm rule", - "ltm profile", - "sys folder", - "auth partition" - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "regexes": { - "items": { - "properties": { - "field": { - "enum": [ - "name", - "description" - ], - "type": "string" - }, - "regex": { - "description": "Regular expression containing at least one of named groups: application_name, tenant_name", - "example": "app: (?P.*)", - "type": "string" - } - }, - "required": [ - "field", - "regex" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/PolicyEvasionList.json b/schemas/nextCm/PolicyEvasionList.json deleted file mode 100644 index f8a1c15..0000000 --- a/schemas/nextCm/PolicyEvasionList.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "properties": { - "evasion_violations": { - "items": null, - "type": "array" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/PolicyHttpRFCList.json b/schemas/nextCm/PolicyHttpRFCList.json deleted file mode 100644 index 4f9666d..0000000 --- a/schemas/nextCm/PolicyHttpRFCList.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "properties": { - "http_rfc_violations": { - "items": null, - "type": "array" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/PolicySuggestionList.json b/schemas/nextCm/PolicySuggestionList.json deleted file mode 100644 index d261174..0000000 --- a/schemas/nextCm/PolicySuggestionList.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "properties": { - "suggestions": { - "items": null, - "type": "array" - } - }, - "required": [ - "suggestions" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/PolicySuggestionsIDsList.json b/schemas/nextCm/PolicySuggestionsIDsList.json deleted file mode 100644 index 5a4a10c..0000000 --- a/schemas/nextCm/PolicySuggestionsIDsList.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "properties": { - "suggestions_ids": { - "description": "Apply an action to the list of suggestion IDs.", - "items": { - "format": "uuid", - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "suggestions_ids" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/PolicyViolationsList.json b/schemas/nextCm/PolicyViolationsList.json deleted file mode 100644 index ecd43f4..0000000 --- a/schemas/nextCm/PolicyViolationsList.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "properties": { - "violations": { - "items": null, - "type": "array" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/RenewRequest.json b/schemas/nextCm/RenewRequest.json deleted file mode 100644 index 4392d87..0000000 --- a/schemas/nextCm/RenewRequest.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "properties": { - "administrator_email": { - "description": "administrator email", - "format": "email", - "type": "string" - }, - "challenge_password": { - "description": "challenge password", - "type": "string" - }, - "common_name": { - "description": "the common_name of the certificate cannot be empty", - "minLength": 1, - "type": "string" - }, - "country": { - "description": "country", - "items": { - "maxLength": 2, - "minLength": 2, - "pattern": "^[A-Z]{2}$", - "type": "string" - }, - "type": "array" - }, - "division": { - "description": "division", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "duration_in_days": { - "description": "duration in days", - "format": "int64", - "minimum": 1, - "type": "integer" - }, - "email": { - "description": "email", - "items": { - "format": "email", - "type": "string" - }, - "type": "array" - }, - "id": { - "format": "uuid", - "type": "string" - }, - "issuer": { - "description": "issuer details", - "enum": [ - "Self", - "CA" - ], - "type": "string" - }, - "key_curve_name": { - "description": "supported curve names for ECDSA", - "enum": [ - "prime256v1", - "secp384r1", - "secp521r1" - ], - "type": "string" - }, - "key_passphrase": { - "description": "key passphrase", - "pattern": "[^`$&()|\\\";'<>?]+", - "type": "string" - }, - "key_size": { - "description": "supported key size for RSA", - "enum": [ - 2048, - 3072, - 4096, - 8192 - ], - "format": "int64", - "type": "integer" - }, - "key_type": { - "enum": [ - "RSA", - "ECDSA" - ], - "type": "string" - }, - "locality": { - "description": "locality", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "organization": { - "description": "organization", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "state": { - "description": "state/province", - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "subject_alternative_name": { - "type": "string" - } - }, - "required": [ - "id" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ResetPasswordRequest.json b/schemas/nextCm/ResetPasswordRequest.json deleted file mode 100644 index 2162789..0000000 --- a/schemas/nextCm/ResetPasswordRequest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "description": "Reset password request body.", - "properties": { - "temporary_password": { - "type": "string" - }, - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ResourcePermission.json b/schemas/nextCm/ResourcePermission.json deleted file mode 100644 index 12eb6c9..0000000 --- a/schemas/nextCm/ResourcePermission.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "properties": { - "id": { - "format": "uuid", - "type": "string" - }, - "method": { - "enum": [ - "GET", - "POST", - "PUT", - "DELETE" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "resource": { - "type": "string" - } - }, - "required": [ - "name", - "resource", - "method" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/ResourcePermissionGroup.json b/schemas/nextCm/ResourcePermissionGroup.json deleted file mode 100644 index 70c7ce9..0000000 --- a/schemas/nextCm/ResourcePermissionGroup.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "properties": { - "id": { - "format": "uuid", - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/RestorePasswordRequest.json b/schemas/nextCm/RestorePasswordRequest.json deleted file mode 100644 index 3df7d85..0000000 --- a/schemas/nextCm/RestorePasswordRequest.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "description": "Restore password request body.", - "properties": { - "username": { - "type": "string" - } - }, - "required": [ - "username" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/Role.json b/schemas/nextCm/Role.json deleted file mode 100644 index 70c7ce9..0000000 --- a/schemas/nextCm/Role.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "properties": { - "id": { - "format": "uuid", - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/RoleGroup.json b/schemas/nextCm/RoleGroup.json deleted file mode 100644 index 70c7ce9..0000000 --- a/schemas/nextCm/RoleGroup.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "properties": { - "id": { - "format": "uuid", - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/SMTPServerConnection.json b/schemas/nextCm/SMTPServerConnection.json deleted file mode 100644 index 3eb11a1..0000000 --- a/schemas/nextCm/SMTPServerConnection.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "description": "Request connection to SMTP server.", - "properties": { - "host": { - "description": "SMTP server host.", - "minLength": 1, - "type": "string" - }, - "port": { - "description": "SMTP server port.", - "format": "int32", - "maximum": 65535, - "minimum": 2, - "type": "integer" - } - }, - "required": [ - "host", - "port" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/SMTPServerRequest.json b/schemas/nextCm/SMTPServerRequest.json deleted file mode 100644 index d82cecf..0000000 --- a/schemas/nextCm/SMTPServerRequest.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "description": "SMTP server request information.", - "properties": { - "authentication_enabled": { - "description": "Authentication enabled status.", - "type": "boolean" - }, - "description": { - "description": "A one-line description of the SMTP server.", - "type": "string" - }, - "encryption": { - "description": "Encryption used to send emails.", - "minLength": 1, - "type": "string" - }, - "from_address": { - "description": "Email address used to send emails from.", - "format": "email", - "minLength": 1, - "type": "string" - }, - "host": { - "description": "SMTP server host.", - "minLength": 1, - "type": "string" - }, - "id": { - "description": "UUID of the SMTP server.", - "format": "uuid", - "type": "string" - }, - "password": { - "description": "Password for the SMTP server.", - "type": "string" - }, - "port": { - "description": "SMTP server port.", - "format": "int32", - "maximum": 65535, - "minimum": 2, - "type": "integer" - }, - "server_name": { - "description": "SMTP server name.", - "minLength": 1, - "type": "string" - }, - "username": { - "description": "Username of the SMTP server.", - "type": "string" - } - }, - "required": [ - "server_name", - "host", - "port", - "from_address", - "encryption", - "authentication_enabled" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/TemplateParams.json b/schemas/nextCm/TemplateParams.json deleted file mode 100644 index 1c4b2b0..0000000 --- a/schemas/nextCm/TemplateParams.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "properties": { - "created": { - "format": "date-time", - "type": "string" - }, - "description": { - "type": "string" - }, - "id": { - "format": "uuid", - "type": "string" - }, - "name": { - "type": "string" - }, - "parameters": { - "type": "object" - }, - "source_device_id": { - "format": "uuid", - "type": "string" - }, - "template_id": { - "format": "uuid", - "type": "string" - } - }, - "required": [ - "template_id" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/UpdateIHealthConfigRequest.json b/schemas/nextCm/UpdateIHealthConfigRequest.json deleted file mode 100644 index f8e7184..0000000 --- a/schemas/nextCm/UpdateIHealthConfigRequest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "properties": { - "password": { - "type": "string" - } - }, - "required": [ - "password" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/UpdateLicensesRequest.json b/schemas/nextCm/UpdateLicensesRequest.json deleted file mode 100644 index 3385e56..0000000 --- a/schemas/nextCm/UpdateLicensesRequest.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "properties": { - "connected": { - "description": "license connect mode", - "type": "boolean" - }, - "status": { - "description": "license status", - "enum": [ - "VALID", - "INVALID" - ], - "type": "string" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/UpdateQkviewRequest.json b/schemas/nextCm/UpdateQkviewRequest.json deleted file mode 100644 index f9aede6..0000000 --- a/schemas/nextCm/UpdateQkviewRequest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "properties": { - "ihealth_user": { - "type": "string" - } - }, - "required": [ - "ihealth_user" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/UpdateSMTPServer.json b/schemas/nextCm/UpdateSMTPServer.json deleted file mode 100644 index ec25d27..0000000 --- a/schemas/nextCm/UpdateSMTPServer.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "description": "SMTP server information.", - "properties": { - "authentication_enabled": { - "description": "Authentication enabled status.", - "type": "boolean" - }, - "description": { - "description": "A one-line description of the SMTP server.", - "type": "string" - }, - "encryption": { - "description": "Encryption used to send emails.", - "type": "string" - }, - "from_address": { - "description": "Email address used to send emails from.", - "format": "email", - "type": "string" - }, - "host": { - "description": "SMTP server host.", - "type": "string" - }, - "id": { - "description": "UUID of the SMTP server.", - "format": "uuid", - "type": "string" - }, - "password": { - "description": "Password for the SMTP server.", - "type": "string" - }, - "port": { - "description": "SMTP server port.", - "format": "int32", - "type": "integer" - }, - "server_name": { - "description": "SMTP server name.", - "type": "string" - }, - "username": { - "description": "Username of the SMTP server.", - "type": "string" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/UploadIHealthRequest.json b/schemas/nextCm/UploadIHealthRequest.json deleted file mode 100644 index 1e79fe8..0000000 --- a/schemas/nextCm/UploadIHealthRequest.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "properties": { - "description": { - "type": "string" - }, - "f5_support_case": { - "type": "string" - }, - "share_with_case_owner": { - "type": "boolean" - }, - "user_agent": { - "type": "string" - }, - "username": { - "type": "string" - }, - "visible_in_gui": { - "type": "boolean" - } - }, - "required": [ - "user_agent", - "username" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/UserUpdate.json b/schemas/nextCm/UserUpdate.json deleted file mode 100644 index cb1e880..0000000 --- a/schemas/nextCm/UserUpdate.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "anyOf": [ - { - "allOf": [ - { - "description": "Persistent user information.", - "properties": { - "disabled": { - "description": "Disabled Status.", - "type": "boolean" - }, - "display_name": { - "description": "User display name", - "type": "string" - }, - "email": { - "description": "user email", - "type": "string" - }, - "force_change_password": { - "description": "force change password flag.", - "type": "boolean" - }, - "id": { - "description": "UUID for the user.", - "format": "uuid", - "type": "string" - }, - "password": { - "description": "User password.", - "type": "string" - }, - "temporary_password": { - "description": "User temporary password.", - "type": "string" - }, - "username": { - "description": "User name.", - "type": "string" - } - }, - "type": "object" - }, - { - "properties": { - "new_password": { - "description": "New password", - "type": "string" - } - }, - "required": [ - "username", - "password" - ], - "type": "object" - } - ], - "description": "The user's current credentials, and a new password to assign to the user." - }, - { - "description": "Persistent user information.", - "properties": { - "disabled": { - "description": "Disabled Status.", - "type": "boolean" - }, - "display_name": { - "description": "User display name", - "type": "string" - }, - "email": { - "description": "user email", - "type": "string" - }, - "force_change_password": { - "description": "force change password flag.", - "type": "boolean" - }, - "id": { - "description": "UUID for the user.", - "format": "uuid", - "type": "string" - }, - "password": { - "description": "User password.", - "type": "string" - }, - "temporary_password": { - "description": "User temporary password.", - "type": "string" - }, - "username": { - "description": "User name.", - "type": "string" - } - }, - "type": "object" - } - ], - "description": "The user fields to be updated." -} \ No newline at end of file diff --git a/schemas/nextCm/VelosProvider.json b/schemas/nextCm/VelosProvider.json deleted file mode 100644 index 93d2ab2..0000000 --- a/schemas/nextCm/VelosProvider.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "properties": { - "id": { - "format": "uuid", - "type": "string" - }, - "name": { - "type": "string" - }, - "partition_address": { - "type": "string" - }, - "partition_port": { - "type": "number" - }, - "type": { - "type": "string" - } - }, - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/VelosProviderAuthenticationRequest.json b/schemas/nextCm/VelosProviderAuthenticationRequest.json deleted file mode 100644 index eca0e4f..0000000 --- a/schemas/nextCm/VelosProviderAuthenticationRequest.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "properties": { - "partition_address": { - "type": "string" - }, - "partition_password": { - "type": "string" - }, - "partition_port": { - "type": "integer" - }, - "partition_user": { - "type": "string" - } - }, - "required": [ - "partition_address", - "partition_port", - "partition_user", - "partition_password" - ], - "type": "object" -} \ No newline at end of file diff --git a/schemas/nextCm/WafAnalytics.json b/schemas/nextCm/WafAnalytics.json deleted file mode 100644 index ec747fa..0000000 --- a/schemas/nextCm/WafAnalytics.json +++ /dev/null @@ -1 +0,0 @@ -null \ No newline at end of file diff --git a/schemas/nextCm/WafAnalyticsPercentageRequest.json b/schemas/nextCm/WafAnalyticsPercentageRequest.json deleted file mode 100644 index ec747fa..0000000 --- a/schemas/nextCm/WafAnalyticsPercentageRequest.json +++ /dev/null @@ -1 +0,0 @@ -null \ No newline at end of file diff --git a/schemas/nextCm/WafAnalyticsTopRequest.json b/schemas/nextCm/WafAnalyticsTopRequest.json deleted file mode 100644 index ec747fa..0000000 --- a/schemas/nextCm/WafAnalyticsTopRequest.json +++ /dev/null @@ -1 +0,0 @@ -null \ No newline at end of file diff --git a/schemas/nextCm/WafPolicy.json b/schemas/nextCm/WafPolicy.json deleted file mode 100644 index 84ae2f5..0000000 --- a/schemas/nextCm/WafPolicy.json +++ /dev/null @@ -1,4941 +0,0 @@ -{ - "allOf": [ - { - "description": "Defines WAF policy data without declaration.", - "properties": { - "application_language": { - "description": "The character encoding for the web application. The character encoding determines how the policy processes the character sets. The default is Auto detect.", - "example": "utf-8", - "type": "string" - }, - "applications": null, - "created_by": { - "description": "User ID or application name which created the policy/template.", - "type": "string" - }, - "created_time": { - "description": "Time the policy/template was created.", - "format": "date-time", - "type": "string" - }, - "enforcement_mode": { - "description": "How BIG-IP MA processes a request that triggers a security policy violation.\n- **Blocking:** When the enforcement mode is set to blocking, any triggered violation is blocked (configured for blocking).\n- **Transparent:** When the enforcement mode is set to transparent, traffic is not blocked even if a violation is triggered.", - "enum": [ - "blocking", - "transparent" - ], - "type": "string" - }, - "id": { - "description": "UUID of WAF template/policy.", - "format": "uuid", - "type": "string" - }, - "is_default_template": { - "description": "Defined whether template is the default template.", - "type": "boolean" - }, - "last_deployed": { - "description": "Last time the policy was deployed.", - "format": "date-time", - "type": "string" - }, - "last_modified": { - "description": "Last time the policy/template was modified.", - "format": "date-time", - "type": "string" - }, - "name": { - "description": "WAF template/policy name.", - "example": "entity_name", - "type": "string" - }, - "tags": { - "description": "Tags for marking policies.", - "items": { - "example": "tag1", - "type": "string" - }, - "type": "array" - }, - "template_name": { - "description": "The name of the template upon which the policy is based.", - "example": "Advanced-Protection", - "type": "string" - } - }, - "type": "object" - }, - { - "properties": { - "declaration": { - "properties": { - "policy": { - "properties": { - "antivirus": { - "oneOf": [ - { - "properties": { - "inspectHttpUploads": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "app-protection": { - "oneOf": [ - { - "properties": { - "enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "applicationLanguage": { - "description": "The character encoding for the web application. The character encoding determines how the policy processes the character sets. The default is Auto detect.", - "enum": [ - "auto-detect", - "big5", - "euc-jp", - "euc-kr", - "gb18030", - "gb2312", - "gbk", - "iso-8859-1", - "iso-8859-10", - "iso-8859-13", - "iso-8859-15", - "iso-8859-16", - "iso-8859-2", - "iso-8859-3", - "iso-8859-4", - "iso-8859-5", - "iso-8859-6", - "iso-8859-7", - "iso-8859-8", - "iso-8859-9", - "koi8-r", - "shift_jis", - "utf-8", - "windows-1250", - "windows-1251", - "windows-1252", - "windows-1253", - "windows-1255", - "windows-1256", - "windows-1257", - "windows-874" - ], - "type": "string" - }, - "behavioral-enforcement": { - "oneOf": [ - { - "properties": { - "behavioralEnforcementViolations": { - "items": { - "properties": { - "name": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "enableBehavioralEnforcement": { - "type": "boolean" - }, - "enableBlockingCveSignatures": { - "type": "boolean" - }, - "enableBlockingHighAccuracySignatures": { - "type": "boolean" - }, - "enableBlockingLikelyMaliciousTransactions": { - "type": "boolean" - }, - "enableBlockingSuspiciousTransactions": { - "type": "boolean" - }, - "enableBlockingViolations": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "blocking-settings": { - "description": "This section defines policy block/alarm/learn behaviors.", - "properties": { - "evasions": { - "oneOf": [ - { - "items": { - "description": "This section defines behavior of 'Evasion technique detected' (VIOL_EVASION) violation sub-violations.\nUser can control which sub-violations are enabled (alarmed/blocked) and/or learned.\nBehavior of sub-violations depends on the block/alarm/learn settings of 'Evasion technique detected' violation,\ndefined in /policy/blocking-settings/violations section:\n - If learn is disabled in violation - no learning will be done for sub-violations\n - If both alarm and block are disabled - enable flag becomes irrelevant, since there will be no block/alarm for all sub-violations", - "properties": { - "description": { - "description": "Human-readable name of sub-violation.", - "enum": [ - "%u decoding", - "Apache whitespace", - "Bad unescape", - "Bare byte decoding", - "Directory traversals", - "IIS Unicode codepoints", - "IIS backslashes", - "Multiple decoding", - "Multiple slashes", - "Semicolon path parameters", - "Trailing dot", - "Trailing slash" - ], - "type": "string" - }, - "enabled": { - "description": "Defines if sub-violation is enforced - alarmed or blocked, according to the 'Evasion technique detected' (VIOL_EVASION) violation blocking settings.", - "type": "boolean" - }, - "learn": { - "description": "Defines if sub-violation is learned. Sub-violations are learned only when learn is enabled for the 'Evasion technique detected' (VIOL_EVASION) violation.", - "type": "boolean" - }, - "maxDecodingPasses": { - "description": "Defines how many times the system decodes URI and parameter values before the request is considered an evasion.\nRelevant only for the 'Multiple decoding' sub-violation.", - "maximum": 5, - "minimum": 2, - "type": "integer" - } - }, - "required": [ - "description" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "http-protocols": { - "oneOf": [ - { - "items": { - "description": "This section defines behavior of 'HTTP protocol compliance failed' (VIOL_HTTP_PROTOCOL) violation sub-violations.\nUser can control which sub-violations are enabled (alarmed/blocked) and/or learned.\nBehavior of sub-violations depends on the block/alarm/learn settings of 'HTTP protocol compliance failed' violation,\ndefined in /policy/blocking-settings/violations section:\n - If learn is disabled in violation - no learning will be done for sub-violations\n - If both alarm and block are disabled - enable flag becomes irrelevant, since there will be no block/alarm for all sub-violations", - "properties": { - "description": { - "description": "Human-readable name of sub-violation", - "enum": [ - "Bad HTTP version", - "Bad host header value", - "Bad multipart parameters parsing", - "Bad multipart/form-data request parsing", - "Body in GET or HEAD requests", - "CRLF characters before request start", - "Check maximum number of cookies", - "Check maximum number of headers", - "Check maximum number of parameters", - "Chunked request with Content-Length header", - "Content length should be a positive number", - "Header name with no header value", - "High ASCII characters in headers", - "Host header contains IP address", - "Multiple host headers", - "No Host header in HTTP/1.1 request", - "Null in request", - "POST request with Content-Length: 0", - "Several Content-Length headers", - "Unescaped space in URL", - "Unparsable request content" - ], - "type": "string" - }, - "enabled": { - "description": "Defines if sub-violation is enforced - alarmed or blocked, according to the 'HTTP protocol compliance failed' (VIOL_HTTP_PROTOCOL) violation blocking settings", - "type": "boolean" - }, - "learn": { - "description": "Defines if sub-violation is learned. Sub-violations is learned only when learn is enabled for the 'HTTP protocol compliance failed' (VIOL_HTTP_PROTOCOL) violation", - "type": "boolean" - }, - "maxCookies": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "maxHeaders": { - "description": "Defines maximum allowed number of headers in request.\nRelevant only for the 'Check maximum number of headers' sub-violation", - "maximum": 150, - "minimum": 1, - "type": "integer" - }, - "maxParams": { - "description": "Defines maximum allowed number of parameters in request.\nRelevant only for the 'Check maximum number of parameters' sub-violation", - "maximum": 5000, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "description" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "violations": { - "oneOf": [ - { - "items": { - "properties": { - "alarm": { - "type": "boolean" - }, - "block": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "learn": { - "type": "boolean" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "web-services-securities": { - "oneOf": [ - { - "items": { - "properties": { - "description": { - "enum": [ - "Certificate Error", - "Certificate Expired", - "Decryption Error", - "Encryption Error", - "Expired Timestamp", - "Internal Error", - "Invalid Timestamp", - "Malformed Error", - "Missing Timestamp", - "Signing Error", - "Timestamp expiration is too far in the future", - "UnSigned Timestamp", - "Verification Error" - ], - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "learn": { - "type": "boolean" - } - }, - "required": [ - "description" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - } - }, - "type": "object" - }, - "bot-defense": { - "description": "This section defines the properties of the bot defense feature.", - "properties": { - "mitigations": { - "description": "This section defines the mitigation to each class or signature.", - "properties": { - "anomalies": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "action": { - "enum": [ - "alarm", - "block", - "default", - "detect", - "ignore" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "scoreThreshold": { - "oneOf": [ - { - "maximum": 150, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "default" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - } - }, - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "browsers": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "action": { - "enum": [ - "alarm", - "block", - "detect" - ], - "type": "string" - }, - "maxVersion": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - "minVersion": { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "classes": { - "oneOf": [ - { - "items": { - "description": "List of classes and their actions.", - "properties": { - "action": { - "description": "The action we set for this class.\n\n- **ignore**: The system will not detect or report bots from this class.\n- **detect**: The system will detect and report the bot, but violation won't be reported.\n- **alarm**: The system will detect and report requests made by bots from this class as illegal, but will not block them.\n- **block**: The system will detect and report requests made by bots from this class as illegal, and block them.", - "enum": [ - "alarm", - "block", - "detect", - "ignore" - ], - "type": "string" - }, - "name": { - "description": "The class we set the action to.", - "enum": [ - "browser", - "malicious-bot", - "suspicious-browser", - "trusted-bot", - "unknown", - "untrusted-bot" - ], - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "signatures": { - "oneOf": [ - { - "items": { - "description": "List of signatures and their actions.\nIf a signature is not in the list - its action will be taken according to the class it belongs to.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "action": { - "description": "The action we set for this signature.\n\n- **ignore**: The system will not detect or report this signature.\n- **detect**: The system will detect and report the signature, but violation won't be reported.\n- **alarm**: The system will detect and report requests made by those specific bots as illegal, but will not block them.\n- **block**: The system will detect and report requests made by those specific bots as illegal, and will block them.", - "enum": [ - "alarm", - "block", - "detect", - "ignore" - ], - "type": "string" - }, - "name": { - "description": "The name of the signature we want to change action for.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - null - ] - } - }, - "type": "object" - }, - "settings": { - "oneOf": [ - { - "description": "This section contains all bot defense settings.", - "properties": { - "caseSensitiveHttpHeaders": { - "description": "If *false* the system will not check header name with case sensitivity for both relevant anomalies: Invalid HTTP Headers, Suspicious HTTP Headers.", - "type": "boolean" - }, - "isEnabled": { - "description": "If *true* the system detects bots.", - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - } - }, - "type": "object" - }, - "browser-definitions": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "isUserDefined": { - "type": "boolean" - }, - "matchRegex": { - "type": "string" - }, - "matchString": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "brute-force-attack-preventions": { - "oneOf": [ - { - "items": { - "description": "Defines configuration for Brute Force Protection feature.\nThere is default configuration (one with bruteForceProtectionForAllLoginPages flag and without url) that applies to all configured login URLs unless there exists another brute force configuration for a specific login page.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "bruteForceProtectionForAllLoginPages": { - "description": "When enabled, enables Brute Force Protection for all configured login URLs.\nWhen disabled, only brute force configurations for specific login pages are applied in case they exist.", - "type": "boolean" - }, - "captchaBypassCriteria": { - "description": "Specifies configuration for CAPTCHA Bypass Mitigation.", - "properties": { - "action": { - "description": "Specifies action that is applied when defined threshold is reached.\n\n- **alarm-and-blocking-page**: The system will log the login attempt, block the request and send the Blocking page.\n- **alarm-and-drop**: The system will log the login attempt and reset the TCP connection.\n- **alarm-and-honeypot-page**: The system will log the login attempt, block the request and send the Honeypot page. The Honeypot page is used for attacker deception. The page should look like an application failed login page. Unlike with the Blocking page, when the Honeypot page is sent an attacker is not able to distinguish a failed login response from a mitigation. As a result, the attacker will not change identity (Source IP or Device ID) and the brute force attack will be rendered ineffective. The Honeypot page is recommended when mitigation is request blocking.", - "enum": [ - "alarm-and-blocking-page", - "alarm-and-drop", - "alarm-and-honeypot-page" - ], - "type": "string" - }, - "enabled": { - "description": "When enabled, the system counts successful CAPTCHA challenges with failed logins from IP Address / Device ID.", - "type": "boolean" - }, - "threshold": { - "description": "After configured threshold (number of successful CAPTCHA challenges with failed logins from IP Address / Device ID) defined action will be applied for the next login attempt", - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "clientSideIntegrityBypassCriteria": { - "description": "Specifies configuration for Client Side Integrity Bypass Mitigation.", - "properties": { - "action": { - "description": "Specifies action that is applied when defined threshold is reached.\n\n- **alarm-and-captcha**: The system determines whether the client is a legal browser operated by a human user by sending a CAPTCHA challenge. A login attempt is logged if the client successfully passes the CAPTCHA challenge.", - "enum": [ - "alarm-and-captcha" - ], - "type": "string" - }, - "enabled": { - "description": "When enabled, the system counts successful challenges with failed logins from IP Address / Device ID / Username.\nLegitimate users who have disabled JavaScripting on their browsers for security reasons will fail a client side integrity challenge.", - "type": "boolean" - }, - "threshold": { - "description": "After configured threshold (number of successful challenges with failed logins from IP Address / Device ID / Username) defined action will be applied for the next login attempt", - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "detectionCriteria": { - "description": "Specifies configuration for detecting distributed brute force attacks.", - "properties": { - "action": { - "description": "Specifies action that is applied when one of the defined thresholds (credentialsStuffingMatchesReached, failedLoginAttemptsRateReached) is reached.\n\n- **alarm**: The system will log the login attempt.\n- **alarm-and-captcha**: The system determines whether the client is a legal browser operated by a human user by sending a CAPTCHA challenge. A login attempt is logged if the client successfully passes the CAPTCHA challenge.\n- **alarm-and-client-side-integrity**: The system determines whether the client is a legal browser or a bot by sending a page containing JavaScript code and waiting for a response. Legal browsers are able to execute JavaScript and produce a valid response, whereas bots cannot. A login attempt is logged if the client successfully passes the Client Side Integrity challenge.\n- **alarm-and-client-side-integrity-captcha**: The system sends a Client Side Integrity challenge upon the first failed login attempt from a source and a CAPTCHA challenge upon second and all subsequent failed login attempts. A login attempt is logged if client successfully passes the challenge. This enforcement action should be chosen if CAPTCHA is considered intrusive. Benign users who mistype their password will likely get only the Client Side Integrity challenge, while an attacker will eventually get the CAPTCHA challenge.", - "enum": [ - "alarm", - "alarm-and-captcha", - "alarm-and-client-side-integrity", - "alarm-and-client-side-integrity-captcha" - ], - "type": "string" - }, - "credentialsStuffingMatchesReached": { - "description": "After configured threshold (number of detected login attempts that match known leaked credentials library) defined action will be applied for the next login attempt.", - "maximum": 10000, - "minimum": 1, - "type": "integer" - }, - "detectCredentialsStuffingAttack": { - "description": "When enabled, the system detects login attempts that match known leaked credentials library.", - "type": "boolean" - }, - "detectDistributedBruteForceAttack": { - "description": "When enabled, the system detects distributed brute force attacks.", - "type": "boolean" - }, - "failedLoginAttemptsRateReached": { - "description": "After configured threshold (number of failed login attempts within measurementPeriod) defined action will be applied for the next login attempt. ", - "maximum": 10000, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "leakedCredentialsCriteria": { - "description": "Specifies configuration for Leaked Credentials Detection.", - "properties": { - "action": { - "description": "Specifies action when leaked credentials detected.\n\n- **alarm**: The system will log the login attempt.\n- **alarm-and-blocking-page**: The system will log the login attempt, block the request and send the Blocking page.\n- **alarm-and-honeypot-page**: The system will log the login attempt, block the request and send the Honeypot page. The Honeypot page is used for attacker deception. The page should look like an application failed login page. Unlike with the Blocking page, when the Honeypot page is sent an attacker is not able to distinguish a failed login response from a mitigation. As a result, the attacker will not change identity (Source IP or Device ID) and the brute force attack will be rendered ineffective. The Honeypot page is recommended when mitigation is request blocking.\n- **alarm-and-leaked-credentials-response-page**: The default response page warns the user that the username and password have been leaked and the password should be changed.", - "enum": [ - "alarm", - "alarm-and-blocking-page", - "alarm-and-honeypot-page", - "alarm-and-leaked-credentials-response-page" - ], - "type": "string" - }, - "enabled": { - "description": "When enabled, the system can match presented credentials to those in the credentials dictionary to detect leaked credentials.", - "type": "boolean" - } - }, - "type": "object" - }, - "loginAttemptsFromTheSameDeviceId": { - "description": "Specifies configuration for detecting brute force attacks for Device ID.", - "properties": { - "action": { - "description": "Specifies action that is applied when defined threshold is reached.\n\n- **alarm**: The system will log the login attempt.\n- **alarm-and-blocking-page**: The system will log the login attempt, block the request and send the Blocking page.\n- **alarm-and-captcha**: The system determines whether the client is a legal browser operated by a human user by sending a CAPTCHA challenge. A login attempt is logged if the client successfully passes the CAPTCHA challenge.\n- **alarm-and-client-side-integrity**: The system determines whether the client is a legal browser or a bot by sending a page containing JavaScript code and waiting for a response. Legal browsers are able to execute JavaScript and produce a valid response, whereas bots cannot. A login attempt is logged if the client successfully passes the Client Side Integrity challenge.\n- **alarm-and-drop**: The system will log the login attempt and reset the TCP connection.\n- **alarm-and-honeypot-page**: The system will log the login attempt, block the request and send the Honeypot page. The Honeypot page is used for attacker deception. The page should look like an application failed login page. Unlike with the Blocking page, when the Honeypot page is sent an attacker is not able to distinguish a failed login response from a mitigation. As a result, the attacker will not change identity (Source IP or Device ID) and the brute force attack will be rendered ineffective. The Honeypot page is recommended when mitigation is request blocking.", - "enum": [ - "alarm", - "alarm-and-blocking-page", - "alarm-and-captcha", - "alarm-and-client-side-integrity", - "alarm-and-drop", - "alarm-and-honeypot-page" - ], - "type": "string" - }, - "enabled": { - "description": "When enabled, the system counts failed login attempts for Device ID.", - "type": "boolean" - }, - "threshold": { - "description": "After configured threshold (number of failed login attempts for Device ID) defined action will be applied for the next login attempt.", - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "loginAttemptsFromTheSameIp": { - "description": "Specifies configuration for detecting brute force attacks from IP Address.", - "properties": { - "action": { - "description": "Specifies action that is applied when defined threshold is reached.\n\n- **alarm**: The system will log the login attempt.\n- **alarm-and-blocking-page**: The system will log the login attempt, block the request and send the Blocking page.\n- **alarm-and-captcha**: The system determines whether the client is a legal browser operated by a human user by sending a CAPTCHA challenge. A login attempt is logged if the client successfully passes the CAPTCHA challenge.\n- **alarm-and-client-side-integrity**: The system determines whether the client is a legal browser or a bot by sending a page containing JavaScript code and waiting for a response. Legal browsers are able to execute JavaScript and produce a valid response, whereas bots cannot. A login attempt is logged if the client successfully passes the Client Side Integrity challenge.\n- **alarm-and-drop**: The system will log the login attempt and reset the TCP connection.\n- **alarm-and-honeypot-page**: The system will log the login attempt, block the request and send the Honeypot page. The Honeypot page is used for attacker deception. The page should look like an application failed login page. Unlike with the Blocking page, when the Honeypot page is sent an attacker is not able to distinguish a failed login response from a mitigation. As a result, the attacker will not change identity (Source IP or Device ID) and the brute force attack will be rendered ineffective. The Honeypot page is recommended when mitigation is request blocking.", - "enum": [ - "alarm", - "alarm-and-blocking-page", - "alarm-and-captcha", - "alarm-and-client-side-integrity", - "alarm-and-drop", - "alarm-and-honeypot-page" - ], - "type": "string" - }, - "enabled": { - "description": "When enabled, the system counts failed login attempts from IP Address.", - "type": "boolean" - }, - "threshold": { - "description": "After configured threshold (number of failed login attempts from IP Address) defined action will be applied for the next login attempt.", - "maximum": 1000, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "loginAttemptsFromTheSameUser": { - "description": "Specifies configuration for detecting brute force attacks for Username.", - "properties": { - "action": { - "description": "Specifies action that is applied when defined threshold is reached.\n\n- **alarm**: The system will log the login attempt.\n- **alarm-and-captcha**: The system determines whether the client is a legal browser operated by a human user by sending a CAPTCHA challenge. A login attempt is logged if the client successfully passes the CAPTCHA challenge.\n- **alarm-and-client-side-integrity**: The system determines whether the client is a legal browser or a bot by sending a page containing JavaScript code and waiting for a response. Legal browsers are able to execute JavaScript and produce a valid response, whereas bots cannot. A login attempt is logged if the client successfully passes the Client Side Integrity challenge.", - "enum": [ - "alarm", - "alarm-and-captcha", - "alarm-and-client-side-integrity" - ], - "type": "string" - }, - "enabled": { - "description": "When enabled, the system counts failed login attempts for each Username.", - "type": "boolean" - }, - "threshold": { - "description": "After configured threshold (number of failed login attempts for each Username) defined action will be applied for the next login attempt.", - "maximum": 100, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "measurementPeriod": { - "description": "Defines detection period (measured in minutes) for distributed brute force attacks.", - "maximum": 90000, - "minimum": 60, - "type": "integer" - }, - "preventionDuration": { - "description": "Defines prevention period (measured in minutes) for distributed brute force attacks.", - "oneOf": [ - { - "maximum": 90000, - "minimum": 60, - "type": "integer" - }, - { - "enum": [ - "90000" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "reEnableLoginAfter": { - "description": "Defines prevention period (measured in minutes) for source-based brute force attacks.", - "maximum": 90000, - "minimum": 60, - "type": "integer" - }, - "sourceBasedProtectionDetectionPeriod": { - "description": "Defines detection period (measured in minutes) for source-based brute force attacks.", - "maximum": 90000, - "minimum": 60, - "type": "integer" - }, - "url": null - }, - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "caseInsensitive": { - "description": "Specifies whether the security policy treats microservice URLs, file types, URLs, and parameters as case sensitive or not. When this setting is enabled, the system stores these security policy elements in lowercase in the security policy configuration.", - "type": "boolean" - }, - "character-sets": { - "oneOf": [ - { - "items": { - "properties": { - "characterSet": { - "items": { - "properties": { - "isAllowed": { - "type": "boolean" - }, - "metachar": { - "type": "string" - } - }, - "required": [ - "metachar" - ], - "type": "object" - }, - "type": "array" - }, - "characterSetType": { - "enum": [ - "gwt-content", - "header", - "json-content", - "parameter-name", - "parameter-value", - "plain-text-content", - "url", - "xml-content" - ], - "type": "string" - } - }, - "required": [ - "characterSetType" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "cookie-settings": { - "oneOf": [ - { - "description": "The maximum length of a cookie header name and value that the system processes. The system calculates and enforces a cookie header length based on the sum of the length of the cookie header name and value.", - "properties": { - "maximumCookieHeaderLength": { - "description": "Maximum Cookie Header Length must be greater than 0 and less than 65536 bytes (64K). Note: if 0 or *any* are set, then no restriction on the cookie header length is applied.", - "oneOf": [ - { - "maximum": 65536, - "minimum": 1, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - } - }, - "type": "object" - }, - null - ] - }, - "cookies": { - "oneOf": [ - { - "items": { - "description": "This section defines Cookie entities for your policy.\nYou can specify the cookies that you want to allow, and the ones you want to enforce in a security policy:\n\n- **Allowed cookies**: The system allows these cookies and clients can change them.\n- **Enforced cookies**: The system enforces the cookies in the list (not allowing clients to change them) and allows clients to change all others.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "accessibleOnlyThroughTheHttpProtocol": { - "description": "Specifies, when true, that the system adds the HttpOnly attribute to the domain cookie's response header.\nThis is done to expose the cookie to only HTTP and HTTPS entities.\nThis prevents the cookie from being modified, or intercepted even if it is not modified,\nby unwanted third parties that run scripts on the web page.\n\n**Notes**:\n- The system does not validate that the cookie has not been modified or intercepted.\n- The feature covers all security policy cookies, both enforced and allowed, explicit and wildcard.", - "type": "boolean" - }, - "attackSignaturesCheck": { - "description": "Specifies, when true, that you want attack signatures and threat campaigns to be detected on this cookie\nand possibly override the security policy settings of an attack signature or threat campaign specifically for this cookie.\nAfter you enable this setting, the system displays a list of attack signatures and threat campaigns.", - "type": "boolean" - }, - "enforcementType": { - "description": "Specifies how the system treats this cookie.\n\n- **enforced**: Specifies that according to the security policy, this cookie may not be changed by the client.\n- **allowed**: Specifies that according to the security policy, this cookie may be changed by the client. The system ignores this cookie.", - "enum": [ - "allow", - "enforce" - ], - "type": "string" - }, - "insertSameSiteAttribute": { - "description": "The introduction of the SameSite http attribute (defined in [RFC6265bis](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-same-site-00))\nallows you to declare if your cookie should be restricted to a first-party or same-site context.\nIntroducing the SameSite attribute on a cookie provides three different ways of controlling same-site vs. cross-site cookie sending:\n\n- **strict**: Cookie will only be sent in a first-party context. In user terms, the cookie will only be sent if the site for the cookie matches the site currently shown in the browser's URL bar.\n- **lax**: Cookies will be sent with top level navigation\n- **none-value**: Cookies will be sent in a third-party context.", - "enum": [ - "lax", - "none", - "none-value", - "strict" - ], - "type": "string" - }, - "isBase64": { - "description": "You can enable the security policy to check whether cookie values contain a Base64 encoded string.\nIf the value is indeed Base64 encoded, the system decodes this value and continues with its security checks.\nSpecifies, when true, that the security policy checks the cookie's value for Base64 encoding, and decodes the value.\n\n**Note**: This setting is only available if Cookie Type is set to Allowed.", - "type": "boolean" - }, - "maskValueInLogs": { - "description": "Specifies, when true, that the cookie's value will be masked in the request log", - "type": "boolean" - }, - "name": { - "description": "Specifies the cookie name as appearing in the http cookie header.\nThe cookie name length is limited to 500 characters.\n\nNames can be one of the following according to the *type* attribute:\n\n- **explicit**: Specifies that the cookie has a specific name and is not a wildcard entity. Type the name of a cookie exactly as you expect it to appear in the request.\n- **wildcard**: Specifies that any cookie that matches the listed wildcard expression should be treated according to the wildcard attributes. Type a wildcard expression that matches the expected cookie. For example, the wildcard expression cookie_12* of type Enforced specifies that the security policy should not allow modified domain cookies for all cookies which match cookie_12*.\n\nThe syntax for wildcard entities is based on shell-style wildcard characters.\nThe list below describes the wildcard characters that you can use so that the entity name can match multiple objects.\n\n- **\\***: Matches all characters\n- **?**: Matches any single character\n- **[abcde]**: Matches exactly one of the characters listed\n- **[!abcde]**: Matches any character not listed\n- **[a-e]**: Matches exactly one character in the range\n- **[!a-e]**: Matches any character not in the range\n\n**Note**: Wildcards do not match regular expressions. Do not use a regular expression as a wildcard.", - "type": "string" - }, - "performStaging": { - "description": "If *true* then any violation associated to the respective cookie will not be enforced, and the request will not be considered illegal.", - "type": "boolean" - }, - "securedOverHttpsConnection": { - "description": "Specifies, when true, that the system adds the Secure attribute to the domain cookie's response header.\nThis is done to ensure that the cookies are returned to the server only over SSL (by using the HTTPS protocol).\nThis prevents the cookie from being intercepted, but does not guarantee its integrity.\n\n**Notes**:\n- The system does not validate that the cookie was received over SSL.\n- The feature covers all security policy cookies, both enforced and allowed, explicit and wildcard.", - "type": "boolean" - }, - "signatureOverrides": { - "description": "Array of signature overrides.\nSpecifies attack signatures whose security policy settings are overridden for this cookie,\nand which action the security policy takes when it discovers a request for this cookie that matches these attack signatures.", - "items": { - "properties": { - "enabled": { - "description": "Specifies, when true, that the overridden signature is enforced", - "type": "boolean" - }, - "name": { - "description": "The signature name which, along with the signature tag, identifies the signature.", - "type": "string" - }, - "signatureId": { - "description": "The signature ID which identifies the signature.", - "type": "integer" - }, - "tag": { - "description": "The signature tag which, along with the signature name, identifies the signature.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "type": { - "description": "Determines the type of the **name** attribute.\nOnly when setting the type to wildcard will the special wildcard characters in the name be interpreted as such.", - "enum": [ - "explicit", - "wildcard" - ], - "type": "string" - }, - "wildcardOrder": { - "description": "Specifies the order index for wildcard cookies matching.\nWildcard cookies with lower wildcard order will get checked for a match prior to cookies with higher wildcard order.", - "type": "integer" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "csrf-protection": { - "oneOf": [ - { - "properties": { - "enabled": { - "type": "boolean" - }, - "expirationTimeInSeconds": { - "oneOf": [ - { - "type": "integer" - }, - { - "enum": [ - "disabled" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "sslOnly": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "csrf-urls": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "enforcementAction": { - "enum": [ - "none", - "verify-csrf-token", - "verify-origin" - ], - "type": "string" - }, - "method": { - "enum": [ - "GET", - "POST", - "any" - ], - "type": "string" - }, - "parametersList": { - "items": { - "type": "string" - }, - "type": "array" - }, - "requiredParameters": { - "enum": [ - "at-least-one", - "from-parameters-list", - "ignore" - ], - "type": "string" - }, - "url": { - "type": "string" - }, - "wildcardOrder": { - "type": "integer" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "data-guard": { - "oneOf": [ - { - "description": "Data Guard feature can prevent responses from exposing sensitive information by masking the data.", - "properties": { - "creditCardNumbers": { - "description": "If *true* the system considers credit card numbers as sensitive data.", - "type": "boolean" - }, - "customPatterns": { - "description": "If *true* the system recognizes customized patterns as sensitive data.", - "type": "boolean" - }, - "customPatternsList": { - "description": "List of PCRE regular expressions that specify the sensitive data patterns.", - "items": { - "type": "string" - }, - "type": "array" - }, - "enabled": { - "description": "If *true* the system protects sensitive data.", - "type": "boolean" - }, - "enforcementMode": { - "description": "Specifies the URLs for which the system enforces data guard protection.\n\n- **ignore-urls-in-list**: Specifies that the system enforces data guard protection for all URLs except for those URLs in the Enforcement Mode list.\n- **enforce-urls-in-list**: Specifies that the system enforces data guard protection only for those URLs in the Enforcement Mode list", - "enum": [ - "enforce-urls-in-list", - "ignore-urls-in-list" - ], - "type": "string" - }, - "enforcementUrls": { - "description": "List of URLS to be enforced based on enforcement mode of data guard protection.", - "items": { - "type": "string" - }, - "type": "array" - }, - "exceptionPatterns": { - "description": "If *true* the system recognizes exception patterns as not being sensitive data.", - "type": "boolean" - }, - "exceptionPatternsList": { - "description": "List of PCRE regular expressions that specify the data patterns that are not recognized as sensitive data.", - "items": { - "type": "string" - }, - "type": "array" - }, - "fileContentDetection": { - "description": "If *true* the system checks responses for file content.", - "type": "boolean" - }, - "fileContentDetectionFormats": { - "description": "File content types that the system considers to be sensitive data. Available file content types:\n - MS Office 2007 or later\n - MS Office 97-2003 document\n - PDF - Adobe Portable Document Format\n - Mach-O - Mach object file format - used in Mac OS X\n - PE - Portable Executable for Windows\n - ELF - binary file format for Unix", - "items": { - "properties": { - "name": { - "enum": [ - "ELF - binary file format for Unix", - "MS Office 2007 or later", - "MS Office 97-2003 document", - "Mach-O - Mach object file format - used in Mac OS X", - "PDF - Adobe Portable Document Format", - "PE - Portable Executable for Windows" - ], - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "lastCcnDigitsToExpose": { - "description": "Specifies the number of last digits in credit card numbers that are exposed.", - "maximum": 20, - "minimum": 0, - "type": "integer" - }, - "lastSsnDigitsToExpose": { - "description": "Specifies the number of last digits in U.S Social Security numbers that are exposed.", - "maximum": 20, - "minimum": 0, - "type": "integer" - }, - "maskData": { - "description": "If *true* the system intercepts the returned responses to mask sensitive data.", - "type": "boolean" - }, - "usSocialSecurityNumbers": { - "description": "If *true* the system considers U.S Social Security numbers as sensitive data.", - "type": "boolean" - } - }, - "required": [ - "enabled" - ], - "type": "object" - }, - null - ] - }, - "database-protection": { - "oneOf": [ - { - "properties": { - "databaseProtectionEnabled": { - "type": "boolean" - }, - "userSource": { - "enum": [ - "apm", - "login-pages" - ], - "type": "string" - } - }, - "type": "object" - }, - null - ] - }, - "deception-response-pages": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "responseBody": { - "type": "string" - }, - "responseHeaders": { - "type": "string" - }, - "responseStatusCode": { - "type": "string" - } - }, - "required": [ - "responseStatusCode" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "deception-settings": { - "oneOf": [ - { - "properties": { - "enableCustomResponses": { - "type": "boolean" - }, - "enableResponsePageByAttackType": { - "type": "boolean" - }, - "responseStatusCodes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "serverTechnologyName": { - "type": "string" - } - }, - "type": "object" - }, - null - ] - }, - "description": { - "description": "Specifies the description of the policy.", - "type": "string" - }, - "disabled-action-items": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "type": { - "enum": [ - "cookie-staging", - "default-parameter", - "filetype-staging", - "modified-policy", - "parameter-staging", - "policy-validation", - "scanner-vulnerabilities", - "signature-staging", - "threat-campaign-staging", - "transparent-policy", - "url-staging", - "websocket-url-staging" - ], - "type": "string" - } - }, - "required": [ - "type" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "disallowed-geolocations": { - "oneOf": [ - { - "items": { - "description": "Specifies a list of countries that may not access the web application.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "countryCode": { - "description": "Specifies the ISO country code of the selected country.", - "type": "string" - }, - "countryName": { - "description": "Specifies the name of the country.", - "type": "string" - } - }, - "required": [ - "countryName" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "dos-protection": { - "oneOf": [ - { - "properties": { - "enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "enablePassiveMode": { - "description": "Passive Mode allows the policy to be associated with a Performance L4 Virtual Server (using a FastL4 profile). With FastL4, traffic is analyzed but is not modified in any way.", - "type": "boolean" - }, - "enforcementMode": { - "description": "How the system processes a request that triggers a security policy violation.\n- **Blocking:** When the enforcement mode is set to blocking, traffic is blocked if it causes a violation (configured for blocking).\n- **Transparent:** When the enforcement mode is set to transparent, traffic is not blocked even if a violation is triggered.", - "enum": [ - "blocking", - "transparent" - ], - "type": "string" - }, - "filetypes": { - "oneOf": [ - { - "items": { - "description": "File types are categorization of the URLs in the request by the extension appearing past the last dot at the end of the URL. For example, the file type of /index.php\nis \"php\". Other well known file types are html, aspx, png, jpeg and many more. A special case is the \"empty\" file type called \"no-ext\" meaning, no extension in which the URL has no dot at its last segment as in /foo_no_dot\n\nFile types usually imply the expected content type in the response. For example, html and php return HTML content, while jpeg, png and gif return images, each in its respective format. File types also imply the server technology deployed for rendering the page. For example, php (PHP), aspx (ASP) and many others.\n\nThe security policy uses file types for several purposes:\n1. Ability to define which file types are allowed and which are disallowed. By including the pure wildcard \"\\*\" file type and a list of disallowed file types you have a file type denylist.\nBy having a list of explicit file type *without* the pure wildcard \"\\*\" you have a file type allowlist.\n2. Each file type implies maximum *length restrictions* for the requests of that file type. The checked lengths are per the URL, Query String, total request length, and payload (POST data).\n3. Each file type determines whether to detect *response signatures* for requests of that file type. Typically, one would never check signatures for image file types.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "allowed": { - "description": "Determines whether the file type is allowed or disallowed. In either of these cases the VIOL_FILETYPE violation is issued (if enabled) for an incoming request-\n1. No allowed file type matched the file type of the request.\n2. The file type of the request matched a disallowed file type.", - "type": "boolean" - }, - "checkPostDataLength": { - "description": "Determines whether to enforce maximum length restriction for the body, a.k.a. \"POST data\" part of the requests that match the respective file type. The maximum length is determined by *postDataLength* attribute.\nAlthough named \"POST data\", this applies to any content type and not restricted to POST requests, e.g. PUT requests are also checked.\nThis attribute is relevant only to *allowed* file types.", - "type": "boolean" - }, - "checkQueryStringLength": { - "description": "Determines whether to enforce maximum length restriction for the query string of the requests that match the respective file type. The maximum length is determined by *queryStringLength* attribute.\nThis attribute is relevant only to *allowed* file types.", - "type": "boolean" - }, - "checkRequestLength": { - "description": "Determines whether to enforce maximum length restriction for the total length of requests that match the respective file type. The maximum length is determined by *requestLength* attribute.\nThis attribute is relevant only to *allowed* file types.", - "type": "boolean" - }, - "checkUrlLength": { - "description": "Determines whether to enforce maximum length restriction for the URL of the requests that match the respective file type. The URL does *not* include the query string, past the &. The maximum length is determined by *urlLength* attribute.\nThis attribute is relevant only to *allowed* file types.", - "type": "boolean" - }, - "name": { - "description": "Specifies the file type name as appearing in the URL extension. Names can be one of the following according to the *type* attribute:\n\n- **Explicit** - Specifies that the name is the literal file extension to which the file type refers. The *type* attribute has to be \"explicit\".\n- **No Extension** - Specifies the empty file type, lacking file extension. For this the reserved string **no_ext** should be used. The *type* attribute has to be \"explicit\".\n- **Wildcard** - Specifies that any file extension that matches the wildcard expression is matched to this file type in the policy. The *type* attribute has to be \"wildcard\".\n\nThe syntax for wildcard entities is based on shell-style wildcard characters. The list below describes the wildcard characters that you can use so that the entity name can match multiple objects.\n\n- **\\***: Matches all characters\n- **?**: Matches any single character\n- **[abcde]**: Matches exactly one of the characters listed\n- **[!abcde]**: Matches any character not listed\n- **[a-e]**: Matches exactly one character in the range\n- **[!a-e]**: Matches any character not in the range\n\n**Note**: Wildcards do not match regular expressions. Do not use a regular expression as a wildcard.", - "type": "string" - }, - "performStaging": { - "description": "If *true* then any violation associated to the respective file type will not be enforced, and the request will not be considered illegal.", - "type": "boolean" - }, - "postDataLength": { - "description": "The maximum length in bytes of the body (POST data) of the request matching the file type. Enforced only if checkPostDataLength is set to *true*.\nIf the value is exceeded then VIOL_POST_DATA_LENGTH violation is issued.\nThis attribute is relevant only to *allowed* file types.", - "minimum": 0, - "type": "integer" - }, - "queryStringLength": { - "description": "The maximum length in bytes of the query string of the request matching the file type. Enforced only if checkQueryStringLength is set to *true*.\nIf the value is exceeded then VIOL_QUERY_STRING_LENGTH violation is issued.\nThis attribute is relevant only to *allowed* file types.", - "minimum": 0, - "type": "integer" - }, - "requestLength": { - "description": "The maximum total length in bytes of the request matching the file type. Enforced only if checkRequestLength is set to *true*.\nIf the value is exceeded then VIOL_REQUEST_LENGTH violation is issued.\nThis attribute is relevant only to *allowed* file types.", - "minimum": 0, - "type": "integer" - }, - "responseCheck": { - "description": "Determines whether the responses to requests that match the respective file types are inspected for attack signature detection.\nThis attribute is relevant only to *allowed* file types.", - "type": "boolean" - }, - "type": { - "description": "Determines the type of the **name** attribute. Only when setting the type to wildcard will the special wildcard characters in the name be interpreted as such.", - "enum": [ - "explicit", - "wildcard" - ], - "type": "string" - }, - "urlLength": { - "description": "The maximum length in bytes of the URL of the request matching the file type, excluding the query string. Enforced only if checkUrlLength is set to *true*.\nIf the value is exceeded then VIOL_URL_LENGTH violation is issued.\nThis attribute is relevant only to *allowed* file types.", - "minimum": 0, - "type": "integer" - }, - "wildcardOrder": { - "type": "integer" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "fullPath": { - "description": "The full name of the policy including partition.", - "type": "string" - }, - "general": { - "oneOf": [ - { - "description": "This section includes several advanced policy configuration settings.", - "properties": { - "allowedResponseCodes": { - "description": "You can specify which responses a security policy permits.\nBy default, the system accepts all response codes from 100 to 399 as valid responses.\nResponse codes from 400 to 599 are considered invalid unless added to the Allowed Response Status Codes list.\nBy default, 400, 401, 404, 407, 417, and 503 are on the list as allowed HTTP response status codes.", - "items": { - "type": "integer" - }, - "type": "array" - }, - "customXffHeaders": { - "description": "If you require the system to trust a server further than one hop toward the client (the last proxy traversed), you can use the Custom XFF Headers setting to define a specific header that is inserted closer to, or at the client, that the system will trust.\nAdditionally, if you require the system to trust a proxy server that uses a different header name than the X-Forwarded-For header name, you can add the desired header name to the Custom XFF Headers setting.\nWhen adding a custom header, the X-Forwarded-For header is not trusted anymore. In case the X-Forwarded-For header is to be trusted along with other headers, you must add it to the custom headers list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "dynamicSessionIdDescription": { - "description": "A description of user-defined regular expression that the security policy uses to recognize dynamic sessions in URLs.", - "type": "string" - }, - "dynamicSessionIdInUrl": { - "description": "A user-defined regular expression that the security policy uses to recognize dynamic sessions in URLs.", - "type": "string" - }, - "enableEventCorrelation": { - "description": "This feature designed to provide an aggregated view of security events in the Configuration utility.\nWhen two or more illegal requests are sent to the web application within a short period of time, the system correlates them as a security event.\nFor example, the system aggregates requests into a single event if a single user causes multiple violations over time.\nWhen enabled, Event Correlation Reporting logs are collected.", - "type": "boolean" - }, - "enforcementReadinessPeriod": { - "description": "For each security policy, you can configure the number of days used as the enforcement readiness period, also called staging.\nSecurity policy entities and attack signatures remain in staging for this period of time before the system suggests that you enforce them.\nStaging allows you to test security policy entities and attack signatures for false positives without enforcing them.\nThe default value of 7 days works for most situations so you typically do not need to change it.", - "maximum": 999, - "minimum": 0, - "type": "integer" - }, - "maskCreditCardNumbersInRequest": { - "description": "When enabled, the security policy masks credit card numbers that appear in any part of requests. The system does not mask the information in the actual requests, but rather in various logs:\n* Credit card numbers appearing in entity names are masked in the requests of the Requests log.\n* Credit card numbers appearing in entity values are masked wherever requests can be viewed: the Requests log, violation details within that log, manual learning, and reports.\nThis setting is enabled by default, and exists in addition to masking parameters defined as containing sensitive information.", - "type": "boolean" - }, - "pathParameterHandling": { - "description": "A URI path parameter is the part of a path segment that occurs after its name. You can configure how a security policy handles path parameters that are attached to path segments in URIs.\nYou can enforce different levels of security based on your needs:\n\n- **as-parameter**: The system normalizes and enforces path parameters. For each path parameter, the system removes it from URLs as part of the normalization process, finds a corresponding parameter in the security policy (first at the matching URL level, and if not found, then at the Global level), and enforces it according to its attributes like any other parameters.\n- **as-url**: The system does not normalize nor enforce path parameters. Path parameters are considered an integral part of the URL.\n- **ignore**: The system removes path parameters from URLs as part of the normalization process, but does not enforce them.", - "enum": [ - "as-parameters", - "as-url", - "ignore" - ], - "type": "string" - }, - "triggerAsmIruleEvent": { - "description": "When enabled, the system activates ASM iRule events. When disabled, the system does not activate ASM iRule events. Enable this option if you have written iRules that process ASM iRule events, and assigned them to a specific virtual server. The default setting is disabled.\n\n- **disabled**: Leave this option disabled if you either have not written any ASM iRules.\n- **enabled-normal**: The system invokes the event ASM_REQUEST_DONE after the system completes processing each request, regardless of whether the request triggered violations. This gives you the opportunity, using iRules, to configure the system to perform actions after ASM handles requests whether they trigger, or do not trigger, violations.\n- **enabled-compatibility**: The system invokes the event ASM_REQUEST_VIOLATION after the system completes processing each request that triggered a violation. This gives you the opportunity, using iRules, to configure the system to perform actions after ASM handles requests only that trigger violations.", - "enum": [ - "disabled", - "enabled-compatibility", - "enabled-normal" - ], - "type": "string" - }, - "trustXff": { - "description": "When enabled, the system has confidence in an XFF (X-Forwarded-For) header in the request. When disabled, that the system does not have confidence in an XFF header in the request. The default setting is disabled.\n\nSelect this option if the system is deployed behind an internal or other trusted proxy. Then, the system uses the IP address that initiated the connection to the proxy instead of the internal proxy's IP address.\n\nLeave this option disabled if you think the HTTP header may be spoofed, or crafted, by a malicious client. With this setting disabled, if the system is deployed behind an internal proxy, the system uses the internal proxy's IP address instead of the client's IP address.", - "type": "boolean" - }, - "useDynamicSessionIdInUrl": { - "description": "How the security policy processes URLs that use dynamic sessions. When disabled the security policy does not enforce dynamic sessions in URLs.\nWhen enabled the system will use a default or user-defined pattern for recognizing dynamic sessions in URLs.", - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "graphql-profiles": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "attackSignaturesCheck": { - "type": "boolean" - }, - "defenseAttributes": { - "properties": { - "allowIntrospectionQueries": { - "type": "boolean" - }, - "maximumBatchedQueries": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumQueryCost": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumStructureDepth": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumTotalLength": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumValueLength": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "tolerateParsingWarnings": { - "type": "boolean" - } - }, - "type": "object" - }, - "description": { - "type": "string" - }, - "hasIdlFiles": { - "type": "boolean" - }, - "idlFiles": { - "items": { - "properties": { - "idlFile": null, - "isPrimary": { - "type": "boolean" - } - }, - "required": [ - "idlFile" - ], - "type": "object" - }, - "type": "array" - }, - "metacharElementCheck": { - "type": "boolean" - }, - "metacharOverrides": { - "items": { - "properties": { - "isAllowed": { - "type": "boolean" - }, - "metachar": { - "type": "string" - } - }, - "required": [ - "metachar" - ], - "type": "object" - }, - "type": "array" - }, - "name": { - "type": "string" - }, - "responseEnforcement": { - "properties": { - "blockDisallowedPatterns": { - "type": "boolean" - }, - "disallowedPatterns": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "sensitiveData": { - "items": { - "properties": { - "parameterName": { - "type": "string" - } - }, - "required": [ - "parameterName" - ], - "type": "object" - }, - "type": "array" - }, - "signatureOverrides": { - "items": { - "properties": { - "enabled": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "signatureId": { - "type": "integer" - }, - "tag": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "grpc-profiles": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "associateUrls": { - "type": "boolean" - }, - "attackSignaturesCheck": { - "type": "boolean" - }, - "decodeStringValuesAsBase64": { - "enum": [ - "disabled", - "enabled" - ], - "type": "string" - }, - "defenseAttributes": { - "properties": { - "allowUnknownFields": { - "type": "boolean" - }, - "maximumDataLength": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - } - }, - "type": "object" - }, - "description": { - "type": "string" - }, - "hasIdlFiles": { - "type": "boolean" - }, - "idlFiles": { - "items": { - "properties": { - "idlFile": null, - "importUrl": { - "type": "string" - }, - "isPrimary": { - "type": "boolean" - }, - "primaryIdlFileName": { - "type": "string" - } - }, - "required": [ - "idlFile" - ], - "type": "object" - }, - "type": "array" - }, - "metacharElementCheck": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "signatureOverrides": { - "items": { - "properties": { - "enabled": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "signatureId": { - "type": "integer" - }, - "tag": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "gwt-profiles": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "attackSignaturesCheck": { - "type": "boolean" - }, - "defenseAttributes": { - "properties": { - "maximumTotalLengthOfGWTData": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumValueLength": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "tolerateGWTParsingWarnings": { - "type": "boolean" - } - }, - "type": "object" - }, - "description": { - "type": "string" - }, - "metacharElementCheck": { - "type": "boolean" - }, - "metacharOverrides": { - "items": { - "properties": { - "isAllowed": { - "type": "boolean" - }, - "metachar": { - "type": "string" - } - }, - "required": [ - "metachar" - ], - "type": "object" - }, - "type": "array" - }, - "name": { - "type": "string" - }, - "signatureOverrides": { - "items": { - "properties": { - "enabled": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "signatureId": { - "type": "integer" - }, - "tag": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "header-settings": { - "oneOf": [ - { - "description": "The maximum length of an HTTP header name and value that the system processes. The system calculates and enforces the HTTP header length based on the sum of the length of the HTTP header name and value.", - "properties": { - "maximumHttpHeaderLength": { - "description": "Maximum HTTP Header Length must be greater than 0 and less than 65536 bytes (64K). Note: if 0 or *any* are set, then no restriction on the HTTP header length is applied.", - "oneOf": [ - { - "maximum": 65536, - "minimum": 1, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - } - }, - "type": "object" - }, - null - ] - }, - "headers": { - "oneOf": [ - { - "items": { - "description": "This section defines Header entities for your policy.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "allowRepeatedOccurrences": { - "type": "boolean" - }, - "base64Decoding": { - "type": "boolean" - }, - "checkSignatures": { - "type": "boolean" - }, - "htmlNormalization": { - "type": "boolean" - }, - "mandatory": { - "type": "boolean" - }, - "maskValueInLogs": { - "type": "boolean" - }, - "name": { - "description": "Specifies the HTTP header name.\nThe header name length is limited to 254 characters.\n\nNames can be one of the following according to the *type* attribute:\n\n- **explicit**: Specifies that the header has a specific name and is not a wildcard entity. The name of the header exactly as you expect it to appear in the request.\n- **wildcard**: Specifies that any header that matches the listed wildcard expression should be treated according to the wildcard attributes.\n\nThe syntax for wildcard entities is based on shell-style wildcard characters.\nThe list below describes the wildcard characters that you can use so that the entity name can match multiple objects.\n\n- **\\***: Matches all characters\n- **?**: Matches any single character\n- **[abcde]**: Matches exactly one of the characters listed\n- **[!abcde]**: Matches any character not listed\n- **[a-e]**: Matches exactly one character in the range\n- **[!a-e]**: Matches any character not in the range\n\n**Note**: Wildcards do not match regular expressions. Do not use a regular expression as a wildcard.", - "type": "string" - }, - "normalizationViolations": { - "type": "boolean" - }, - "percentDecoding": { - "type": "boolean" - }, - "signatureOverrides": { - "description": "Array of signature overrides.\nSpecifies attack signatures whose security policy settings are overridden for this header,\nand which action the security policy takes when it discovers a request for this header that matches these attack signatures.", - "items": { - "properties": { - "enabled": { - "description": "Specifies, when true, that the overridden signature is enforced", - "type": "boolean" - }, - "name": { - "description": "The signature name which, along with the signature tag, identifies the signature.", - "type": "string" - }, - "signatureId": { - "description": "The signature ID which identifies the signature.", - "type": "integer" - }, - "tag": { - "description": "The signature tag which, along with the signature name, identifies the signature.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "type": { - "description": "Determines the type of the **name** attribute.\nOnly when setting the type to wildcard will the special wildcard characters in the name be interpreted as such.", - "enum": [ - "explicit", - "wildcard" - ], - "type": "string" - }, - "urlNormalization": { - "type": "boolean" - }, - "wildcardOrder": { - "description": "Specifies the order index for wildcard header matching.\nWildcard headers with lower wildcard order will get checked for a match prior to headers with higher wildcard order.", - "type": "integer" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "host-names": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "includeSubdomains": { - "type": "boolean" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "idl-files": { - "oneOf": [ - { - "items": { - "oneOf": [ - { - "required": [ - "id" - ] - }, - { - "required": [ - "id", - "$ref" - ] - }, - { - "required": [ - "id", - "link" - ] - } - ], - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "$ref": { - "format": "uri", - "type": "string" - }, - "contents": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "isBase64": { - "type": "boolean" - }, - "link": { - "format": "uri", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "ip-intelligence": { - "oneOf": [ - { - "properties": { - "enabled": { - "type": "boolean" - }, - "ipIntelligenceCategories": { - "items": { - "properties": { - "alarm": { - "type": "boolean" - }, - "block": { - "type": "boolean" - }, - "category": { - "enum": [ - "Anonymous Proxy", - "BotNets", - "Cloud-based Services", - "Denial of Service", - "Infected Sources", - "Mobile Threats", - "Phishing Proxies", - "Scanners", - "Spam Sources", - "Tor Proxies", - "Web Attacks", - "Windows Exploits" - ], - "type": "string" - }, - "description": { - "enum": [ - "The Anonymous Proxy category includes IP addresses that provide proxy and anonymizing services.", - "The Botnets category includes Botnet C&C channels and an infected zombie machine controlled by a Bot master.", - "The Cloud-based Services category includes IP addresses and networks that are used by cloud providers.", - "The Denial of Services category includes DOS, DDOS, anomalous syn flood, and anomalous traffic detection.", - "The Infected Sources category includes IP addresses currently known to be infected with malware, and IP addresses with an average low Reputation Index score. Enabling this category prevents access from sources identified to contact malware distribution points.", - "The Mobile Threats category includes IP addresses of malicious and unwanted mobile applications.", - "The Phishing Proxies category includes IP addresses hosting phishing sites, and other kind of fraud activities such as Ad Click Fraud and Gaming fraud.", - "The Scanners category includes all reconnaissance, such as probes, host scan, domain scan, and password brute force.", - "The Spam Sources category includes Tunneling Spam messages through proxy, anomalous SMTP activities, and Forum Spam activities.", - "The Tor Proxies category includes IP addresses acting as exit nodes for the Tor Network. Exit nodes are the last point along the proxy chain and make a direct connection to the originator’s intended destination.", - "The Web Attacks category includes cross site scripting, iFrame injection, SQL injection, cross domain injection, and domain password brute force.", - "The Windows Exploits category includes active IP address offering or distributing malware, shell code, rootkits, worms, and viruses." - ], - "type": "string" - } - }, - "required": [ - "category" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - null - ] - }, - "json-profiles": { - "oneOf": [ - { - "items": null, - "type": "array" - }, - null - ] - }, - "json-validation-files": { - "oneOf": [ - { - "items": null, - "type": "array" - }, - null - ] - }, - "login-enforcement": { - "oneOf": [ - { - "properties": { - "authenticatedUrls": { - "items": { - "type": "string" - }, - "type": "array" - }, - "expirationTimePeriod": { - "oneOf": [ - { - "maximum": 99999, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "disabled" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "logoutUrls": { - "items": { - "properties": { - "requestContains": { - "type": "string" - }, - "requestOmits": { - "type": "string" - }, - "url": null - }, - "required": [ - "url" - ], - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - null - ] - }, - "login-pages": { - "oneOf": [ - { - "items": null, - "type": "array" - }, - null - ] - }, - "methods": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "actAsMethod": { - "enum": [ - "GET", - "POST" - ], - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "microservices": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "description": { - "type": "string" - }, - "enforcementMode": { - "enum": [ - "blocking", - "policy-default", - "transparent" - ], - "type": "string" - }, - "evasionOverrides": { - "items": { - "properties": { - "description": { - "enum": [ - "%u decoding", - "Apache whitespace", - "Bad unescape", - "Bare byte decoding", - "Directory traversals", - "IIS Unicode codepoints", - "IIS backslashes", - "Multiple decoding", - "Multiple slashes", - "Semicolon path parameters", - "Trailing dot", - "Trailing slash" - ], - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "learn": { - "type": "boolean" - }, - "maxDecodingPasses": { - "maximum": 5, - "minimum": 2, - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "hostName": { - "type": "string" - }, - "hostNameType": { - "enum": [ - "explicit", - "wildcard" - ], - "type": "string" - }, - "httpProtocolOverrides": { - "items": { - "properties": { - "description": { - "enum": [ - "Bad HTTP version", - "Bad host header value", - "Bad multipart parameters parsing", - "Bad multipart/form-data request parsing", - "Body in GET or HEAD requests", - "CRLF characters before request start", - "Check maximum number of cookies", - "Check maximum number of headers", - "Check maximum number of parameters", - "Chunked request with Content-Length header", - "Content length should be a positive number", - "Header name with no header value", - "High ASCII characters in headers", - "Host header contains IP address", - "Multiple host headers", - "No Host header in HTTP/1.1 request", - "Null in request", - "POST request with Content-Length: 0", - "Several Content-Length headers", - "Unescaped space in URL", - "Unparsable request content" - ], - "type": "string" - }, - "enabled": { - "type": "boolean" - }, - "learn": { - "type": "boolean" - }, - "maxCookies": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "maxHeaders": { - "maximum": 150, - "minimum": 1, - "type": "integer" - }, - "maxParams": { - "maximum": 5000, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "type": "array" - }, - "urlName": { - "type": "string" - }, - "urlType": { - "enum": [ - "explicit", - "wildcard" - ], - "type": "string" - }, - "violationOverrides": { - "items": { - "properties": { - "alarm": { - "type": "boolean" - }, - "block": { - "type": "boolean" - }, - "learn": { - "type": "boolean" - }, - "name": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "wildcardOrder": { - "type": "integer" - }, - "wildcardUrlIncludesSlash": { - "type": "boolean" - } - }, - "required": [ - "urlName", - "hostName" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "name": { - "description": "The unique user-given name of the policy. Policy names cannot contain spaces or special characters. Allowed characters are a-z, A-Z, 0-9, dot, dash (-), colon (:) and underscore (_).", - "type": "string" - }, - "navigation-parameters": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "name": { - "type": "string" - }, - "urlName": { - "type": "string" - } - }, - "required": [ - "urlName", - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "open-api-files": { - "items": { - "oneOf": [ - { - "properties": { - "link": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "link" - ], - "type": "object" - }, - { - "properties": { - "filename": { - "type": "string" - } - }, - "required": [ - "filename" - ], - "type": "object" - }, - null - ] - }, - "type": "array" - }, - "parameters": { - "oneOf": [ - { - "items": null, - "type": "array" - }, - null - ] - }, - "performStaging": { - "description": "Determines staging handling for all applicable entities in the policy, such as signatures, URLs, parameters, and cookies. If disabled, all entities will be enforced and any violations triggered will be considered illegal.", - "type": "boolean" - }, - "plain-text-profiles": { - "oneOf": [ - { - "items": null, - "type": "array" - }, - null - ] - }, - "policy-builder": { - "oneOf": [ - { - "properties": { - "autoApply": { - "properties": { - "applyAtAllTimes": { - "type": "boolean" - }, - "applyOnAllDays": { - "type": "boolean" - }, - "applyOnFridays": { - "type": "boolean" - }, - "applyOnMondays": { - "type": "boolean" - }, - "applyOnSaturdays": { - "type": "boolean" - }, - "applyOnSundays": { - "type": "boolean" - }, - "applyOnThursdays": { - "type": "boolean" - }, - "applyOnTuesdays": { - "type": "boolean" - }, - "applyOnWednesdays": { - "type": "boolean" - }, - "endTime": { - "type": "string" - }, - "frequency": { - "enum": [ - "never", - "real-time", - "scheduled" - ], - "type": "string" - }, - "startTime": { - "type": "string" - } - }, - "type": "object" - }, - "enableFullPolicyInspection": { - "type": "boolean" - }, - "enableTrustedTrafficSiteChangeTracking": { - "type": "boolean" - }, - "enableUntrustedTrafficSiteChangeTracking": { - "type": "boolean" - }, - "fullyAutomatic": { - "type": "boolean" - }, - "inactiveEntityInactivityDurationInDays": { - "maximum": 999, - "minimum": 0.0001, - "type": "number" - }, - "learnFromResponses": { - "type": "boolean" - }, - "learnInactiveEntities": { - "type": "boolean" - }, - "learnOnlyFromNonBotTraffic": { - "type": "boolean" - }, - "learningMode": { - "enum": [ - "automatic", - "disabled", - "manual" - ], - "type": "string" - }, - "responseStatusCodes": { - "items": { - "type": "string" - }, - "type": "array" - }, - "trafficTighten": { - "properties": { - "maxModificationSuggestionScore": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "minDaysBetweenSamples": { - "maximum": 999, - "minimum": 0, - "type": "number" - }, - "totalRequests": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "trustAllIps": { - "type": "boolean" - }, - "trustedTrafficLoosen": { - "properties": { - "differentSources": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - }, - "maxDaysBetweenSamples": { - "maximum": 999, - "minimum": 0.0001, - "type": "number" - }, - "minHoursBetweenSamples": { - "maximum": 9999, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "trustedTrafficSiteChangeTracking": { - "properties": { - "differentSources": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - }, - "maxDaysBetweenSamples": { - "maximum": 999, - "minimum": 0.0001, - "type": "number" - }, - "minMinutesBetweenSamples": { - "maximum": 99999, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "untrustedTrafficLoosen": { - "properties": { - "differentSources": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - }, - "maxDaysBetweenSamples": { - "maximum": 999, - "minimum": 0.0001, - "type": "number" - }, - "minHoursBetweenSamples": { - "maximum": 9999, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - }, - "untrustedTrafficSiteChangeTracking": { - "properties": { - "differentSources": { - "maximum": 2147483647, - "minimum": 1, - "type": "integer" - }, - "maxDaysBetweenSamples": { - "maximum": 999, - "minimum": 0.0001, - "type": "number" - }, - "minMinutesBetweenSamples": { - "maximum": 99999, - "minimum": 0, - "type": "number" - } - }, - "type": "object" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-central-configuration": { - "oneOf": [ - { - "description": "Defines Policy Builder learning location and related configuration.", - "properties": { - "buildingMode": { - "description": "Specifies learning location.\n\n- **central**: Security policy learning is done centrally and managed via a BIG-IQ system. Centralized learning can be enabled from BIG-IQ only and, when enabled, all interim local policy learning will be lost. When learning is centralized, you cannot make local changes on your BIG-IP that will affect the security policy learning.\n- **local**: Security policy learning is done locally and managed on BIG-IP", - "enum": [ - "central", - "local" - ], - "type": "string" - }, - "centralPbAddresses": { - "description": "Specifies list of BIG-IQ machines that local Policy Builder is sending data to.", - "items": { - "properties": { - "hostName": { - "description": "Host name of BIG-IQ machine.", - "type": "string" - }, - "ipAddress": { - "description": "IP address of BIG-IQ machine.", - "type": "string" - }, - "order": { - "description": "Order or BIG-IQ machine in the list.", - "type": "integer" - }, - "port": { - "description": "Port that BIG-IQ machine is listening to.", - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "verifyCertificate": { - "description": "If enabled - certificate should be verified when connecting to BIG-IQ machine", - "type": "boolean" - } - }, - "required": [ - "port", - "ipAddress" - ], - "type": "object" - }, - "type": "array" - }, - "eventCorrelationMode": { - "description": "Specifies event correlation location.\n\n- **central**: Event correlation is done centrally and stored in a BIG-IQ system.\n- **local**: Event correlation is done locally and stored on BIG-IP.", - "enum": [ - "central", - "local" - ], - "type": "string" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-cookie": { - "oneOf": [ - { - "properties": { - "collapseCookieOccurrences": { - "minimum": 2, - "type": "integer" - }, - "collapseCookiesIntoOneEntity": { - "type": "boolean" - }, - "enforceUnmodifiedCookies": { - "type": "boolean" - }, - "learnExplicitCookies": { - "enum": [ - "never", - "selective" - ], - "type": "string" - }, - "maximumCookies": { - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-filetype": { - "oneOf": [ - { - "description": "Defines Policy Builder behavior for filetypes", - "properties": { - "learnExplicitFiletypes": { - "description": "Specifies under which circumstances the Policy Builder adds, or suggests you add, explicit file types to the security policy:\n\n- **compact**: Specifies that the system will create a list of the most commonly used file types (while enforcing all other file types with a wildcard rule), together with a pre-populated list of known disallowed file types. This option serves as a good balance between **selective** and **always**\n- **selective**: Specifies that when false positives occur (applicable only for the * wildcard), the system will add/suggest to add an explicit file type with relaxed settings that avoid the false positive. This option serves as a good balance between security, policy size, and ease of maintenance\n- **always**: Specifies you would like to create a comprehensive whitelist policy that includes ALL of the website file types. This option will form a large set of security policy entities, which will produce a granular object-level configuration and high security level, it may take more time to maintain such a policy\n- **never**: Specifies that when false positives occur the system will suggest to relax the settings of the wildcard file type", - "enum": [ - "always", - "compact", - "never", - "selective" - ], - "type": "string" - }, - "maximumFileTypes": { - "description": "Specifies approximately the largest number of file types that Policy Builder will learn", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-header": { - "oneOf": [ - { - "properties": { - "maximumHosts": { - "minimum": 1, - "type": "integer" - }, - "validHostNames": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-parameter": { - "oneOf": [ - { - "description": "Defines Policy Builder behavior for parameters", - "properties": { - "classifyParameters": { - "description": "When enabled, if the Policy Builder detects legitimate XML or JSON data to parameters configured in the security policy, the Policy Builder adds XML or JSON profiles to the security policy and configures their attributes according to the data it detects", - "type": "boolean" - }, - "collapseParameterOccurrences": { - "description": "Defines how many common explicit parameters the Policy Builder must detect (the number of occurrences) before collapsing them to one wildcard parameter.\nThe minimum number of occurrences allowed is 2.", - "minimum": 2, - "type": "integer" - }, - "collapseParametersIntoOneEntity": { - "description": "When enabled, the system collapses many common parameters into one wildcard parameter.", - "type": "boolean" - }, - "dynamicParameters": { - "description": "Defines the conditions under which the Policy Builder adds dynamic parameters to the security policy\nTo enabled this functionality there are several prerequisites:\n - learnExplicitParameters is **always** or **selective**\n - learnExplicitUrls in policy-builder-url and/or learnExplicitFiletypes in policy-builder-filetype is **always** or **selective**\n - learnFromResponses is enabled in policy-builder\n - at least one of the allHiddenFields/formParameters/linkParameters is enabled", - "properties": { - "allHiddenFields": { - "description": "When enabled, the Policy Builder adds to the security policy all HIDDEN form input parameters, seen in responses, as dynamic content value parameters", - "type": "boolean" - }, - "formParameters": { - "description": "When enabled, the Policy Builder adds parameters, found in forms, to the security policy as dynamic content value if a number of unique value sets are seen in responses for that parameter.\nUse uniqueValueSets to specify how many different value sets must be seen for that parameter in order for the Policy Builder to consider it dynamic content value.\nA value set is an aggregation of server-supplied value(s) of the parameter as seen in the web form, for example, all the values of a radio button or select boxes taken together are a value set.", - "type": "boolean" - }, - "linkParameters": { - "description": "When enabled, the Policy Builder adds parameters, found in links, to the security policy as dynamic content value if a number of unique values are seen in responses for that parameter.\nUse the uniqueValueSets to specify how many different values must be seen for that parameter in order for the Policy Builder to consider it dynamic content value.", - "type": "boolean" - }, - "uniqueValueSets": { - "description": "Specifies how many different values must be seen for that parameter in order for the Policy Builder to consider it dynamic content value", - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - "learnExplicitParameters": { - "description": "Specifies under which circumstances the Policy Builder adds, or suggests you add, explicit parameters to the security policy:\n\n- **compact**: Specifies that the system will create a list of the most commonly used parameters, while enforcing all other parameters with a wildcard rule. This option serves as a good balance between **selective** and **always**\n- **selective**: Specifies that when false positives occur (applicable only for the * wildcard), the system will add/suggest to add an explicit parameter with relaxed settings that avoid the false positive. This option serves as a good balance between security, policy size, and ease of maintenance\n- **always**: Specifies you would like to create a comprehensive whitelist policy that includes ALL of the website parameters. This option will form a large set of security policy entities, which will produce a granular object-level configuration and high security level, it may take more time to maintain such a policy\n- **never**: Specifies that when false positives occur the system will suggest to relax the settings of the wildcard parameter", - "enum": [ - "always", - "compact", - "never", - "selective" - ], - "type": "string" - }, - "maximumParameters": { - "description": "Specifies approximately the largest number of parameters that Policy Builder will learn", - "minimum": 1, - "type": "integer" - }, - "parameterLearningLevel": { - "description": "Defines how the Policy Builder determines on which level to add, or suggest you add, parameters to the security policy\n\n- **global**: The system creates learning suggestions based on the properties of entities that already exist in the security policy.\n When manually learning a suggestion for a parameter violation, the resolve action suggested by the system is based on the parameter name and level of the parameter in the security policy that caused this violation.\n When automatically building the security policy, the Policy Builder adds parameters on the Global level.\n- **url**: The system creates learning suggestions based on real traffic, and is not limited to the current properties of entities that exist in the security policy.\n When manually learning a suggestion for a parameter violation, the resolve action suggested by the system is based on the actual parameter name and the URL or flow on which the violation was detected.\n When automatically building the security policy, the Policy Builder adds parameters on the URL level.\n In addition, if the actual URL does not exist in the security policy, the system adds the URL and file type (if it also does not exist) on which the violation was detected.", - "enum": [ - "global", - "url" - ], - "type": "string" - }, - "parametersIntegerValue": { - "description": "When enabled, the Policy Builder learns integer parameters (parameters with a Data Type of Integer).", - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-redirection-protection": { - "oneOf": [ - { - "properties": { - "learnExplicitRedirectionDomains": { - "enum": [ - "always", - "never" - ], - "type": "string" - }, - "maximumRedirectionDomains": { - "minimum": 1, - "type": "integer" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-server-technologies": { - "oneOf": [ - { - "description": "Defines Policy Builder behavior for Server Technologies", - "properties": { - "enableServerTechnologiesDetection": { - "description": "When enabled, the Policy Builder suggests to add Server Technologies that have not yet been added to the policy.\nThe system learns server technologies from responses regardless of the learnFromResponses flag setting in the policy-builder endpoint.", - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-sessions-and-logins": { - "oneOf": [ - { - "properties": { - "learnLoginPage": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "policy-builder-url": { - "oneOf": [ - { - "properties": { - "classifyUrls": { - "type": "boolean" - }, - "classifyWebsocketUrls": { - "type": "boolean" - }, - "collapseUrlDepth": { - "minimum": 1, - "type": "integer" - }, - "collapseUrlOccurrences": { - "minimum": 1, - "type": "integer" - }, - "collapseUrlsIntoOneEntity": { - "type": "boolean" - }, - "learnExplicitUrls": { - "enum": [ - "always", - "compact", - "never", - "selective" - ], - "type": "string" - }, - "learnExplicitWebsocketUrls": { - "enum": [ - "always", - "never", - "selective" - ], - "type": "string" - }, - "learnMethodsOnUrls": { - "type": "boolean" - }, - "maximumUrls": { - "minimum": 1, - "type": "integer" - }, - "maximumWebsocketUrls": { - "minimum": 1, - "type": "integer" - }, - "wildcardUrlFiletypes": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - null - ] - }, - "protocolIndependent": { - "description": "When creating a security policy, you can determine whether a security policy differentiates between HTTP and HTTPS URLs.\nIf enabled, the security policy differentiates between HTTP and HTTPS URLs.\nIf disabled, the security policy configures URLs without specifying a specific protocol. This is useful for applications that behave the same for HTTP and HTTPS, and it keeps the security policy from including the same URL twice.", - "type": "boolean" - }, - "redirection-protection": { - "oneOf": [ - { - "properties": { - "redirectionDomains": { - "items": { - "properties": { - "domainName": { - "type": "string" - }, - "includeSubdomains": { - "type": "boolean" - }, - "type": { - "enum": [ - "explicit", - "wildcard" - ], - "type": "string" - }, - "wildcardOrder": { - "type": "integer" - } - }, - "required": [ - "domainName" - ], - "type": "object" - }, - "type": "array" - }, - "redirectionProtectionEnabled": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "redirection-protection-domains": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "domainName": { - "type": "string" - }, - "includeSubdomains": { - "type": "boolean" - }, - "type": { - "enum": [ - "explicit", - "wildcard" - ], - "type": "string" - }, - "wildcardOrder": { - "type": "integer" - } - }, - "required": [ - "domainName" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "request-loggers": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "destination": { - "type": "string" - }, - "escapingCharacters": { - "items": { - "properties": { - "from": { - "type": "string" - }, - "to": { - "type": "string" - } - }, - "required": [ - "from" - ], - "type": "object" - }, - "type": "array" - }, - "filter": { - "items": { - "properties": { - "field": { - "enum": [ - "request_status" - ], - "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "field" - ], - "type": "object" - }, - "type": "array" - }, - "formatString": { - "type": "string" - }, - "formatType": { - "enum": [ - "arcsight", - "bigiq", - "default", - "grpc", - "splunk" - ], - "type": "string" - }, - "maxEventsPerSecond": { - "type": "integer" - }, - "maxMessageSize": { - "type": "string" - }, - "name": { - "type": "string" - }, - "protocol": { - "enum": [ - "otlp", - "tcp", - "udp" - ], - "type": "string" - }, - "timezone": { - "enum": [ - "local", - "utc" - ], - "type": "string" - }, - "tls": { - "properties": { - "caFile": { - "type": "string" - }, - "certFile": { - "type": "string" - }, - "keyFile": { - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "response-pages": { - "oneOf": [ - { - "items": { - "description": "The Security Policy has a default blocking response page that it returns to the client when the client request, or the web server response, is blocked by the security policy. The system also has a login response page for login violations. You can change the way the system responds to blocked logins or blocked requests. All default response pages contain a variable, <%TS.request.ID()%>, that the system replaces with a support ID number when it issues the page.", - "properties": { - "ajaxActionType": { - "description": "Which content, or URL, the system sends to the client as a response to an AJAX request that does not comply with the security policy.\n- **alert-popup**: The system opens a message as a popup screen. Type the message the system displays in the popup screen, or leave the default text.\n- **custom**: A response text that will replace the frame or page which generated the AJAX request. The system provides additional options where you can type the response body you prefer.\n- **redirect**: The system redirects the user to a specific web page instead of viewing a response page. Type the web page's full URL path, for example, http://www.redirectpage.com. ", - "enum": [ - "alert-popup", - "custom", - "redirect" - ], - "type": "string" - }, - "ajaxCustomContent": { - "description": "Custom message typed by user as a response for blocked AJAX request.", - "type": "string" - }, - "ajaxEnabled": { - "description": "When enabled, the system injects JavaScript code into responses. You must enable this toggle in order to configure an Application Security Manager AJAX response page which is returned when the system detects an AJAX request that does not comply with the security policy.", - "type": "boolean" - }, - "ajaxPopupMessage": { - "description": "Default message provided by the system as a response for blocked AJAX request. Can be manipulated by user, but <%TS.request.ID()%> must be included in this message.", - "type": "string" - }, - "ajaxRedirectUrl": { - "description": "The system redirects the user to a specific web page instead of viewing a response page. Type the web page's full URL path, for example, http://www.redirectpage.com. To redirect the blocking page to a URL with a support ID in the query string, type the URL and the support ID in the following format: http://www.example.com/blocking_page.php?support_id=<%TS.request.ID()%>. The system replaces <%TS.request.ID%> with the relevant support ID so that the blocked request is redirected to the URL with the relevant support ID.", - "type": "string" - }, - "grpcStatusCode": { - "oneOf": [ - { - "type": "integer" - }, - { - "enum": [ - "ABORTED", - "ALREADY_EXISTS", - "CANCELLED", - "DATA_LOSS", - "DEADLINE_EXCEEDED", - "FAILED_PRECONDITION", - "INTERNAL", - "INVALID_ARGUMENT", - "NOT_FOUND", - "OK", - "OUT_OF_RANGE", - "PERMISSION_DENIED", - "RESOURCE_EXHAUSTED", - "UNAUTHENTICATED", - "UNAVAILABLE", - "UNIMPLEMENTED", - "UNKNOWN" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "grpcStatusMessage": { - "type": "string" - }, - "responseActionType": { - "description": "Which action the system takes, and which content the system sends to the client, as a response when the security policy blocks the client request.\n- **custom**: The system returns a response page with HTML code that the user defines.\n- **default**: The system returns the system-supplied response page in HTML. No further configuration is needed.\n- **erase-cookies**: The system deletes all client side domain cookies. This is done in order to block web application users once, and not from the entire web application. The system displays this text in the response page. You cannot edit this text.\n- **redirect**: The system redirects the user to a specific web page instead of viewing a response page. The system provides an additional setting where you can indicate the redirect web page.\n- **soap-fault**: Displays the system-supplied response written in SOAP fault message structure. Use this type when a SOAP request is blocked due to an XML related violation. You cannot edit this text.", - "enum": [ - "custom", - "default", - "erase-cookies", - "redirect", - "soap-fault" - ], - "type": "string" - }, - "responseContent": { - "description": "The content the system sends to the client in response to an illegal blocked request.", - "type": "string" - }, - "responseHeader": { - "description": "The response headers that the system sends to the client as a response to an illegal blocked request.", - "type": "string" - }, - "responsePageType": { - "description": "The different types of blocking response pages which are available from the system:\n- **ajax**: The system sends the AJAX Blocking Response Page when the security policy blocks an AJAX request that does not comply with the security policy.\n- **ajax-login**: The system sends the AJAX Login Page Response after the user sends an AJAX request that attempts to directly access a URL that is allowed to be accessed only after visiting a login page.\n- **captcha**: The system sends the CAPTCHA response page when the system suspects that a session is being run by a bot rather than a human, especially in the case of a brute force attack.\n- **captcha-fail**: The system sends the CAPTCHA fail response page to a failed CAPTCHA challenge.\n- **default**: The system sends the default response when the security policy blocks a client request.\n- **failed-login-honeypot**: The Honeypot page is used for attacker deception. The page should look like an application failed login page. Unlike with the Blocking page, when the Honeypot page is sent an attacker is not able to distinguish a failed login response from a mitigation.\n- **failed-login-honeypot-ajax**: The Honeypot page is used for attacker deception sending AJAX request. The page should look like an application failed login page. Unlike with the Blocking page, when the Honeypot page is sent an attacker is not able to distinguish a failed login response from a mitigation.\n- **hijack**: The system sends the cookie hijacking response page when the system detects that an attacker tried to hijack the session.\n- **leaked-credentials**: The system sends the leaked credentials response when the system detects the use of stolen credentials.\n- **leaked-credentials-ajax**: The system sends the leaked credentials response following an AJAX request which includes usage of stolen credentials.\n- **mobile**: The system sends the mobile application response page when the system detects that a session is being run by a bot rather than a human.\n- **persistent-flow**: The system sends the login page response after the user violates one of the preconditions when requesting the target URL of a configured login page.\n- **xml**: The system sends the XML response page when the security policy blocks a client request that contains XML content that does not comply with the settings of an XML profile configured in the security policy.", - "enum": [ - "ajax", - "ajax-login", - "captcha", - "captcha-fail", - "default", - "failed-login-honeypot", - "failed-login-honeypot-ajax", - "graphql", - "grpc", - "hijack", - "leaked-credentials", - "leaked-credentials-ajax", - "mobile", - "persistent-flow", - "xml" - ], - "type": "string" - }, - "responseRedirectUrl": { - "description": "The particular URL to which the system redirects the user. To redirect the blocking page to a URL with a support ID in the query string, type the URL and the support ID in the following format: http://www.example.com/blocking_page.php?support_id=<%TS.request.ID()%>. The system replaces <%TS.request.ID%> with the relevant support ID so that the blocked request is redirected to the URL with the relevant support ID.", - "type": "string" - } - }, - "required": [ - "responsePageType" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "sensitive-parameters": { - "oneOf": [ - { - "items": { - "description": "This section defines sensitive parameters.\nThe contents of these parameters are not visible in logs nor in the user interfaces.\nInstead of actual values a string of asterisks is shown for these parameters.\nUse these parameters to protect sensitive user input, such as a password or a credit card number, in a validated request.\nA parameter name of \"password\" is always defined as sensitive by default.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "name": { - "description": "Name of a parameter whose values the system should consider sensitive.", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "server-technologies": { - "oneOf": [ - { - "items": { - "description": "The server technology is a server-side application, framework, web server or operating system type that is configured in the policy in order to adapt the policy to the checks needed for the respective technology.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "serverTechnologyName": { - "description": "Specifies the name of the selected policy. For example, PHP will add attack signatures that cover known PHP vulnerabilities.", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "session-tracking": { - "oneOf": [ - { - "properties": { - "blockAll": { - "properties": { - "checkDeviceIdThreshold": { - "type": "boolean" - }, - "checkIpThreshold": { - "type": "boolean" - }, - "checkPeriod": { - "type": "boolean" - }, - "checkSessionThreshold": { - "type": "boolean" - }, - "checkUsernameThreshold": { - "type": "boolean" - }, - "deviceIdThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "ipThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "period": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "sessionThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "urlBlockingMode": { - "enum": [ - "block-all-urls", - "block-authenticated-urls" - ], - "type": "string" - }, - "usernameThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "delayBlocking": { - "properties": { - "checkDeviceIdThreshold": { - "type": "boolean" - }, - "checkIpThreshold": { - "type": "boolean" - }, - "checkSessionThreshold": { - "type": "boolean" - }, - "checkUsernameThreshold": { - "type": "boolean" - }, - "deviceIdThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "ipThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "period": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "sessionThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "usernameThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "violations": { - "items": { - "properties": { - "name": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - } - }, - "type": "object" - }, - "logAllRequests": { - "properties": { - "checkDeviceIdThreshold": { - "type": "boolean" - }, - "checkIpThreshold": { - "type": "boolean" - }, - "checkSessionThreshold": { - "type": "boolean" - }, - "checkUsernameThreshold": { - "type": "boolean" - }, - "deviceIdThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "ipThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "period": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "sessionThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - }, - "usernameThreshold": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - }, - "sessionTrackingConfiguration": { - "properties": { - "detectUsernameFromLoginPages": { - "items": { - "properties": { - "loginPage": null - }, - "required": [ - "loginPage" - ], - "type": "object" - }, - "type": "array" - }, - "enableSessionAwareness": { - "type": "boolean" - }, - "enableTrackingSessionHijackingByDeviceId": { - "type": "boolean" - }, - "userNameSource": { - "enum": [ - "all-login-pages", - "apm", - "login-pages", - "none" - ], - "type": "string" - } - }, - "type": "object" - }, - "violationDetectionActions": { - "properties": { - "trackViolationsAndPerformActions": { - "type": "boolean" - }, - "violationDetectionPeriod": { - "maximum": 999999999, - "minimum": 0, - "type": "integer" - } - }, - "type": "object" - } - }, - "type": "object" - }, - null - ] - }, - "session-tracking-statuses": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "action": { - "enum": [ - "block-all", - "delay-blocking", - "log-all" - ], - "type": "string" - }, - "createdDatetime": { - "type": "string" - }, - "expirationDatetime": { - "enum": [ - "N/A" - ], - "type": "string" - }, - "scope": { - "enum": [ - "device", - "ip", - "session", - "user" - ], - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "value", - "scope", - "action" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "signature-requirements": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "maxRevisionDatetime": { - "type": "string" - }, - "minRevisionDatetime": { - "type": "string" - }, - "tag": { - "type": "string" - } - }, - "required": [ - "tag" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "signature-sets": { - "oneOf": [ - { - "items": { - "description": "Defines behavior when signatures found within a signature-set are detected in a request. Settings are culmulative, so if a signature is found in any set with block enabled, that signature will have block enabled.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "alarm": { - "description": "If enabled - when a signature from this signature set is detected in a request - the request is logged.", - "type": "boolean" - }, - "block": { - "description": "If enabled - when a signature from this signature set is detected in a request (and the signature is not in staging and the policy is in blocking mode) - the request is blocked.", - "type": "boolean" - }, - "learn": { - "description": "If enabled - when a signature from this signature set is detected in a request -the policy builder creates a learning suggestion to disable it.", - "type": "boolean" - }, - "name": { - "description": "Signature set name.", - "type": "string" - }, - "signatureSet": null - }, - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "signature-settings": { - "oneOf": [ - { - "properties": { - "attackSignatureFalsePositiveMode": { - "enum": [ - "detect", - "detect-and-allow", - "disabled" - ], - "type": "string" - }, - "minimumAccuracyForAutoAddedSignatures": { - "enum": [ - "high", - "low", - "medium" - ], - "type": "string" - }, - "placeSignaturesInStaging": { - "type": "boolean" - }, - "signatureStaging": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "signatures": { - "oneOf": [ - { - "items": { - "description": "This section defines the properties of a signature on the policy.", - "properties": { - "alarm": { - "type": "boolean" - }, - "block": { - "type": "boolean" - }, - "enabled": { - "description": "Specifies, if true, that the signature is enabled on the security policy. When false, the signature is disable on the security policy.", - "type": "boolean" - }, - "inPolicy": { - "enum": [ - "0", - "1" - ], - "type": "string" - }, - "isPriorRuleEnforced": { - "type": "boolean" - }, - "learn": { - "type": "boolean" - }, - "name": { - "description": "The signature name which, along with the signature tag, identifies the signature.", - "type": "string" - }, - "performStaging": { - "description": "Specifies, if true, that the signature is in staging.\nThe system does not enforce signatures in staging. Instead, the system records the request information and keeps it for a period of time\n(the Enforcement Readiness Period whose default time period is 7 days).\nSpecifies, when false, that the staging feature is not in use, and that the system enforces the signatures' Learn/Alarm/Block settings immediately.\n(Blocking is performed only if the security policy's enforcement mode is Blocking.)", - "type": "boolean" - }, - "signatureId": { - "description": "The signature ID which identifies the signature.", - "type": "string" - }, - "tag": { - "description": "The signature tag which, along with the signature name, identifies the signature. ", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "softwareVersion": { - "type": "string" - }, - "ssrf-hosts": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "action": { - "enum": [ - "allow", - "disallow", - "resolve" - ], - "type": "string" - }, - "host": { - "type": "string" - }, - "wildcardOrder": { - "type": "integer" - } - }, - "required": [ - "host" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "template": { - "description": "Specifies the template to populate the attributes of a new policy. The template is only used when creating the policy - a security policy is always created based on a user-defined or system-supplied template.\nUnlike parent policies, the templates do not affect the policy after it is created. If you modify a template, policies created from it in the past are not affected.", - "properties": { - "name": { - "description": "Specifies the name of the template used for the policy creation.", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "threat-campaign-settings": { - "oneOf": [ - { - "properties": { - "threatCampaignEnforcementReadinessPeriod": { - "maximum": 999, - "minimum": 0, - "type": "integer" - }, - "threatCampaignStaging": { - "type": "boolean" - } - }, - "type": "object" - }, - null - ] - }, - "threat-campaigns": { - "oneOf": [ - { - "items": { - "description": "This section defines the enforcement state for the threat campaigns in the security policy.", - "properties": { - "displayName": { - "type": "string" - }, - "isEnabled": { - "description": "If enabled - threat campaign is enforced in the security policy.", - "type": "boolean" - }, - "name": { - "description": "Name of the threat campaign.", - "type": "string" - }, - "performStaging": { - "description": "If enabled - there will be only reporting (no blocking) for requests with a detected treat campaign.\nFor this feature to work, threatCampaignStaging should be enabled in threat-campaign-settings.\nAfter staging period (threatCampaignEnforcementReadinessPeriod in threat-campaign-settings), the system will suggest to enforce (disable staging) for the threat campaign.", - "type": "boolean" - } - }, - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "type": { - "description": "The type of policy you want to create. The default policy type is Security.\n- **Parent:** A parent policy can be used as a basis for similar child policies. Parent policy settings can be inherited to its child policies. A parent policy cannot be applied to Virtual Servers. No traffic can flow through them. They are just models.\n- **Security:** A security policy can be created from a parent policy or as a stand-alone policy. Changes to a security policy do not affect other security policies. A security policy can be applied to a virtual server.", - "enum": [ - "parent", - "security" - ], - "type": "string" - }, - "urls": { - "oneOf": [ - { - "items": null, - "type": "array" - }, - null - ] - }, - "webhooks": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "body": { - "type": "string" - }, - "contentType": { - "type": "string" - }, - "name": { - "type": "string" - }, - "triggerEvent": { - "enum": [ - "apply-policy", - "apply-policy-failed", - "http-request-illegal", - "http-request-likely-malicious", - "http-request-needing-examination", - "incident-end", - "incident-start" - ], - "type": "string" - }, - "url": { - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "websocket-urls": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "allowBinaryMessage": { - "type": "boolean" - }, - "allowJsonMessage": { - "type": "boolean" - }, - "allowTextMessage": { - "type": "boolean" - }, - "binaryMessageMaxSize": { - "type": "integer" - }, - "checkBinaryMessageMaxSize": { - "type": "boolean" - }, - "checkMessageFrameMaxCount": { - "type": "boolean" - }, - "checkMessageFrameMaxSize": { - "type": "boolean" - }, - "checkPayload": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "html5CrossOriginRequestsEnforcement": { - "properties": { - "crossDomainAllowedOrigin": { - "items": { - "properties": { - "includeSubDomains": { - "type": "boolean" - }, - "originName": { - "type": "string" - }, - "originPort": { - "oneOf": [ - { - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "all" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "originProtocol": { - "enum": [ - "http", - "http/https", - "https" - ], - "type": "string" - } - }, - "required": [ - "originProtocol", - "originName", - "originPort" - ], - "type": "object" - }, - "type": "array" - }, - "enforcementMode": { - "enum": [ - "disabled", - "enforce", - "remove-all-headers" - ], - "type": "string" - } - }, - "type": "object" - }, - "isAllowed": { - "type": "boolean" - }, - "jsonProfile": null, - "messageFrameMaxCount": { - "type": "integer" - }, - "messageFrameMaxSize": { - "type": "integer" - }, - "metacharOverrides": { - "items": { - "properties": { - "isAllowed": { - "type": "boolean" - }, - "metachar": { - "type": "string" - } - }, - "required": [ - "metachar" - ], - "type": "object" - }, - "type": "array" - }, - "metacharsOnWebsocketUrlCheck": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "performStaging": { - "type": "boolean" - }, - "plainTextProfile": null, - "protocol": { - "enum": [ - "ws", - "wss" - ], - "type": "string" - }, - "type": { - "enum": [ - "explicit", - "wildcard" - ], - "type": "string" - }, - "unsupportedExtensions": { - "enum": [ - "block", - "ignore", - "remove" - ], - "type": "string" - }, - "wildcardIncludesSlash": { - "type": "boolean" - }, - "wildcardOrder": { - "type": "integer" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "whitelist-ips": { - "oneOf": [ - { - "items": { - "description": "An IP address exception is an IP address that you want the system to treat in a specific way for a security policy.\nFor example, you can specify IP addresses from which the system should always trust traffic, IP addresses for which you do not want the system to generate learning suggestions for the traffic, and IP addresses for which you want to exclude information from the logs.\nYou can use the IP address exception feature to create exceptions for IP addresses of internal tools that your company uses, such as penetration tools, manual or automatic scanners, or web scraping tools.\nYou can add an IP address exception and instruct the system how to handle traffic coming from that address.", - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "blockRequests": { - "description": "Specifies how the system responds to blocking requests sent from this IP address.\n- **Policy Default:** Specifies that the Policy Blocking Settings will be used for requests from this IP address.\n- **Never Block:** Specifies that the system does not block requests sent from this IP address, even if your security policy is configured to block all traffic.\n- **Always Block:** Specifies that the system blocks requests sent from this IP address on condition that IP is denylisted is set to Block under Policy Building Settings.", - "enum": [ - "always", - "never", - "policy-default" - ], - "type": "string" - }, - "description": { - "description": "Specifies a brief description of the IP address.", - "type": "string" - }, - "ignoreAnomalies": { - "description": "Specifies when enabled that the system considers this IP address legitimate and does not take it into account when performing brute force prevention.\nSpecifies when disabled that the system does not consider traffic from this IP address as being any safer than traffic from any other IP address. The system performs brute force prevention to traffic from this IP address according to the configuration of the security policy.", - "type": "boolean" - }, - "ignoreIpReputation": { - "description": "Specifies when enabled that the system considers this IP address legitimate even if it is found in the IP Intelligence database (a database of questionable IP addresses).\nSpecifies when disabled that the system does not consider traffic from this IP address as being any safer than traffic from any other IP address. Therefore, if the IP Intelligence feature is enabled, the system checks whether this IP address matches any IP addresses in the IP Intelligence database.", - "type": "boolean" - }, - "ipAddress": { - "description": "Specifies the IP address that you want the system to trust.", - "type": "string" - }, - "ipMask": { - "description": "Specifies the netmask of the exceptional IP address. This is an optional field.", - "type": "string" - }, - "neverLearnRequests": { - "description": "Specifies when enabled that the system should not generate learning suggestions from traffic sent from this IP address.\nSpecifies when disabled that the system should generate learning suggestions from traffic sent from this IP address for violations with the Learn flag enabled on the Policy Building Settings.", - "type": "boolean" - }, - "neverLogRequests": { - "description": "Specifies when enabled that the system does not log requests or responses sent from this IP address, even if the traffic is illegal, and even if your security policy is configured to log all traffic.", - "type": "boolean" - }, - "trustedByPolicyBuilder": { - "description": "Specifies when enabled the Policy Builder considers traffic from this IP address as being safe.\nThe Policy Builder automatically adds to the security policy the data logged from traffic sent from this IP address.\nSpecifies when disabled that the Policy Builder does not consider traffic from this IP address as being any different than traffic from any other IP address.", - "type": "boolean" - } - }, - "required": [ - "ipMask", - "ipAddress" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "xml-profiles": { - "oneOf": [ - { - "items": { - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "attachmentsInSoapMessages": { - "type": "boolean" - }, - "attackSignaturesCheck": { - "type": "boolean" - }, - "defenseAttributes": { - "properties": { - "allowCDATA": { - "type": "boolean" - }, - "allowDTDs": { - "type": "boolean" - }, - "allowExternalReferences": { - "type": "boolean" - }, - "allowProcessingInstructions": { - "type": "boolean" - }, - "maximumAttributeValueLength": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumAttributesPerElement": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumChildrenPerElement": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumDocumentDepth": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumDocumentSize": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumElements": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumNSDeclarations": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumNameLength": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "maximumNamespaceLength": { - "oneOf": [ - { - "maximum": 2147483647, - "minimum": 0, - "type": "integer" - }, - { - "enum": [ - "any" - ], - "type": "string" - }, - { - "pattern": "\\d+$", - "type": "string" - } - ] - }, - "tolerateCloseTagShorthand": { - "type": "boolean" - }, - "tolerateLeadingWhiteSpace": { - "type": "boolean" - }, - "tolerateNumericNames": { - "type": "boolean" - } - }, - "type": "object" - }, - "description": { - "type": "string" - }, - "enableWss": { - "type": "boolean" - }, - "followSchemaLinks": { - "type": "boolean" - }, - "inspectSoapAttachments": { - "type": "boolean" - }, - "metacharAttributeCheck": { - "type": "boolean" - }, - "metacharElementCheck": { - "type": "boolean" - }, - "metacharOverrides": { - "items": { - "properties": { - "isAllowed": { - "type": "boolean" - }, - "metachar": { - "type": "string" - } - }, - "required": [ - "metachar" - ], - "type": "object" - }, - "type": "array" - }, - "name": { - "type": "string" - }, - "sensitiveData": { - "items": { - "properties": { - "namespace": { - "type": "string" - }, - "paramName": { - "type": "string" - }, - "paramType": { - "type": "string" - } - }, - "required": [ - "paramType", - "namespace", - "paramName" - ], - "type": "object" - }, - "type": "array" - }, - "signatureOverrides": { - "items": { - "properties": { - "enabled": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "signatureId": { - "type": "integer" - }, - "tag": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "soapMethods": { - "items": { - "properties": { - "action": { - "type": "string" - }, - "isAllowed": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - } - }, - "required": [ - "namespace", - "name" - ], - "type": "object" - }, - "type": "array" - }, - "useXmlResponsePage": { - "type": "boolean" - }, - "validationFiles": { - "items": { - "properties": { - "importUrl": { - "type": "string" - }, - "isPrimary": { - "type": "boolean" - }, - "xmlValidationFile": null - }, - "required": [ - "xmlValidationFile" - ], - "type": "object" - }, - "type": "array" - }, - "validationSoapActionHeader": { - "type": "boolean" - }, - "wssConfiguration": { - "properties": { - "addTimestamp": { - "type": "boolean" - }, - "applyActionToDefinedRequestElements": { - "type": "boolean" - }, - "applyActionToDefinedResponseElements": { - "type": "boolean" - }, - "applyActionToEntireResponseBodyValue": { - "type": "boolean" - }, - "clientCertificates": { - "items": { - "properties": { - "name": { - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - "decryptAll": { - "type": "boolean" - }, - "elements": { - "items": { - "properties": { - "applyTo": { - "enum": [ - "request", - "response" - ], - "type": "string" - }, - "encryptedPart": { - "enum": [ - "content", - "element" - ], - "type": "string" - }, - "xPathName": { - "type": "string" - } - }, - "required": [ - "xPathName", - "applyTo" - ], - "type": "object" - }, - "type": "array" - }, - "enableRequestRole": { - "type": "boolean" - }, - "enableResponseRole": { - "type": "boolean" - }, - "encryptionAlgorithm": { - "enum": [ - "aes128", - "aes256", - "tripledes" - ], - "type": "string" - }, - "enforceTimestampInRequest": { - "type": "boolean" - }, - "keyTransportAlgorithm": { - "enum": [ - "rsa-1_5", - "rsa-oaep" - ], - "type": "string" - }, - "maxTimestampInterval": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "namespaceMapping": { - "items": { - "properties": { - "namespace": { - "type": "string" - }, - "prefix": { - "type": "string" - } - }, - "required": [ - "prefix" - ], - "type": "object" - }, - "type": "array" - }, - "responseAction": { - "enum": [ - "encrypt", - "encrypt-then-sign", - "sign", - "sign-then-encrypt" - ], - "type": "string" - }, - "roles": { - "items": { - "properties": { - "applyTo": { - "enum": [ - "request", - "response" - ], - "type": "string" - }, - "role": { - "enum": [ - "next", - "none", - "ultimateReceiver" - ], - "type": "string" - } - }, - "required": [ - "applyTo", - "role" - ], - "type": "object" - }, - "type": "array" - }, - "signatureAlgorithm": { - "enum": [ - "hmac-sha1", - "rsa-sha1" - ], - "type": "string" - }, - "soapBodyInRequestMustBeSignedAndVerified": { - "type": "boolean" - }, - "verifyAll": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "required": [ - "name" - ], - "type": "object" - }, - "type": "array" - }, - null - ] - }, - "xml-validation-files": { - "oneOf": [ - { - "items": { - "oneOf": [ - { - "required": [ - "id" - ] - }, - { - "required": [ - "id", - "$ref" - ] - }, - { - "required": [ - "id", - "link" - ] - } - ], - "properties": { - "$action": { - "enum": [ - "delete" - ], - "type": "string" - }, - "$ref": { - "format": "uri", - "type": "string" - }, - "contents": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "isBase64": { - "type": "boolean" - }, - "link": { - "format": "uri", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" - }, - null - ] - } - }, - "required": [ - "name", - "template" - ], - "type": "object" - } - }, - "type": "object" - } - }, - "required": [ - "declaration" - ], - "type": "object" - } - ], - "description": "Defines WAF policy data." -} \ No newline at end of file diff --git a/schemas/nextCm/serviceDefinition.json b/schemas/nextCm/serviceDefinition.json deleted file mode 100644 index db9cef5..0000000 --- a/schemas/nextCm/serviceDefinition.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "description": "See documentation for information on the AS3 service definition", - "type": "object" -} \ No newline at end of file diff --git a/src/deviceImport.ts b/src/deviceImport.ts index 8db888f..3f14220 100644 --- a/src/deviceImport.ts +++ b/src/deviceImport.ts @@ -98,6 +98,7 @@ export async function deviceImport(seed: string) { * - 'admin@1.1.1.1' * - ['admin@1.1.1.1', 'usr1@2.2.2.2:8443', ...] * - [{ device: 'admin@4.4.4.4', password: 'pizzaTower', provider: 'tmos' }, ...] + * - { device: 'admin@4.4.4.4', password: 'pizzaTower', provider: 'tmos' } * * had to wrap in a function to provde a standard typed output * @@ -110,6 +111,11 @@ export async function parseDeviceLoad (seed: string) { const seedList = isValidJson(seed); + // if seedlist is a single object, convert to array + if (seedList && typeof seedList === 'object' && !Array.isArray(seedList)) { + return [seedList]; + } else + if (seedList) { return seedList.map( (el: string | CfgDevice) => { @@ -179,22 +185,23 @@ async function addDevice (device: {device: string, provider?: string, password?: } async function importPassword (device: string, password: string) { - return await ext.keyTar.setPassword('f5Hosts', device, password); + // return await ext.keyTar.setPassword('f5Hosts', device, password); + return await ext.context.secrets.store(device, password); } -/** - * following is only used for troubleshooting... - */ -async function outputKeytar () { - ext.keyTar.findCredentials('f5Hosts').then( list => { - // map through and delete all - list.map(item => { - const psswd = ext.keyTar.getPassword('f5Hosts', item.account); - console.log('***KEYTAR OUTPUT***', JSON.stringify(item)); - }); - }); -} +// /** +// * following is only used for troubleshooting... +// */ +// async function outputKeytar () { +// ext.keyTar.findCredentials('f5Hosts').then( list => { +// // map through and delete all +// list.map(item => { +// const psswd = ext.keyTar.getPassword('f5Hosts', item.account); +// // console.log('***KEYTAR OUTPUT***', JSON.stringify(item)); +// }); +// }); +// } const exampleImport = { devices: [ diff --git a/src/devicesCore.ts b/src/devicesCore.ts index a5511f5..0d4b83e 100644 --- a/src/devicesCore.ts +++ b/src/devicesCore.ts @@ -118,7 +118,7 @@ export default function devicesCore(context: ExtensionContext, f5OutputChannel: return { label: item.device, target: item }; }); - device = await window.showQuickPick(qPickHostList, { placeHolder: 'Select Device' }); + device = await window.showQuickPick(qPickHostList, { placeHolder: 'Select Device', ignoreFocusOut: true }); if (!device) { throw new Error('user exited device input'); } else { @@ -154,38 +154,45 @@ export default function devicesCore(context: ExtensionContext, f5OutputChannel: ext.teemAgent ); - await ext.f5Client.connect() - .then(connect => { - - // cache password in keytar - ext.keyTar.setPassword('f5Hosts', device.device, password); - - logger.info('F5 Connect Discovered', connect); - - - // ts-todo: add details about platformMarketinName/VE/m - ext.telemetry.capture({ - command: "f5.connectDevice", - connect: { - product: connect.product, - version: connect.version, - atc: connect.atc, - baseRegKey: ext.f5Client?.host?.license?.registrationKey - } + if(device && user && host && password) { + + await ext.f5Client.connect() + .then(connect => { + + // cache password in secrete store + // ext.keyTar.setPassword('f5Hosts', device.device, password); + ext.context.secrets.store(device.device, password); + + logger.info('F5 Connect Discovered', connect); + + + // ts-todo: add details about platformMarketinName/VE/m + ext.telemetry.capture({ + command: "f5.connectDevice", + connect: { + product: connect.product, + version: connect.version, + atc: connect.atc, + baseRegKey: ext.f5Client?.host?.license?.registrationKey + } + }); + + ext.hostsTreeProvider.connectedDevice = ext.f5Client; + ext.hostsTreeProvider.refresh(); + + bigipProvider.connected = ext.f5Client; + bigipProvider.refresh(); + + ext.as3Tree.refresh(); + + }) + .catch(err => { + logger.error('Connect/Discover failed', err); }); - - ext.hostsTreeProvider.connectedDevice = ext.f5Client; - ext.hostsTreeProvider.refresh(); - - bigipProvider.connected = ext.f5Client; - bigipProvider.refresh(); - - ext.as3Tree.refresh(); - - }) - .catch(err => { - logger.error('Connect/Discover failed', err); - }); + } else { + // log details that are missing + logger.error('Missing details for connect/discover', device, user, host, password); + } // finish debounce logic wait(1000); diff --git a/src/extension.ts b/src/extension.ts index 73ab534..bb36663 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -16,7 +16,6 @@ import { import jsYaml from 'js-yaml'; import * as path from 'path'; import * as fs from 'fs'; -import * as keyTarType from 'keytar'; import * as os from 'os'; import { ExampleDecsProvider } from './treeViewsProviders/githubDecExamples'; @@ -104,7 +103,7 @@ export async function activate(context: ExtensionContext) { ext.connectBar.show(); ext.panel = new TextDocumentView(); - ext.keyTar = keyTarType; + // ext.keyTar = keyTarType; tokenTimer(); diff --git a/src/extensionVariables.ts b/src/extensionVariables.ts index 668811c..bb9e793 100644 --- a/src/extensionVariables.ts +++ b/src/extensionVariables.ts @@ -26,7 +26,6 @@ import { commands, window } from "vscode"; -import * as keyTarType from "keytar"; import { logger } from "./logger"; import { TextDocumentView } from './editorViews/editorView'; import { EventEmitter } from "events"; @@ -39,7 +38,6 @@ import { Telemetry } from './telemetry'; import { XcDiag } from './tmosXcDiag'; import { CfgProvider } from './treeViewsProviders/cfgTreeProvider'; -type KeyTar = typeof keyTarType; /** * Namespace for common variables used throughout the extension. @@ -49,7 +47,6 @@ export namespace ext { export let context: ExtensionContext; export let f5Client: F5Client | undefined; export let extHttp: ExtHttp; - export let keyTar: KeyTar; export let hostsTreeProvider: F5TreeProvider; export let telemetry: Telemetry; export let as3Tree: AS3TreeProvider; diff --git a/src/scripts/changelog.js b/src/scripts/changelog.js deleted file mode 100644 index 035e2cf..0000000 --- a/src/scripts/changelog.js +++ /dev/null @@ -1,30 +0,0 @@ -let fs = require('fs'); -const path = require('path'); - -const args = process.argv.slice(2); - -// src/scripts/changelog.js -const text = fs.readFileSync(path.join('CHANGELOG.md'), "utf-8"); - - -// trying to take arg for version... -// if(args[0]) { -// const rx2 = new RegExp(`## \[${args[0]}` + "\].+([\\s\\w\\>\\'\\-\\/]+)", 'g'); -// const rx3 = /## \[\d.\d.\d\].+([\s\w\>\'\-\/]+)(?=---)/; - -// const b2 = rx2.exec(text); - -// const b3 = b2; -// // const rx = /## \[3.8.5\].+([\s\w\>\'\-\/]+)/; -// } - -// currently just returns the most recent or first match -const rx = /## \[\d.\d.\d\].+([\s\w\>\'\-\/]+)(?=---)/; - -const body = rx.exec(text); - -return console.log(body[0]); - -// debugger; - - diff --git a/src/scripts/main.js b/src/scripts/main.js deleted file mode 100644 index 2d4cc0b..0000000 --- a/src/scripts/main.js +++ /dev/null @@ -1,91 +0,0 @@ -// @ts-check -'use strict'; - -(function () { - - function onLoad() { - const code = document.getElementsByTagName('code')[0]; - const [...childs] = code.childNodes; - // @ts-ignore - childs.filter(n => n.nodeType === 1 && n.hasAttribute('range-start')).forEach(n => { - n.addEventListener('click', toggleLines); - }); - } - - function toggleLines(e, collapse) { - let lineSpan, recursive, isExpandAction; - if (arguments.length === 2) { - lineSpan = e; - recursive = true; - isExpandAction = !collapse; - if (isExpandAction) { - lineSpan.classList.remove('collapsed'); - } else { - lineSpan.classList.add('collapsed'); - } - } else { - lineSpan = e.target.parentNode; - recursive = e.shiftKey; - isExpandAction = isCollapspedLine(lineSpan); - lineSpan.classList.toggle('collapsed'); - } - const blockEndNum = getFoldingRangeEnd(lineSpan); - - let span = lineSpan; - let currentLineNum = getLineNum(lineSpan); - let skipLineEndNum = -1; - while ((span = span.nextElementSibling) && ++currentLineNum <= blockEndNum) { - if (isExpandAction) { - if (currentLineNum > skipLineEndNum || recursive) { - span.classList.remove('hidden-line'); - span.nextSibling.textContent = '\n'; - - if (isCollapspedLine(span)) { - skipLineEndNum = getFoldingRangeEnd(span); - if (recursive) { - span.classList.remove('collapsed'); - } - } - } - } else { - if (isRangeStartLine(span) && recursive) { - span.classList.add('collapsed'); - } - - span.classList.add('hidden-line'); - span.nextSibling.textContent = ''; - } - } - } - - function getLineNum(element) { - return parseInt(element.attributes.getNamedItem('start').value); - } - - function isRangeStartLine(element) { - return element.hasAttribute('range-start'); - } - - function isCollapspedLine(element) { - return element.classList.contains('collapsed'); - } - - function getFoldingRangeEnd(element) { - return parseInt(element.attributes.getNamedItem('range-end').value); - } - - window.addEventListener('message', event => { - const message = event.data; - const code = document.getElementsByTagName('code')[0]; - const [...childs] = code.childNodes; - // @ts-ignore - const lineSpan = childs.find(n => n.nodeType === 1 && n.hasAttribute('range-start')); - toggleLines(lineSpan, message.command === 'foldAll'); - }); - - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', onLoad); - } else { - onLoad(); - } -})() \ No newline at end of file diff --git a/src/treeViewsProviders/hostsTreeProvider.ts b/src/treeViewsProviders/hostsTreeProvider.ts index 10834aa..e6d373e 100644 --- a/src/treeViewsProviders/hostsTreeProvider.ts +++ b/src/treeViewsProviders/hostsTreeProvider.ts @@ -318,22 +318,24 @@ export class F5TreeProvider implements TreeDataProvider { // passed in from view click or deviceClient logger.debug('CLEARING KEYTAR PASSWORD CACHE for', device); - return await ext.keyTar.deletePassword('f5Hosts', device); + // return await ext.keyTar.deletePassword('f5Hosts', device); + return await ext.context.secrets.delete(device); } else { // delete all passwords // get list of items in keytar for the 'f5Hosts' service - logger.debug('CLEARING KEYTAR PASSWORD CACHE'); - await ext.keyTar.findCredentials('f5Hosts').then(list => { - - // map out just the account names - const devices = list.map(item => item.account); - // log the accounts pending password removal - logger.info('removing cached password for following devices;', devices); - // map through and delete all - devices.map(device => ext.keyTar.deletePassword('f5Hosts', device)); - }); + logger.debug('CLEARING KEYTAR PASSWORD CACHE - no longer a thing - look into keytar migration issues'); + // logger.debug('CLEARING KEYTAR PASSWORD CACHE'); + // await ext.keyTar.findCredentials('f5Hosts').then(list => { + + // // map out just the account names + // const devices = list.map(item => item.account); + // // log the accounts pending password removal + // logger.info('removing cached password for following devices;', devices); + // // map through and delete all + // devices.map(device => ext.keyTar.deletePassword('f5Hosts', device)); + // }); /** * future: setup clear all to return an array of touples to show which * device passwords got cleared diff --git a/src/treeViewsProviders/tclTreeProvider.ts b/src/treeViewsProviders/tclTreeProvider.ts index 4029456..e6981e1 100644 --- a/src/treeViewsProviders/tclTreeProvider.ts +++ b/src/treeViewsProviders/tclTreeProvider.ts @@ -358,12 +358,12 @@ export class TclTreeProvider implements TreeDataProvider { /** * Comment out meta-data to allow for re/import */ - text = text.replace(/(partition\s.*?\s)/, '#$1'); - text = text.replace(/(signing-key\s.+?\s)/, '#$1'); - text = text.replace(/(tmpl-checksum\s.+?\s)/, '#$1'); - text = text.replace(/(tmpl-signature\s.+?\s)/, '#$1'); - text = text.replace(/(total-signing-status\s.+?\s)/, '#$1'); - text = text.replace(/(verification-status\s.+?\s)/, '#$1'); + text = text.replace(/ (partition .*?)\n/, ''); + text = text.replace(/ (signing-key\s.+?\s)\n/, '#$1'); + text = text.replace(/ (tmpl-checksum\s.+?\s)\n/, '#$1'); + text = text.replace(/ (tmpl-signature\s.+?\s)\n/, '#$1'); + text = text.replace(/ (total-signing-status\s.+?\s)\n/, '#$1'); + text = text.replace(/ (verification-status\s.+?\s)\n/, '#$1'); return text; }; diff --git a/src/utils/utils.ts b/src/utils/utils.ts index d9fa8b9..a25260d 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -87,7 +87,8 @@ export async function getPassword(device: string): Promise { // logger.debug(`getPassword Device: ${device}`); - let password = await ext.keyTar.getPassword('f5Hosts', device).then( passwd => passwd ); + // let password = await ext.keyTar.getPassword('f5Hosts', device).then( passwd => passwd ); + let password = await ext.context.secrets.get(device); // logger.debug(`IS PASSWORD IN KEYTAR?: ${password}`); if (!password) { diff --git a/tsconfig.json b/tsconfig.json index 8438717..5afd5e7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,5 +24,10 @@ }, "include": [ "src/**/*" - ] + ], + "exclude": [ + "node_modules", + "src/test/**/*", + "out" + ] } \ No newline at end of file