From bd828852a01d06e6f46722b4eb0332e2ff1327ed Mon Sep 17 00:00:00 2001 From: dmann000 Date: Wed, 22 Jul 2026 12:10:47 -0400 Subject: [PATCH] sync: bring fork to 2.2.0 (PRs #20, #21, release #28) Mirrors dmann000/fb-powershell main into the OpenConnect fork: - API version-awareness capability check + toolchain (PR #21) - seven feature-gap query-param enums + session-cmdlet fixes (PR #20) - 2.2.0 version bump + Publish-Gallery.ps1 Data/ bundling (PR #28) Fork and origin main are content-identical after this. Co-Authored-By: Claude Opus 4.8 --- .../workflows/update-api-capability-map.yml | 153 + .gitignore | 11 + CHANGELOG.md | 39 + Data/PfbCapabilityMap.json | 9386 +++++++++ Data/PfbVersionMap.json | 86 + Private/Assert-PfbApiCapability.ps1 | 88 + Private/Get-PfbCapabilityMap.ps1 | 34 + Private/Get-PfbVersionMap.ps1 | 33 + Private/Invoke-PfbApiRequest.ps1 | 5 + Private/Test-PfbVersionAtLeast.ps1 | 34 + .../Get-PfbArrayPerformanceReplication.ps1 | 7 + .../FileSystem/Get-PfbFileSystemSession.ps1 | 27 +- .../Remove-PfbFileSystemSession.ps1 | 76 +- Public/Network/Invoke-PfbNetworkTrace.ps1 | 6 + Public/Policy/Get-PfbPolicyAllMember.ps1 | 18 + ...bArrayConnectionPerformanceReplication.ps1 | 7 + Public/Support/Test-PfbSupport.ps1 | 20 +- PureStorageFlashBladePowerShell.psd1 | 13 +- PureStorageFlashBladePowerShell.psm1 | 5 + Reports/PfbApiDriftReport.json | 4946 +++++ Reports/PfbApiDriftReport.md | 423 + Reports/PfbFieldCmdletMap.json | 16237 ++++++++++++++++ Reports/PfbFieldCmdletMapping.md | 238 + Reports/PfbValueEnumMap.json | 3885 ++++ Reports/PfbValueEnumReconciliation.md | 20 + Reports/README.md | 28 + Tests/Assert-PfbApiCapability.Tests.ps1 | 133 + Tests/Build-PfbApiDriftReport.Tests.ps1 | 193 + Tests/Build-PfbCapabilityMap.Tests.ps1 | 185 + Tests/Build-PfbFieldCmdletMap.Tests.ps1 | 299 + Tests/Build-PfbValueEnumMap.Tests.ps1 | 256 + Tests/Fixtures/sample-redoc-page.html | 14 + ...ConnectionPerformanceReplication.Tests.ps1 | 39 + ...t-PfbArrayPerformanceReplication.Tests.ps1 | 39 + Tests/Get-PfbCapabilityMap.Tests.ps1 | 53 + Tests/Get-PfbFileSystemSession.Tests.ps1 | 50 + Tests/Get-PfbPolicyAllMember.Tests.ps1 | 50 + Tests/Get-PfbVersionMap.Tests.ps1 | 51 + ...ke-PfbApiRequest.CapabilityCheck.Tests.ps1 | 81 + Tests/Invoke-PfbNetworkTrace.Tests.ps1 | 39 + Tests/PfbApiDriftTools.Tests.ps1 | 258 + Tests/PfbCmdletParamTools.Tests.ps1 | 385 + Tests/PfbSpecTools.Tests.ps1 | 255 + Tests/PfbValueEnumTools.Tests.ps1 | 538 + Tests/PfbVersionMap.Coverage.Tests.ps1 | 64 + Tests/PfbVersionMapTools.Tests.ps1 | 91 + Tests/Remove-PfbFileSystemSession.Tests.ps1 | 67 + Tests/Test-PfbSupport.Tests.ps1 | 39 + scripts/Publish-Gallery.ps1 | 5 + scripts/build.ps1 | 13 + tools/Build-PfbApiDriftReport.ps1 | 171 + tools/Build-PfbCapabilityMap.ps1 | 121 + tools/Build-PfbFieldCmdletMap.ps1 | 152 + tools/Build-PfbValueEnumMap.ps1 | 297 + tools/README.md | 259 + tools/Update-PfbApiSpecs.ps1 | 102 + tools/Update-PfbVersionMap.ps1 | 123 + tools/lib/PfbApiDriftTools.ps1 | 331 + tools/lib/PfbCmdletParamTools.ps1 | 388 + tools/lib/PfbSpecTools.ps1 | 319 + tools/lib/PfbValueEnumTools.ps1 | 555 + tools/lib/PfbVersionMapTools.ps1 | 96 + 62 files changed, 41902 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/update-api-capability-map.yml create mode 100644 Data/PfbCapabilityMap.json create mode 100644 Data/PfbVersionMap.json create mode 100644 Private/Assert-PfbApiCapability.ps1 create mode 100644 Private/Get-PfbCapabilityMap.ps1 create mode 100644 Private/Get-PfbVersionMap.ps1 create mode 100644 Private/Test-PfbVersionAtLeast.ps1 create mode 100644 Reports/PfbApiDriftReport.json create mode 100644 Reports/PfbApiDriftReport.md create mode 100644 Reports/PfbFieldCmdletMap.json create mode 100644 Reports/PfbFieldCmdletMapping.md create mode 100644 Reports/PfbValueEnumMap.json create mode 100644 Reports/PfbValueEnumReconciliation.md create mode 100644 Reports/README.md create mode 100644 Tests/Assert-PfbApiCapability.Tests.ps1 create mode 100644 Tests/Build-PfbApiDriftReport.Tests.ps1 create mode 100644 Tests/Build-PfbCapabilityMap.Tests.ps1 create mode 100644 Tests/Build-PfbFieldCmdletMap.Tests.ps1 create mode 100644 Tests/Build-PfbValueEnumMap.Tests.ps1 create mode 100644 Tests/Fixtures/sample-redoc-page.html create mode 100644 Tests/Get-PfbArrayConnectionPerformanceReplication.Tests.ps1 create mode 100644 Tests/Get-PfbArrayPerformanceReplication.Tests.ps1 create mode 100644 Tests/Get-PfbCapabilityMap.Tests.ps1 create mode 100644 Tests/Get-PfbFileSystemSession.Tests.ps1 create mode 100644 Tests/Get-PfbPolicyAllMember.Tests.ps1 create mode 100644 Tests/Get-PfbVersionMap.Tests.ps1 create mode 100644 Tests/Invoke-PfbApiRequest.CapabilityCheck.Tests.ps1 create mode 100644 Tests/Invoke-PfbNetworkTrace.Tests.ps1 create mode 100644 Tests/PfbApiDriftTools.Tests.ps1 create mode 100644 Tests/PfbCmdletParamTools.Tests.ps1 create mode 100644 Tests/PfbSpecTools.Tests.ps1 create mode 100644 Tests/PfbValueEnumTools.Tests.ps1 create mode 100644 Tests/PfbVersionMap.Coverage.Tests.ps1 create mode 100644 Tests/PfbVersionMapTools.Tests.ps1 create mode 100644 Tests/Remove-PfbFileSystemSession.Tests.ps1 create mode 100644 Tests/Test-PfbSupport.Tests.ps1 create mode 100644 tools/Build-PfbApiDriftReport.ps1 create mode 100644 tools/Build-PfbCapabilityMap.ps1 create mode 100644 tools/Build-PfbFieldCmdletMap.ps1 create mode 100644 tools/Build-PfbValueEnumMap.ps1 create mode 100644 tools/README.md create mode 100644 tools/Update-PfbApiSpecs.ps1 create mode 100644 tools/Update-PfbVersionMap.ps1 create mode 100644 tools/lib/PfbApiDriftTools.ps1 create mode 100644 tools/lib/PfbCmdletParamTools.ps1 create mode 100644 tools/lib/PfbSpecTools.ps1 create mode 100644 tools/lib/PfbValueEnumTools.ps1 create mode 100644 tools/lib/PfbVersionMapTools.ps1 diff --git a/.github/workflows/update-api-capability-map.yml b/.github/workflows/update-api-capability-map.yml new file mode 100644 index 0000000..23be3bf --- /dev/null +++ b/.github/workflows/update-api-capability-map.yml @@ -0,0 +1,153 @@ +name: Update API Capability Map + +# Keeps Data/PfbCapabilityMap.json (and, when an SSOT API key is configured, +# Data/PfbVersionMap.json) in sync with newly-published FlashBlade REST API versions. +# See tools/lib/PfbSpecTools.ps1 for how the manifest is derived, and tools/README.md +# for the overall pipeline this feeds into. +# +# Note: tools/specs/ (the raw cached OpenAPI specs) is deliberately NOT committed to the +# repo — see .gitignore — instead it's persisted across runs via actions/cache below, keyed +# per-run-id with a prefix restore-key so each run restores the most recent prior cache. +# Update-PfbApiSpecs.ps1 skips any version already present on disk, so a cache hit means +# only newly-published versions get fetched instead of the full ~28-version history. Only +# the small derived Data/PfbCapabilityMap.json is tracked and diffed for the PR below. + +on: + push: + branches: [main] + paths: ['Public/**'] + schedule: + # Mondays 03:17 UTC - arbitrary off-peak time, avoids the top-of-hour thundering herd. + - cron: '17 3 * * 1' + workflow_dispatch: {} + +permissions: + contents: write + pull-requests: write + +jobs: + update-capability-map: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v7 + + - name: Capture previously-known REST versions + id: previous + shell: pwsh + run: | + $versions = @() + if (Test-Path 'Data/PfbCapabilityMap.json') { + $versions = (Get-Content 'Data/PfbCapabilityMap.json' -Raw | ConvertFrom-Json -Depth 5).generatedFrom + } + "versions=$($versions -join ',')" | Out-File -FilePath $env:GITHUB_OUTPUT -Append + + - name: Restore cached spec files + uses: actions/cache/restore@v4 + with: + path: tools/specs + key: pfb-specs-${{ github.run_id }} + restore-keys: | + pfb-specs- + + - name: Fetch all published REST API spec versions + shell: pwsh + run: ./tools/Update-PfbApiSpecs.ps1 + + - name: Save spec cache + uses: actions/cache/save@v4 + if: always() + with: + path: tools/specs + key: pfb-specs-${{ github.run_id }} + + - name: Build capability map + shell: pwsh + run: ./tools/Build-PfbCapabilityMap.ps1 + + - name: Update REST<->Purity version map (skips gracefully if not configured) + shell: pwsh + env: + SSOT_API_KEY: ${{ secrets.SSOT_API_KEY }} + SSOT_BASE_URI: ${{ secrets.SSOT_BASE_URI }} + SSOT_TOPIC_ID: ${{ secrets.SSOT_TOPIC_ID }} + run: ./tools/Update-PfbVersionMap.ps1 + + - name: Build value-enum map + shell: pwsh + run: ./tools/Build-PfbValueEnumMap.ps1 + + - name: Build field-cmdlet map + shell: pwsh + run: ./tools/Build-PfbFieldCmdletMap.ps1 + + - name: Build API drift report + shell: pwsh + run: ./tools/Build-PfbApiDriftReport.ps1 + + - name: Run tests + shell: pwsh + run: | + Install-Module -Name Pester -MinimumVersion 5.0 -Force -SkipPublisherCheck -Scope CurrentUser + Import-Module Pester -MinimumVersion 5.0 -Force + # Posh-SSH is an optional runtime dependency (see Private/Get-PfbApiTokenViaSsh.ps1), + # but Get-PfbApiTokenViaSsh.Tests.ps1 mocks its cmdlets (New-SSHSession, etc.) -- + # Pester can only mock a command that's resolvable, so it must be installed here + # even though the module under test never actually opens an SSH connection. + Install-Module -Name Posh-SSH -Force -SkipPublisherCheck -Scope CurrentUser + Import-Module Posh-SSH -Force + $cfg = New-PesterConfiguration + $cfg.Run.Path = 'Tests' + $cfg.Run.Exit = $true + $cfg.Output.Verbosity = 'Detailed' + Invoke-Pester -Configuration $cfg + + - name: Check for changes + id: diff + run: | + if [ -n "$(git status --porcelain -- Data Reports)" ]; then + echo "changed=true" >> "$GITHUB_OUTPUT" + else + echo "changed=false" >> "$GITHUB_OUTPUT" + fi + + - name: Summarize new versions + id: summary + if: steps.diff.outputs.changed == 'true' + shell: pwsh + run: | + $oldVersions = @('${{ steps.previous.outputs.versions }}' -split ',' | Where-Object { $_ }) + $newManifest = Get-Content 'Data/PfbCapabilityMap.json' -Raw | ConvertFrom-Json -Depth 5 + $newlyAdded = $newManifest.generatedFrom | Where-Object { $oldVersions -notcontains $_ } + "new_versions=$($newlyAdded -join ', ')" | Out-File -FilePath $env:GITHUB_OUTPUT -Append + + $drift = Get-Content 'Reports/PfbApiDriftReport.json' -Raw | ConvertFrom-Json -Depth 20 + $driftSummary = "$($drift.uncoveredEndpoints.Count) uncovered endpoints, $($drift.parameterGaps.Count) parameter gaps, $($drift.validateSetDrift.Count) ValidateSet drift findings, $($drift.newValidateSetCandidates.Count) new ValidateSet candidates" + "drift_summary=$driftSummary" | Out-File -FilePath $env:GITHUB_OUTPUT -Append + + - name: Open pull request + if: steps.diff.outputs.changed == 'true' && github.repository == 'dmann000/fb-powershell' + uses: peter-evans/create-pull-request@v6 + with: + commit-message: 'Update API capability map' + title: "Update API capability map${{ steps.summary.outputs.new_versions && format(' (new REST versions: {0})', steps.summary.outputs.new_versions) || '' }}" + body: | + Automated update from the `update-api-capability-map` workflow. + + - Re-fetched every published REST API spec version from the FlashBlade + swagger index (not committed - see `.gitignore`) and rebuilt + `Data/PfbCapabilityMap.json` from the full history. + - Updated `Data/PfbVersionMap.json` if an `SSOT_API_KEY` secret is + configured; otherwise left untouched (see `tools/Update-PfbVersionMap.ps1`). + - Rebuilt `Reports/PfbValueEnumMap.json`, `Reports/PfbFieldCmdletMap.json`, and + `Reports/PfbApiDriftReport.json` (+ their Markdown companions) -- see + `Reports/README.md` for what each answers. + + New REST versions detected: ${{ steps.summary.outputs.new_versions || 'none - see diff (e.g. a version-map-only update once an SSOT_API_KEY secret was configured, or new parameters/fields added to existing endpoints in a point release)' }} + + API drift report: ${{ steps.summary.outputs.drift_summary || 'no drift-report changes this run' }} + branch: automated/update-api-capability-map + delete-branch: true + add-paths: | + Data + Reports diff --git a/.gitignore b/.gitignore index b927c80..89e50f2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ # Test report output (regenerated each run) _test_report.html +testResults.xml # Build output (regenerated by scripts/build.ps1 / Tests/Generate-Reports.ps1) # Cover everything under build/ — there's no reason any of it should be committed. @@ -13,6 +14,9 @@ build/ .vs/ .vscode/ +# Local git worktrees (see using-git-worktrees skill) +.worktrees/ + # Dev-only scratch files .env.ps1 swagger.json @@ -24,6 +28,13 @@ Tests/.coverage-*.csv .superpowers/ docs/superpowers/ +# Cached raw OpenAPI specs (tools/Update-PfbApiSpecs.ps1) — build-time input only, never +# read at runtime. Deliberately NOT committed: at ~1-3MB per REST version (~48MB for the +# full history), committing these would bloat every clone of this repo, which today is +# also what users copy directly into their PSModulePath (see README "From source"). +# Only the small derived Data/PfbCapabilityMap.json is committed/shipped. +tools/specs/ + # PowerShell *.pssproj.user diff --git a/CHANGELOG.md b/CHANGELOG.md index fcc6e1d..5ed37e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,45 @@ All notable changes to `PureStorageFlashBladePowerShell` are documented in this file. +## [2.2.0] - 2026-07-22 + +API version-awareness plus seven documented-but-unexposed query-parameter enums. + +### Added + +- API capability check. A generated capability map (`Data/PfbCapabilityMap.json`) + records the REST API version that introduced every endpoint, query parameter, and + field; a REST-to-Purity//FB version map (`Data/PfbVersionMap.json`) makes the errors + readable. `Invoke-PfbApiRequest` now runs a fail-fast check (`Assert-PfbApiCapability`) + that rejects a call **before any HTTP request** when the connected array's version + cannot support what is being asked, with a clear "upgrade the array or omit the + unsupported option(s)" message. The check **fails safe**: a missing map, an unmatched + endpoint, or an unresolvable version is a graceful no-op, never a false rejection. +- Seven query-parameter enums the REST API documents but the cmdlets never exposed + (all additive, default to "not sent"): `Get-PfbArrayConnectionPerformanceReplication -Type`, + `Get-PfbArrayPerformanceReplication -Type`, `Test-PfbSupport -TestType`, + `Invoke-PfbNetworkTrace -Method`, `Get-PfbFileSystemSession -Protocol`, + `Remove-PfbFileSystemSession -Protocol`, and `Get-PfbPolicyAllMember -MemberType` + (an `ArgumentCompleter` rather than a `ValidateSet`, because that value set grew from + 4 to 5 at REST v2.17 and a hard set would block a value the array accepts). +- A reporting-only maintainer toolchain under `tools/` (value-enum extraction, + field-to-cmdlet validation recommendations, and a combined API drift report). Nothing + is wired into cmdlet validation yet; that is a deliberate follow-on decision. + +### Fixed + +- `Get-`/`Remove-PfbFileSystemSession`: removed the `-Id` parameter (the endpoint has no + `ids` query parameter in any spec version, so it never worked), corrected `-Name` help + (it filters by the session's own generated name, not a file system name), and made + `-Protocol` its own mutually-exclusive parameter set. On `Remove-PfbFileSystemSession`, + `-Protocol` is a genuine array-wide bulk-terminate mode and now requires an explicit + `-Force` switch. + +### Changed + +- `scripts/build.ps1` and `scripts/Publish-Gallery.ps1` now bundle `Data/` into the + built and branded packages, so the capability check is live for installed copies. + ## [2.1.2] - 2026-07-20 API-drift cleanup: parameter-validation fixes and removal of three cmdlets that diff --git a/Data/PfbCapabilityMap.json b/Data/PfbCapabilityMap.json new file mode 100644 index 0000000..75d67a6 --- /dev/null +++ b/Data/PfbCapabilityMap.json @@ -0,0 +1,9386 @@ +{ + "schemaVersion": 1, + "generatedFrom": [ + "2.0", + "2.1", + "2.2", + "2.3", + "2.4", + "2.5", + "2.6", + "2.7", + "2.8", + "2.9", + "2.10", + "2.11", + "2.12", + "2.13", + "2.14", + "2.15", + "2.16", + "2.17", + "2.18", + "2.19", + "2.20", + "2.21", + "2.22", + "2.23", + "2.24", + "2.25", + "2.26", + "2.27" + ], + "endpointCount": 632, + "endpoints": { + "POST /oauth2/1.0/token": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.12" + }, + "bodyProperties": { + "grant_type": "2.0", + "subject_token": "2.0", + "subject_token_type": "2.0" + } + }, + "GET /api/api_version": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /api/login": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14", + "api-token": "2.26" + }, + "bodyProperties": { + "password": "2.26", + "username": "2.26" + } + }, + "POST /api/logout": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /api/login-banner": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /active-directory": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "DELETE /active-directory": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "local_only": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /active-directory": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "directory_servers": "2.0", + "encryption_types": "2.0", + "fqdns": "2.0", + "join_ou": "2.0", + "kerberos_servers": "2.0", + "service_principal_names": "2.0", + "global_catalog_servers": "2.12", + "ca_certificate": "2.27", + "ca_certificate_group": "2.27" + } + }, + "POST /active-directory": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "join_existing_account": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "computer_name": "2.0", + "directory_servers": "2.0", + "domain": "2.0", + "encryption_types": "2.0", + "fqdns": "2.0", + "join_ou": "2.0", + "kerberos_servers": "2.0", + "password": "2.0", + "service_principal_names": "2.0", + "user": "2.0", + "global_catalog_servers": "2.12", + "ca_certificate": "2.27", + "ca_certificate_group": "2.27" + } + }, + "GET /active-directory/test": { + "minVersion": "2.0", + "parameters": { + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.23", + "context_names": "2.23", + "continuation_token": "2.23" + }, + "bodyProperties": {} + }, + "GET /admins": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "expose_api_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.22", + "context_names": "2.22" + }, + "bodyProperties": {} + }, + "PATCH /admins": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.24" + }, + "bodyProperties": { + "old_password": "2.0", + "password": "2.0", + "public_key": "2.0", + "locked": "2.3", + "role": "2.15", + "authorization_model": "2.24", + "management_access_policies": "2.24" + } + }, + "GET /admins/api-tokens": { + "minVersion": "2.0", + "parameters": { + "admin_ids": "2.0", + "admin_names": "2.0", + "continuation_token": "2.0", + "expose_api_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /admins/api-tokens": { + "minVersion": "2.0", + "parameters": { + "admin_ids": "2.0", + "admin_names": "2.0", + "timeout": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "DELETE /admins/api-tokens": { + "minVersion": "2.0", + "parameters": { + "admin_ids": "2.0", + "admin_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /admins/cache": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "refresh": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "DELETE /admins/cache": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /alerts": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /alerts": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "action": "2.0", + "code": "2.0", + "component_name": "2.0", + "component_type": "2.0", + "created": "2.0", + "description": "2.0", + "flagged": "2.0", + "index": "2.0", + "knowledge_base_url": "2.0", + "notified": "2.0", + "severity": "2.0", + "state": "2.0", + "summary": "2.0", + "updated": "2.0", + "variables": "2.0", + "duration": "2.20" + } + }, + "GET /alert-watchers": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /alert-watchers": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "minimum_notification_severity": "2.0" + } + }, + "PATCH /alert-watchers": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "enabled": "2.0", + "minimum_notification_severity": "2.0" + } + }, + "DELETE /alert-watchers": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /alert-watchers/test": { + "minVersion": "2.0", + "parameters": { + "filter": "2.0", + "ids": "2.0", + "names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /api-clients": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /api-clients": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "max_role": "2.0", + "issuer": "2.0", + "public_key": "2.0", + "access_token_ttl_in_ms": "2.0", + "access_policies": "2.19" + } + }, + "PATCH /api-clients": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "max_role": "2.0", + "issuer": "2.0", + "public_key": "2.0", + "key_id": "2.0", + "enabled": "2.0", + "access_token_ttl_in_ms": "2.0", + "access_policies": "2.19" + } + }, + "DELETE /api-clients": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /arrays": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.22", + "context_names": "2.22" + }, + "bodyProperties": {} + }, + "PATCH /arrays": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "_as_of": "2.0", + "banner": "2.0", + "idle_timeout": "2.0", + "ntp_servers": "2.0", + "os": "2.0", + "revision": "2.0", + "time_zone": "2.0", + "version": "2.0", + "smb_mode": "2.2", + "eradication_config": "2.5", + "product_type": "2.6", + "security_update": "2.7", + "encryption": "2.8", + "network_access_policy": "2.13", + "default_inbound_tls_policy": "2.17", + "context": "2.22" + } + }, + "GET /arrays/clients/performance": { + "minVersion": "2.0", + "parameters": { + "filter": "2.0", + "limit": "2.0", + "names": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14", + "protocol": "2.18" + }, + "bodyProperties": {} + }, + "GET /arrays/eula": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /arrays/eula": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "agreement": "2.0", + "signature": "2.0" + } + }, + "GET /array-connections": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "offset": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /array-connections": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "id": "2.0", + "ca_certificate_group": "2.0", + "encrypted": "2.0", + "management_address": "2.0", + "remote": "2.0", + "replication_addresses": "2.0", + "status": "2.0", + "version": "2.0", + "throttle": "2.3", + "context": "2.17", + "os": "2.17", + "type": "2.17" + } + }, + "POST /array-connections": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "id": "2.0", + "ca_certificate_group": "2.0", + "encrypted": "2.0", + "management_address": "2.0", + "remote": "2.0", + "replication_addresses": "2.0", + "status": "2.0", + "version": "2.0", + "connection_key": "2.0", + "throttle": "2.3", + "context": "2.17", + "os": "2.17", + "type": "2.17" + } + }, + "DELETE /array-connections": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /array-connections/connection-key": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /array-connections/connection-key": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /array-connections/path": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "offset": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /array-connections/performance/replication": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "end_time": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "offset": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "resolution": "2.0", + "sort": "2.0", + "start_time": "2.0", + "total_only": "2.0", + "type": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /arrays/http-specific-performance": { + "minVersion": "2.0", + "parameters": { + "end_time": "2.0", + "resolution": "2.0", + "start_time": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/nfs-specific-performance": { + "minVersion": "2.0", + "parameters": { + "end_time": "2.0", + "resolution": "2.0", + "start_time": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/performance": { + "minVersion": "2.0", + "parameters": { + "end_time": "2.0", + "protocol": "2.0", + "resolution": "2.0", + "start_time": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/performance/replication": { + "minVersion": "2.0", + "parameters": { + "end_time": "2.0", + "resolution": "2.0", + "start_time": "2.0", + "type": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/s3-specific-performance": { + "minVersion": "2.0", + "parameters": { + "end_time": "2.0", + "resolution": "2.0", + "start_time": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/space": { + "minVersion": "2.0", + "parameters": { + "end_time": "2.0", + "resolution": "2.0", + "start_time": "2.0", + "type": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/supported-time-zones": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /audits": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /blades": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /buckets": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "destroyed": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /buckets": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "account": "2.0", + "bucket_type": "2.4", + "hard_limit_enabled": "2.8", + "object_lock_config": "2.8", + "quota_limit": "2.8", + "retention_lock": "2.8", + "eradication_config": "2.13" + } + }, + "PATCH /buckets": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "ignore_usage": "2.8", + "X-Request-ID": "2.14", + "context_names": "2.17", + "cancel_in_progress_storage_class_transition": "2.19" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "account": "2.0", + "created": "2.0", + "destroyed": "2.0", + "object_count": "2.0", + "space": "2.0", + "time_remaining": "2.0", + "versioning": "2.0", + "bucket_type": "2.4", + "hard_limit_enabled": "2.8", + "object_lock_config": "2.8", + "quota_limit": "2.8", + "retention_lock": "2.8", + "public_access_config": "2.12", + "eradication_config": "2.13", + "storage_class": "2.19", + "qos_policy": "2.20" + } + }, + "DELETE /buckets": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /buckets/performance": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "end_time": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "resolution": "2.0", + "sort": "2.0", + "start_time": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /buckets/s3-specific-performance": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "end_time": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "resolution": "2.0", + "sort": "2.0", + "start_time": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /bucket-replica-links": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "local_bucket_ids": "2.0", + "local_bucket_names": "2.0", + "offset": "2.0", + "remote_bucket_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "sort": "2.0", + "total_only": "2.2", + "X-Request-ID": "2.17", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /bucket-replica-links": { + "minVersion": "2.0", + "parameters": { + "local_bucket_names": "2.0", + "local_bucket_ids": "2.0", + "remote_bucket_names": "2.0", + "remote_credentials_names": "2.0", + "remote_credentials_ids": "2.0", + "X-Request-ID": "2.17", + "context_names": "2.17" + }, + "bodyProperties": { + "paused": "2.0", + "cascading_enabled": "2.2" + } + }, + "PATCH /bucket-replica-links": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "local_bucket_ids": "2.0", + "local_bucket_names": "2.0", + "remote_bucket_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.17", + "context_names": "2.17" + }, + "bodyProperties": { + "id": "2.0", + "direction": "2.0", + "lag": "2.0", + "status_details": "2.0", + "local_bucket": "2.0", + "paused": "2.0", + "recovery_point": "2.0", + "remote": "2.0", + "remote_bucket": "2.0", + "remote_credentials": "2.0", + "status": "2.0", + "cascading_enabled": "2.2", + "object_backlog": "2.2", + "context": "2.17" + } + }, + "DELETE /bucket-replica-links": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "local_bucket_ids": "2.0", + "local_bucket_names": "2.0", + "remote_bucket_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /certificates": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /certificates": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "certificate": "2.0", + "certificate_type": "2.0", + "common_name": "2.0", + "country": "2.0", + "email": "2.0", + "intermediate_certificate": "2.0", + "issued_by": "2.0", + "issued_to": "2.0", + "key_size": "2.0", + "locality": "2.0", + "organization": "2.0", + "organizational_unit": "2.0", + "state": "2.0", + "status": "2.0", + "valid_from": "2.0", + "valid_to": "2.0", + "passphrase": "2.15", + "private_key": "2.15", + "key_algorithm": "2.20", + "realms": "2.20", + "subject_alternative_names": "2.20", + "days": "2.20" + } + }, + "PATCH /certificates": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "generate_new_key": "2.20" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "certificate": "2.0", + "intermediate_certificate": "2.0", + "passphrase": "2.0", + "private_key": "2.0", + "certificate_type": "2.20", + "common_name": "2.20", + "country": "2.20", + "email": "2.20", + "issued_by": "2.20", + "issued_to": "2.20", + "key_algorithm": "2.20", + "key_size": "2.20", + "locality": "2.20", + "organization": "2.20", + "organizational_unit": "2.20", + "realms": "2.20", + "state": "2.20", + "status": "2.20", + "subject_alternative_names": "2.20", + "valid_from": "2.20", + "valid_to": "2.20", + "days": "2.20" + } + }, + "DELETE /certificates": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /certificates/certificate-groups": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "certificate_ids": "2.0", + "certificate_group_ids": "2.0", + "certificate_group_names": "2.0", + "certificate_names": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /certificates/certificate-groups": { + "minVersion": "2.0", + "parameters": { + "certificate_ids": "2.0", + "certificate_group_ids": "2.0", + "certificate_group_names": "2.0", + "certificate_names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "DELETE /certificates/certificate-groups": { + "minVersion": "2.0", + "parameters": { + "certificate_ids": "2.0", + "certificate_group_ids": "2.0", + "certificate_group_names": "2.0", + "certificate_names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /certificates/uses": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /certificate-groups": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /certificate-groups": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "DELETE /certificate-groups": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /certificate-groups/certificates": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "certificate_ids": "2.0", + "certificate_group_ids": "2.0", + "certificate_group_names": "2.0", + "certificate_names": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /certificate-groups/certificates": { + "minVersion": "2.0", + "parameters": { + "certificate_ids": "2.0", + "certificate_group_ids": "2.0", + "certificate_group_names": "2.0", + "certificate_names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "DELETE /certificate-groups/certificates": { + "minVersion": "2.0", + "parameters": { + "certificate_ids": "2.0", + "certificate_group_ids": "2.0", + "certificate_group_names": "2.0", + "certificate_names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /certificate-groups/uses": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /directory-services": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /directory-services": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "base_dn": "2.0", + "bind_password": "2.0", + "bind_user": "2.0", + "ca_certificate": "2.0", + "ca_certificate_group": "2.0", + "enabled": "2.0", + "management": "2.0", + "nfs": "2.0", + "services": "2.0", + "smb": "2.0", + "uris": "2.0" + } + }, + "GET /directory-services/roles": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "ids": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "role_ids": "2.0", + "role_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "names": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /directory-services/roles": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "role_ids": "2.0", + "role_names": "2.0", + "X-Request-ID": "2.14", + "names": "2.14" + }, + "bodyProperties": { + "role": "2.0", + "id": "2.0", + "group": "2.0", + "group_base": "2.0", + "name": "2.18", + "management_access_policies": "2.19" + } + }, + "GET /directory-services/test": { + "minVersion": "2.0", + "parameters": { + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.23", + "context_names": "2.23", + "continuation_token": "2.23" + }, + "bodyProperties": {} + }, + "PATCH /directory-services/test": { + "minVersion": "2.0", + "parameters": { + "filter": "2.0", + "ids": "2.0", + "names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.23", + "context_names": "2.23", + "continuation_token": "2.23", + "limit": "2.23" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "base_dn": "2.0", + "bind_password": "2.0", + "bind_user": "2.0", + "ca_certificate": "2.0", + "ca_certificate_group": "2.0", + "enabled": "2.0", + "management": "2.0", + "nfs": "2.0", + "services": "2.0", + "smb": "2.0", + "uris": "2.0" + } + }, + "GET /dns": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.25", + "context_names": "2.25" + }, + "bodyProperties": {} + }, + "PATCH /dns": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.25" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "domain": "2.0", + "nameservers": "2.0", + "services": "2.16", + "sources": "2.16", + "realms": "2.19", + "context": "2.25", + "ca_certificate": "2.25", + "ca_certificate_group": "2.25" + } + }, + "GET /file-systems": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "destroyed": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17", + "workload_ids": "2.23", + "workload_names": "2.23" + }, + "bodyProperties": {} + }, + "POST /file-systems": { + "minVersion": "2.0", + "parameters": { + "discard_non_snapshotted_data": "2.0", + "names": "2.0", + "overwrite": "2.0", + "X-Request-ID": "2.14", + "policy_ids": "2.15", + "policy_names": "2.15", + "default_exports": "2.16", + "context_names": "2.17", + "include_snapshot": "2.25" + }, + "bodyProperties": { + "default_group_quota": "2.0", + "default_user_quota": "2.0", + "fast_remove_directory_enabled": "2.0", + "hard_limit_enabled": "2.0", + "http": "2.0", + "multi_protocol": "2.0", + "nfs": "2.0", + "provisioned": "2.0", + "requested_promotion_state": "2.0", + "smb": "2.0", + "snapshot_directory_enabled": "2.0", + "source": "2.0", + "writable": "2.0", + "group_ownership": "2.13", + "eradication_config": "2.15", + "qos_policy": "2.17", + "node_group": "2.18", + "workload": "2.23" + } + }, + "DELETE /file-systems": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /file-systems": { + "minVersion": "2.0", + "parameters": { + "delete_link_on_eradication": "2.0", + "discard_detailed_permissions": "2.0", + "discard_non_snapshotted_data": "2.0", + "ids": "2.0", + "ignore_usage": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "cancel_in_progress_storage_class_transition": "2.16", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "created": "2.0", + "default_group_quota": "2.0", + "default_user_quota": "2.0", + "destroyed": "2.0", + "fast_remove_directory_enabled": "2.0", + "hard_limit_enabled": "2.0", + "http": "2.0", + "multi_protocol": "2.0", + "nfs": "2.0", + "provisioned": "2.0", + "promotion_status": "2.0", + "requested_promotion_state": "2.0", + "smb": "2.0", + "snapshot_directory_enabled": "2.0", + "source": "2.0", + "space": "2.0", + "time_remaining": "2.0", + "writable": "2.0", + "group_ownership": "2.13", + "storage_class": "2.16", + "qos_policy": "2.17", + "workload": "2.23" + } + }, + "GET /file-systems/groups/performance": { + "minVersion": "2.0", + "parameters": { + "file_system_ids": "2.0", + "file_system_names": "2.0", + "filter": "2.0", + "gids": "2.0", + "group_names": "2.0", + "limit": "2.0", + "names": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /file-systems/performance": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "end_time": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "protocol": "2.0", + "resolution": "2.0", + "sort": "2.0", + "start_time": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /file-systems/policies": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "member_ids": "2.0", + "member_names": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /file-systems/policies": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /file-systems/policies": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /file-systems/users/performance": { + "minVersion": "2.0", + "parameters": { + "file_system_ids": "2.0", + "file_system_names": "2.0", + "filter": "2.0", + "limit": "2.0", + "names": "2.0", + "sort": "2.0", + "total_only": "2.0", + "uids": "2.0", + "user_names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /file-system-replica-links": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "offset": "2.0", + "remote_file_system_ids": "2.0", + "remote_file_system_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /file-system-replica-links": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "remote_file_system_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17", + "remote_default_exports": "2.25" + }, + "bodyProperties": { + "id": "2.0", + "direction": "2.0", + "lag": "2.0", + "status_details": "2.0", + "local_file_system": "2.0", + "policies": "2.0", + "recovery_point": "2.0", + "remote": "2.0", + "remote_file_system": "2.0", + "status": "2.0", + "context": "2.17", + "link_type": "2.17" + } + }, + "GET /file-system-replica-links/policies": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "member_ids": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "remote_ids": "2.0", + "remote_file_system_ids": "2.0", + "remote_file_system_names": "2.0", + "remote_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /file-system-replica-links/policies": { + "minVersion": "2.0", + "parameters": { + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "member_ids": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /file-system-replica-links/policies": { + "minVersion": "2.0", + "parameters": { + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "member_ids": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /file-system-replica-links/transfer": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names_or_owner_names": "2.0", + "offset": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /file-system-snapshots": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "destroyed": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names_or_owner_names": "2.0", + "offset": "2.0", + "owner_ids": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /file-system-snapshots": { + "minVersion": "2.0", + "parameters": { + "source_ids": "2.0", + "source_names": "2.0", + "send": "2.0", + "targets": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "suffix": "2.0" + } + }, + "DELETE /file-system-snapshots": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /file-system-snapshots": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "latest_replica": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "created": "2.0", + "copyable": "2.0", + "destroyed": "2.0", + "owner": "2.0", + "owner_destroyed": "2.0", + "policy": "2.0", + "source": "2.0", + "suffix": "2.0", + "time_remaining": "2.0", + "policies": "2.12", + "context": "2.17" + } + }, + "GET /file-system-snapshots/policies": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "member_ids": "2.0", + "member_names": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /file-system-snapshots/policies": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /file-system-snapshots/transfer": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names_or_owner_names": "2.0", + "offset": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /file-system-snapshots/transfer": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "remote_names": "2.0", + "remote_ids": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /hardware": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.16", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /hardware": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "details": "2.0", + "identify_enabled": "2.0", + "index": "2.0", + "model": "2.0", + "serial": "2.0", + "slot": "2.0", + "speed": "2.0", + "status": "2.0", + "temperature": "2.0", + "type": "2.0", + "part_number": "2.8", + "management_mac": "2.16", + "data_mac": "2.16", + "sensor_readings": "2.18" + } + }, + "GET /hardware-connectors": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /hardware-connectors": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "connector_type": "2.0", + "lane_speed": "2.0", + "port_count": "2.0", + "transceiver_type": "2.0", + "port_speed": "2.15", + "lanes_per_port": "2.20" + } + }, + "GET /keytabs": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "DELETE /keytabs": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /keytabs": { + "minVersion": "2.0", + "parameters": { + "name_prefixes": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "source": "2.0" + } + }, + "GET /keytabs/download": { + "minVersion": "2.0", + "parameters": { + "keytab_ids": "2.0", + "keytab_names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /keytabs/upload": { + "minVersion": "2.0", + "parameters": { + "name_prefixes": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "keytab_file": "2.16" + } + }, + "GET /lifecycle-rules": { + "minVersion": "2.0", + "parameters": { + "bucket_ids": "2.0", + "bucket_names": "2.0", + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /lifecycle-rules": { + "minVersion": "2.0", + "parameters": { + "confirm_date": "2.1", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "bucket": "2.0", + "rule_id": "2.0", + "keep_previous_version_for": "2.0", + "prefix": "2.0", + "abort_incomplete_multipart_uploads_after": "2.1", + "keep_current_version_for": "2.1", + "keep_current_version_until": "2.1" + } + }, + "PATCH /lifecycle-rules": { + "minVersion": "2.0", + "parameters": { + "bucket_ids": "2.0", + "bucket_names": "2.0", + "ids": "2.0", + "names": "2.0", + "confirm_date": "2.1", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "enabled": "2.0", + "keep_previous_version_for": "2.0", + "prefix": "2.0", + "abort_incomplete_multipart_uploads_after": "2.1", + "keep_current_version_for": "2.1", + "keep_current_version_until": "2.1" + } + }, + "DELETE /lifecycle-rules": { + "minVersion": "2.0", + "parameters": { + "bucket_ids": "2.0", + "bucket_names": "2.0", + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /link-aggregation-groups": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /link-aggregation-groups": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "lag_speed": "2.0", + "mac_address": "2.0", + "ports": "2.0", + "port_speed": "2.0", + "status": "2.0" + } + }, + "PATCH /link-aggregation-groups": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "ports": "2.0", + "add_ports": "2.0", + "remove_ports": "2.0" + } + }, + "DELETE /link-aggregation-groups": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /logs": { + "minVersion": "2.0", + "parameters": { + "end_time": "2.0", + "start_time": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /network-interfaces": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /network-interfaces": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "address": "2.0", + "enabled": "2.0", + "gateway": "2.0", + "mtu": "2.0", + "netmask": "2.0", + "services": "2.0", + "subnet": "2.0", + "type": "2.0", + "vlan": "2.0", + "server": "2.16", + "realms": "2.19", + "attached_servers": "2.20" + } + }, + "PATCH /network-interfaces": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "address": "2.0", + "services": "2.0", + "server": "2.16", + "attached_servers": "2.20" + } + }, + "DELETE /network-interfaces": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /object-store-access-keys": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-access-keys": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "user": "2.0", + "secret_access_key": "2.0" + } + }, + "PATCH /object-store-access-keys": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "created": "2.0", + "enabled": "2.0", + "secret_access_key": "2.0", + "user": "2.0", + "context": "2.17", + "access_key_id": "2.20" + } + }, + "DELETE /object-store-access-keys": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-access-policies": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "exclude_rules": "2.4", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-access-policies/object-store-users": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "member_ids": "2.0", + "member_names": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-access-policies/object-store-users": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /object-store-access-policies/object-store-users": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-accounts": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-accounts": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "bucket_defaults": "2.8", + "hard_limit_enabled": "2.8", + "quota_limit": "2.8", + "account_exports": "2.20" + } + }, + "DELETE /object-store-accounts": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-remote-credentials": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-remote-credentials": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "access_key_id": "2.0", + "secret_access_key": "2.0" + } + }, + "PATCH /object-store-remote-credentials": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "access_key_id": "2.0", + "secret_access_key": "2.0", + "remote": "2.0", + "context": "2.17", + "realms": "2.20" + } + }, + "DELETE /object-store-remote-credentials": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-users": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-users": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "full_access": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /object-store-users": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-users/object-store-access-policies": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "member_ids": "2.0", + "member_names": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-users/object-store-access-policies": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /object-store-users/object-store-access-policies": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-virtual-hosts": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-virtual-hosts": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "id": "2.20", + "name": "2.20", + "context": "2.20", + "attached_servers": "2.20", + "hostname": "2.20", + "realms": "2.20" + } + }, + "DELETE /object-store-virtual-hosts": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /policies": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17", + "workload_ids": "2.23", + "workload_names": "2.23" + }, + "bodyProperties": {} + }, + "POST /policies": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "enabled": "2.0", + "is_local": "2.0", + "location": "2.0", + "rules": "2.0", + "policy_type": "2.2", + "retention_lock": "2.5", + "context": "2.17", + "realms": "2.19" + } + }, + "DELETE /policies": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /policies": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "destroy_snapshots": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "enabled": "2.0", + "is_local": "2.0", + "location": "2.0", + "rules": "2.0", + "add_rules": "2.0", + "remove_rules": "2.0", + "policy_type": "2.2", + "retention_lock": "2.5", + "context": "2.17", + "realms": "2.19" + } + }, + "GET /policies/file-systems": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "member_ids": "2.0", + "member_names": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /policies/file-systems": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /policies/file-systems": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /policies/file-system-snapshots": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "member_ids": "2.0", + "member_names": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /policies/file-system-snapshots": { + "minVersion": "2.0", + "parameters": { + "member_ids": "2.0", + "member_names": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /policies/members": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "member_ids": "2.0", + "member_names": "2.0", + "member_types": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "remote_ids": "2.0", + "remote_file_system_ids": "2.0", + "remote_file_system_names": "2.0", + "remote_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /policies/file-system-replica-links": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "limit": "2.0", + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "member_ids": "2.0", + "offset": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "remote_ids": "2.0", + "remote_file_system_ids": "2.0", + "remote_file_system_names": "2.0", + "remote_names": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /policies/file-system-replica-links": { + "minVersion": "2.0", + "parameters": { + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "member_ids": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /policies/file-system-replica-links": { + "minVersion": "2.0", + "parameters": { + "local_file_system_ids": "2.0", + "local_file_system_names": "2.0", + "member_ids": "2.0", + "policy_ids": "2.0", + "policy_names": "2.0", + "remote_ids": "2.0", + "remote_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /quotas/groups": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "file_system_ids": "2.0", + "file_system_names": "2.0", + "filter": "2.0", + "gids": "2.0", + "group_names": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /quotas/groups": { + "minVersion": "2.0", + "parameters": { + "file_system_ids": "2.0", + "file_system_names": "2.0", + "gids": "2.0", + "group_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "quota": "2.0" + } + }, + "DELETE /quotas/groups": { + "minVersion": "2.0", + "parameters": { + "file_system_names": "2.0", + "file_system_ids": "2.0", + "gids": "2.0", + "group_names": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /quotas/groups": { + "minVersion": "2.0", + "parameters": { + "file_system_names": "2.0", + "file_system_ids": "2.0", + "gids": "2.0", + "group_names": "2.0", + "names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "quota": "2.0" + } + }, + "GET /quotas/settings": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /quotas/settings": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "contact": "2.0", + "direct_notifications_enabled": "2.0" + } + }, + "GET /quotas/users": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "file_system_ids": "2.0", + "file_system_names": "2.0", + "filter": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "uids": "2.0", + "user_names": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /quotas/users": { + "minVersion": "2.0", + "parameters": { + "file_system_ids": "2.0", + "file_system_names": "2.0", + "uids": "2.0", + "user_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "quota": "2.0" + } + }, + "DELETE /quotas/users": { + "minVersion": "2.0", + "parameters": { + "file_system_names": "2.0", + "file_system_ids": "2.0", + "names": "2.0", + "uids": "2.0", + "user_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /quotas/users": { + "minVersion": "2.0", + "parameters": { + "file_system_names": "2.0", + "file_system_ids": "2.0", + "names": "2.0", + "uids": "2.0", + "user_names": "2.0", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.0", + "quota": "2.0" + } + }, + "GET /roles": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "ids": "2.0", + "filter": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /smtp-servers": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /smtp-servers": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "relay_host": "2.0", + "sender_domain": "2.0", + "encryption_mode": "2.15" + } + }, + "GET /snmp-agents": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /snmp-agents": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "engine_id": "2.0", + "version": "2.0", + "v2c": "2.0", + "v3": "2.0" + } + }, + "GET /snmp-agents/mib": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /snmp-managers": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "ids": "2.0", + "filter": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /snmp-managers": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "host": "2.0", + "notification": "2.0", + "version": "2.0", + "v2c": "2.0", + "v3": "2.0" + } + }, + "PATCH /snmp-managers": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "host": "2.0", + "notification": "2.0", + "version": "2.0", + "v2c": "2.0", + "v3": "2.0" + } + }, + "DELETE /snmp-managers": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /snmp-managers/test": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "ids": "2.0", + "filter": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /subnets": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /subnets": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "enabled": "2.18", + "gateway": "2.18", + "interfaces": "2.18", + "link_aggregation_group": "2.18", + "mtu": "2.18", + "prefix": "2.18", + "services": "2.18", + "vlan": "2.18" + } + }, + "PATCH /subnets": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "enabled": "2.18", + "gateway": "2.18", + "interfaces": "2.18", + "link_aggregation_group": "2.18", + "mtu": "2.18", + "prefix": "2.18", + "services": "2.18", + "vlan": "2.18" + } + }, + "DELETE /subnets": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /support": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /support": { + "minVersion": "2.0", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "phonehome_enabled": "2.0", + "proxy": "2.0", + "remote_assist_active": "2.0", + "remote_assist_opened": "2.0", + "remote_assist_expires": "2.0", + "remote_assist_status": "2.0", + "remote_assist_paths": "2.0", + "remote_assist_duration": "2.14", + "edge_agent_update_enabled": "2.18", + "edge_management_enabled": "2.18" + } + }, + "GET /support/test": { + "minVersion": "2.0", + "parameters": { + "filter": "2.0", + "sort": "2.0", + "test_type": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /syslog-servers": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /syslog-servers": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "uri": "2.14", + "services": "2.14", + "sources": "2.20" + } + }, + "PATCH /syslog-servers": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "uri": "2.14", + "services": "2.14", + "sources": "2.20" + } + }, + "DELETE /syslog-servers": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /syslog-servers/settings": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /syslog-servers/settings": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "ca_certificate": "2.0", + "ca_certificate_group": "2.0" + } + }, + "GET /syslog-servers/test": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /targets": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /targets": { + "minVersion": "2.0", + "parameters": { + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "address": "2.0" + } + }, + "PATCH /targets": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.0", + "id": "2.0", + "address": "2.0", + "ca_certificate_group": "2.0", + "status": "2.0", + "status_details": "2.0" + } + }, + "DELETE /targets": { + "minVersion": "2.0", + "parameters": { + "ids": "2.0", + "names": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /targets/performance/replication": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "end_time": "2.0", + "filter": "2.0", + "ids": "2.0", + "limit": "2.0", + "names": "2.0", + "offset": "2.0", + "resolution": "2.0", + "sort": "2.0", + "start_time": "2.0", + "total_only": "2.0", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /usage/groups": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "file_system_ids": "2.0", + "file_system_names": "2.0", + "filter": "2.0", + "gids": "2.0", + "group_names": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /usage/users": { + "minVersion": "2.0", + "parameters": { + "continuation_token": "2.0", + "file_system_ids": "2.0", + "file_system_names": "2.0", + "filter": "2.0", + "limit": "2.0", + "offset": "2.0", + "sort": "2.0", + "uids": "2.0", + "user_names": "2.0", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/factory-reset-token": { + "minVersion": "2.1", + "parameters": { + "continuation_token": "2.1", + "filter": "2.1", + "limit": "2.1", + "offset": "2.1", + "sort": "2.1", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "DELETE /arrays/factory-reset-token": { + "minVersion": "2.1", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /arrays/factory-reset-token": { + "minVersion": "2.1", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /kmip": { + "minVersion": "2.1", + "parameters": { + "names": "2.1", + "ids": "2.1", + "filter": "2.1", + "limit": "2.1", + "offset": "2.1", + "sort": "2.1", + "continuation_token": "2.1", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /kmip": { + "minVersion": "2.1", + "parameters": { + "names": "2.1", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "ca_certificate": "2.18", + "ca_certificate_group": "2.18", + "uris": "2.18" + } + }, + "PATCH /kmip": { + "minVersion": "2.1", + "parameters": { + "names": "2.1", + "ids": "2.1", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "ca_certificate": "2.18", + "ca_certificate_group": "2.18", + "uris": "2.18" + } + }, + "DELETE /kmip": { + "minVersion": "2.1", + "parameters": { + "names": "2.1", + "ids": "2.1", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /kmip/test": { + "minVersion": "2.1", + "parameters": { + "names": "2.1", + "ids": "2.1", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /rapid-data-locking": { + "minVersion": "2.1", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /rapid-data-locking": { + "minVersion": "2.1", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "enabled": "2.1", + "kmip_server": "2.1" + } + }, + "GET /rapid-data-locking/test": { + "minVersion": "2.1", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /rapid-data-locking/rotate": { + "minVersion": "2.1", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /object-store-access-policies": { + "minVersion": "2.2", + "parameters": { + "enforce_action_restrictions": "2.2", + "names": "2.2", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "rules": "2.2", + "description": "2.2" + } + }, + "PATCH /object-store-access-policies": { + "minVersion": "2.2", + "parameters": { + "enforce_action_restrictions": "2.2", + "ids": "2.2", + "names": "2.2", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "rules": "2.2" + } + }, + "DELETE /object-store-access-policies": { + "minVersion": "2.2", + "parameters": { + "ids": "2.2", + "names": "2.2", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-access-policies/rules": { + "minVersion": "2.2", + "parameters": { + "continuation_token": "2.2", + "filter": "2.2", + "limit": "2.2", + "names": "2.2", + "offset": "2.2", + "policy_ids": "2.2", + "policy_names": "2.2", + "sort": "2.2", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-access-policies/rules": { + "minVersion": "2.2", + "parameters": { + "enforce_action_restrictions": "2.2", + "names": "2.2", + "policy_ids": "2.2", + "policy_names": "2.2", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "actions": "2.2", + "conditions": "2.2", + "resources": "2.2", + "effect": "2.18" + } + }, + "PATCH /object-store-access-policies/rules": { + "minVersion": "2.2", + "parameters": { + "enforce_action_restrictions": "2.2", + "names": "2.2", + "policy_ids": "2.2", + "policy_names": "2.2", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.2", + "actions": "2.2", + "conditions": "2.2", + "effect": "2.2", + "policy": "2.2", + "resources": "2.2" + } + }, + "DELETE /object-store-access-policies/rules": { + "minVersion": "2.2", + "parameters": { + "names": "2.2", + "policy_ids": "2.2", + "policy_names": "2.2", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-access-policy-actions": { + "minVersion": "2.2", + "parameters": { + "continuation_token": "2.2", + "filter": "2.2", + "limit": "2.2", + "names": "2.2", + "offset": "2.2", + "sort": "2.2", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /policies-all": { + "minVersion": "2.2", + "parameters": { + "continuation_token": "2.2", + "filter": "2.2", + "ids": "2.2", + "limit": "2.2", + "names": "2.2", + "offset": "2.2", + "sort": "2.2", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /policies-all/members": { + "minVersion": "2.2", + "parameters": { + "continuation_token": "2.2", + "filter": "2.2", + "limit": "2.2", + "local_file_system_ids": "2.2", + "local_file_system_names": "2.2", + "member_ids": "2.2", + "member_names": "2.2", + "member_types": "2.2", + "offset": "2.2", + "policy_ids": "2.2", + "policy_names": "2.2", + "remote_ids": "2.2", + "remote_file_system_ids": "2.2", + "remote_file_system_names": "2.2", + "remote_names": "2.2", + "sort": "2.2", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /admins/settings": { + "minVersion": "2.3", + "parameters": { + "continuation_token": "2.3", + "filter": "2.3", + "limit": "2.3", + "offset": "2.3", + "sort": "2.3", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /admins/settings": { + "minVersion": "2.3", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "lockout_duration": "2.3", + "max_login_attempts": "2.3", + "min_password_length": "2.3" + } + }, + "GET /file-systems/policies-all": { + "minVersion": "2.3", + "parameters": { + "continuation_token": "2.3", + "filter": "2.3", + "limit": "2.3", + "member_ids": "2.3", + "member_names": "2.3", + "offset": "2.3", + "policy_ids": "2.3", + "policy_names": "2.3", + "sort": "2.3", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /hardware-connectors/performance": { + "minVersion": "2.3", + "parameters": { + "end_time": "2.3", + "filter": "2.3", + "ids": "2.3", + "limit": "2.3", + "names": "2.3", + "offset": "2.3", + "resolution": "2.3", + "sort": "2.3", + "start_time": "2.3", + "total_only": "2.3", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /nfs-export-policies": { + "minVersion": "2.3", + "parameters": { + "continuation_token": "2.3", + "filter": "2.3", + "ids": "2.3", + "limit": "2.3", + "names": "2.3", + "offset": "2.3", + "sort": "2.3", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17", + "workload_ids": "2.23", + "workload_names": "2.23" + }, + "bodyProperties": {} + }, + "POST /nfs-export-policies": { + "minVersion": "2.3", + "parameters": { + "names": "2.3", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.3", + "id": "2.3", + "enabled": "2.3", + "is_local": "2.3", + "location": "2.3", + "policy_type": "2.3", + "rules": "2.3", + "version": "2.3", + "realms": "2.19" + } + }, + "PATCH /nfs-export-policies": { + "minVersion": "2.3", + "parameters": { + "ids": "2.3", + "names": "2.3", + "versions": "2.3", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.3", + "id": "2.3", + "enabled": "2.3", + "is_local": "2.3", + "location": "2.3", + "policy_type": "2.3", + "rules": "2.3", + "version": "2.3", + "context": "2.17", + "realms": "2.19" + } + }, + "DELETE /nfs-export-policies": { + "minVersion": "2.3", + "parameters": { + "ids": "2.3", + "names": "2.3", + "versions": "2.3", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /nfs-export-policies/rules": { + "minVersion": "2.3", + "parameters": { + "continuation_token": "2.3", + "filter": "2.3", + "ids": "2.3", + "limit": "2.3", + "names": "2.3", + "offset": "2.3", + "policy_ids": "2.3", + "policy_names": "2.3", + "sort": "2.3", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /nfs-export-policies/rules": { + "minVersion": "2.3", + "parameters": { + "before_rule_id": "2.3", + "before_rule_name": "2.3", + "policy_ids": "2.3", + "policy_names": "2.3", + "versions": "2.3", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "access": "2.18", + "anongid": "2.18", + "anonuid": "2.18", + "atime": "2.18", + "client": "2.18", + "fileid_32bit": "2.18", + "permission": "2.18", + "policy": "2.18", + "policy_version": "2.18", + "required_transport_security": "2.18", + "secure": "2.18", + "security": "2.18", + "index": "2.18", + "context": "2.18" + } + }, + "DELETE /nfs-export-policies/rules": { + "minVersion": "2.3", + "parameters": { + "ids": "2.3", + "names": "2.3", + "versions": "2.3", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /nfs-export-policies/rules": { + "minVersion": "2.3", + "parameters": { + "before_rule_id": "2.3", + "before_rule_name": "2.3", + "ids": "2.3", + "names": "2.3", + "versions": "2.3", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "access": "2.18", + "anongid": "2.18", + "anonuid": "2.18", + "atime": "2.18", + "client": "2.18", + "fileid_32bit": "2.18", + "permission": "2.18", + "policy": "2.18", + "policy_version": "2.18", + "required_transport_security": "2.18", + "secure": "2.18", + "security": "2.18", + "index": "2.18", + "context": "2.18" + } + }, + "GET /sessions": { + "minVersion": "2.3", + "parameters": { + "continuation_token": "2.3", + "filter": "2.3", + "ids": "2.3", + "limit": "2.3", + "names": "2.3", + "offset": "2.3", + "sort": "2.3", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /drives": { + "minVersion": "2.4", + "parameters": { + "continuation_token": "2.4", + "filter": "2.4", + "ids": "2.4", + "limit": "2.4", + "names": "2.4", + "offset": "2.4", + "sort": "2.4", + "total_only": "2.4", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /logs-async": { + "minVersion": "2.4", + "parameters": { + "continuation_token": "2.4", + "filter": "2.4", + "ids": "2.4", + "limit": "2.4", + "names": "2.4", + "offset": "2.4", + "sort": "2.4", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /logs-async": { + "minVersion": "2.4", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.4", + "id": "2.4", + "start_time": "2.4", + "end_time": "2.4", + "last_request_time": "2.4", + "processing": "2.4", + "progress": "2.4", + "hardware_components": "2.4", + "available_files": "2.4" + } + }, + "GET /logs-async/download": { + "minVersion": "2.4", + "parameters": { + "names": "2.4", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /network-interfaces/ping": { + "minVersion": "2.6", + "parameters": { + "packet_size": "2.6", + "count": "2.6", + "component_name": "2.6", + "destination": "2.6", + "source": "2.6", + "print_latency": "2.6", + "resolve_hostname": "2.6", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /network-interfaces/trace": { + "minVersion": "2.6", + "parameters": { + "fragment_packet": "2.6", + "method": "2.6", + "discover_mtu": "2.6", + "component_name": "2.6", + "destination": "2.6", + "source": "2.6", + "port": "2.6", + "resolve_hostname": "2.6", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /support/verification-keys": { + "minVersion": "2.7", + "parameters": { + "continuation_token": "2.7", + "filter": "2.7", + "limit": "2.7", + "offset": "2.7", + "sort": "2.7", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /support/verification-keys": { + "minVersion": "2.7", + "parameters": { + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "signed_verification_key": "2.7" + } + }, + "GET /file-systems/locks": { + "minVersion": "2.8", + "parameters": { + "continuation_token": "2.8", + "client_names": "2.8", + "file_system_ids": "2.8", + "file_system_names": "2.8", + "filter": "2.8", + "inodes": "2.8", + "limit": "2.8", + "names": "2.8", + "paths": "2.8", + "X-Request-ID": "2.14", + "allow_errors": "2.22", + "context_names": "2.22" + }, + "bodyProperties": {} + }, + "DELETE /file-systems/locks": { + "minVersion": "2.8", + "parameters": { + "client_names": "2.8", + "names": "2.8", + "file_system_ids": "2.10", + "file_system_names": "2.10", + "inodes": "2.10", + "paths": "2.10", + "recursive": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.22" + }, + "bodyProperties": {} + }, + "GET /file-systems/locks/clients": { + "minVersion": "2.8", + "parameters": { + "continuation_token": "2.8", + "filter": "2.8", + "limit": "2.8", + "X-Request-ID": "2.14", + "allow_errors": "2.22", + "context_names": "2.22" + }, + "bodyProperties": {} + }, + "POST /file-systems/locks/nlm-reclamations": { + "minVersion": "2.8", + "parameters": { + "X-Request-ID": "2.14", + "context_names": "2.22" + }, + "bodyProperties": {} + }, + "PATCH /object-store-accounts": { + "minVersion": "2.8", + "parameters": { + "ids": "2.8", + "ignore_usage": "2.8", + "names": "2.8", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "bucket_defaults": "2.8", + "hard_limit_enabled": "2.8", + "quota_limit": "2.8", + "public_access_config": "2.12" + } + }, + "DELETE /file-system-replica-links": { + "minVersion": "2.10", + "parameters": { + "ids": "2.10", + "local_file_system_ids": "2.10", + "local_file_system_names": "2.10", + "remote_file_system_ids": "2.10", + "remote_file_system_names": "2.10", + "remote_ids": "2.10", + "remote_names": "2.10", + "cancel_in_progress_transfers": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /file-systems/sessions": { + "minVersion": "2.10", + "parameters": { + "continuation_token": "2.10", + "client_names": "2.10", + "limit": "2.10", + "names": "2.10", + "protocols": "2.10", + "user_names": "2.10", + "X-Request-ID": "2.14", + "allow_errors": "2.22", + "context_names": "2.22" + }, + "bodyProperties": {} + }, + "DELETE /file-systems/sessions": { + "minVersion": "2.10", + "parameters": { + "client_names": "2.10", + "disruptive": "2.10", + "names": "2.10", + "protocols": "2.10", + "user_names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.22" + }, + "bodyProperties": {} + }, + "GET /smb-client-policies": { + "minVersion": "2.10", + "parameters": { + "continuation_token": "2.10", + "filter": "2.10", + "ids": "2.10", + "limit": "2.10", + "names": "2.10", + "offset": "2.10", + "sort": "2.10", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17", + "workload_ids": "2.23", + "workload_names": "2.23" + }, + "bodyProperties": {} + }, + "POST /smb-client-policies": { + "minVersion": "2.10", + "parameters": { + "names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.10", + "id": "2.10", + "enabled": "2.10", + "is_local": "2.10", + "location": "2.10", + "policy_type": "2.10", + "rules": "2.10", + "access_based_enumeration_enabled": "2.17", + "realms": "2.19" + } + }, + "PATCH /smb-client-policies": { + "minVersion": "2.10", + "parameters": { + "ids": "2.10", + "names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.10", + "id": "2.10", + "enabled": "2.10", + "is_local": "2.10", + "location": "2.10", + "policy_type": "2.10", + "version": "2.10", + "rules": "2.10", + "context": "2.17", + "access_based_enumeration_enabled": "2.17", + "realms": "2.19" + } + }, + "DELETE /smb-client-policies": { + "minVersion": "2.10", + "parameters": { + "ids": "2.10", + "names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /smb-client-policies/rules": { + "minVersion": "2.10", + "parameters": { + "continuation_token": "2.10", + "filter": "2.10", + "ids": "2.10", + "limit": "2.10", + "names": "2.10", + "offset": "2.10", + "policy_ids": "2.10", + "policy_names": "2.10", + "sort": "2.10", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /smb-client-policies/rules": { + "minVersion": "2.10", + "parameters": { + "before_rule_id": "2.10", + "before_rule_name": "2.10", + "policy_ids": "2.10", + "policy_names": "2.10", + "versions": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.10", + "id": "2.10", + "client": "2.10", + "permission": "2.10", + "index": "2.10", + "encryption": "2.11" + } + }, + "PATCH /smb-client-policies/rules": { + "minVersion": "2.10", + "parameters": { + "before_rule_id": "2.10", + "before_rule_name": "2.10", + "ids": "2.10", + "names": "2.10", + "versions": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.10", + "id": "2.10", + "client": "2.10", + "permission": "2.10", + "policy": "2.10", + "policy_version": "2.10", + "index": "2.10", + "encryption": "2.11", + "context": "2.17" + } + }, + "DELETE /smb-client-policies/rules": { + "minVersion": "2.10", + "parameters": { + "ids": "2.10", + "names": "2.10", + "versions": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /smb-share-policies": { + "minVersion": "2.10", + "parameters": { + "continuation_token": "2.10", + "filter": "2.10", + "ids": "2.10", + "limit": "2.10", + "names": "2.10", + "offset": "2.10", + "sort": "2.10", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17", + "workload_ids": "2.23", + "workload_names": "2.23" + }, + "bodyProperties": {} + }, + "POST /smb-share-policies": { + "minVersion": "2.10", + "parameters": { + "names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.10", + "id": "2.10", + "enabled": "2.10", + "is_local": "2.10", + "location": "2.10", + "policy_type": "2.10", + "rules": "2.10", + "realms": "2.19" + } + }, + "PATCH /smb-share-policies": { + "minVersion": "2.10", + "parameters": { + "ids": "2.10", + "names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.10", + "id": "2.10", + "enabled": "2.10", + "is_local": "2.10", + "location": "2.10", + "policy_type": "2.10", + "rules": "2.10", + "context": "2.17", + "realms": "2.19" + } + }, + "DELETE /smb-share-policies": { + "minVersion": "2.10", + "parameters": { + "ids": "2.10", + "names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /smb-share-policies/rules": { + "minVersion": "2.10", + "parameters": { + "continuation_token": "2.10", + "filter": "2.10", + "ids": "2.10", + "limit": "2.10", + "names": "2.10", + "offset": "2.10", + "policy_ids": "2.10", + "policy_names": "2.10", + "sort": "2.10", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /smb-share-policies/rules": { + "minVersion": "2.10", + "parameters": { + "policy_ids": "2.10", + "policy_names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.10", + "id": "2.10", + "change": "2.10", + "full_control": "2.10", + "principal": "2.10", + "read": "2.10" + } + }, + "PATCH /smb-share-policies/rules": { + "minVersion": "2.10", + "parameters": { + "ids": "2.10", + "names": "2.10", + "policy_ids": "2.10", + "policy_names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.10", + "id": "2.10", + "change": "2.10", + "full_control": "2.10", + "policy": "2.10", + "principal": "2.10", + "read": "2.10" + } + }, + "DELETE /smb-share-policies/rules": { + "minVersion": "2.10", + "parameters": { + "ids": "2.10", + "names": "2.10", + "policy_ids": "2.10", + "policy_names": "2.10", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /buckets/cross-origin-resource-sharing-policies": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "continuation_token": "2.12", + "filter": "2.12", + "limit": "2.12", + "names": "2.12", + "offset": "2.12", + "sort": "2.12", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /buckets/cross-origin-resource-sharing-policies": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "rules": "2.12" + } + }, + "DELETE /buckets/cross-origin-resource-sharing-policies": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "names": "2.12", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /buckets/cross-origin-resource-sharing-policies/rules": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "continuation_token": "2.12", + "filter": "2.12", + "limit": "2.12", + "names": "2.12", + "offset": "2.12", + "policy_names": "2.12", + "sort": "2.12", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /buckets/cross-origin-resource-sharing-policies/rules": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "names": "2.12", + "policy_names": "2.12", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "allowed_headers": "2.12", + "allowed_methods": "2.12", + "allowed_origins": "2.12" + } + }, + "DELETE /buckets/cross-origin-resource-sharing-policies/rules": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "names": "2.12", + "policy_names": "2.12", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /buckets/bucket-access-policies": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "continuation_token": "2.12", + "filter": "2.12", + "limit": "2.12", + "names": "2.12", + "offset": "2.12", + "sort": "2.12", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /buckets/bucket-access-policies": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "rules": "2.12" + } + }, + "DELETE /buckets/bucket-access-policies": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "names": "2.12", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /buckets/bucket-access-policies/rules": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "continuation_token": "2.12", + "filter": "2.12", + "limit": "2.12", + "names": "2.12", + "offset": "2.12", + "policy_names": "2.12", + "sort": "2.12", + "X-Request-ID": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /buckets/bucket-access-policies/rules": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "names": "2.12", + "policy_names": "2.12", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "actions": "2.12", + "effect": "2.12", + "principals": "2.12", + "resources": "2.12" + } + }, + "DELETE /buckets/bucket-access-policies/rules": { + "minVersion": "2.12", + "parameters": { + "bucket_ids": "2.12", + "bucket_names": "2.12", + "names": "2.12", + "policy_names": "2.12", + "X-Request-ID": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /network-access-policies": { + "minVersion": "2.13", + "parameters": { + "continuation_token": "2.13", + "filter": "2.13", + "ids": "2.13", + "limit": "2.13", + "names": "2.13", + "offset": "2.13", + "sort": "2.13", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /network-access-policies": { + "minVersion": "2.13", + "parameters": { + "ids": "2.13", + "names": "2.13", + "versions": "2.13", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.13", + "id": "2.13", + "enabled": "2.13", + "is_local": "2.13", + "location": "2.13", + "policy_type": "2.13", + "version": "2.13", + "rules": "2.13", + "realms": "2.19" + } + }, + "GET /network-access-policies/members": { + "minVersion": "2.13", + "parameters": { + "continuation_token": "2.13", + "filter": "2.13", + "limit": "2.13", + "member_ids": "2.13", + "member_names": "2.13", + "offset": "2.13", + "policy_ids": "2.13", + "policy_names": "2.13", + "sort": "2.13", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /network-access-policies/rules": { + "minVersion": "2.13", + "parameters": { + "continuation_token": "2.13", + "filter": "2.13", + "ids": "2.13", + "limit": "2.13", + "names": "2.13", + "offset": "2.13", + "policy_ids": "2.13", + "policy_names": "2.13", + "sort": "2.13", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "POST /network-access-policies/rules": { + "minVersion": "2.13", + "parameters": { + "before_rule_id": "2.13", + "before_rule_name": "2.13", + "policy_ids": "2.13", + "policy_names": "2.13", + "versions": "2.13", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.13", + "id": "2.13", + "effect": "2.13", + "client": "2.13", + "interfaces": "2.13", + "index": "2.13" + } + }, + "PATCH /network-access-policies/rules": { + "minVersion": "2.13", + "parameters": { + "before_rule_id": "2.13", + "before_rule_name": "2.13", + "ids": "2.13", + "names": "2.13", + "versions": "2.13", + "X-Request-ID": "2.14" + }, + "bodyProperties": { + "name": "2.13", + "id": "2.13", + "effect": "2.13", + "client": "2.13", + "interfaces": "2.13", + "policy": "2.13", + "policy_version": "2.13", + "index": "2.13" + } + }, + "DELETE /network-access-policies/rules": { + "minVersion": "2.13", + "parameters": { + "ids": "2.13", + "names": "2.13", + "versions": "2.13", + "X-Request-ID": "2.14" + }, + "bodyProperties": {} + }, + "GET /admins/ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "limit": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "offset": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "sort": "2.14", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /admins/ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "DELETE /admins/ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /arrays/ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "limit": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "offset": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "sort": "2.14", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /arrays/ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "DELETE /arrays/ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /audit-file-systems-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "ids": "2.14", + "limit": "2.14", + "names": "2.14", + "offset": "2.14", + "sort": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /audit-file-systems-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "names": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.14", + "id": "2.14", + "enabled": "2.14", + "is_local": "2.14", + "location": "2.14", + "policy_type": "2.14", + "log_targets": "2.14", + "control_type": "2.18", + "rules": "2.18", + "realms": "2.19" + } + }, + "PATCH /audit-file-systems-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "ids": "2.14", + "names": "2.14", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.14", + "id": "2.14", + "enabled": "2.14", + "is_local": "2.14", + "location": "2.14", + "policy_type": "2.14", + "log_targets": "2.14", + "add_log_targets": "2.14", + "remove_log_targets": "2.14", + "rules": "2.18", + "realms": "2.19", + "control_type": "2.25" + } + }, + "DELETE /audit-file-systems-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "ids": "2.14", + "names": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /audit-file-systems-policies/members": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "limit": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "offset": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "sort": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /audit-file-systems-policies/members": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /audit-file-systems-policies/members": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /directory-services/roles": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "names": "2.14" + }, + "bodyProperties": { + "group": "2.18", + "group_base": "2.18", + "id": "2.18", + "name": "2.18", + "role": "2.18", + "management_access_policies": "2.19" + } + }, + "DELETE /directory-services/roles": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "names": "2.14", + "ids": "2.14" + }, + "bodyProperties": {} + }, + "GET /file-systems/audit-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "limit": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "offset": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "sort": "2.14", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /file-systems/audit-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /file-systems/audit-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /public-keys": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "ids": "2.14", + "names": "2.14", + "limit": "2.14", + "offset": "2.14", + "sort": "2.14" + }, + "bodyProperties": {} + }, + "POST /public-keys": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "names": "2.14" + }, + "bodyProperties": { + "public_key": "2.14" + } + }, + "DELETE /public-keys": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "ids": "2.14", + "names": "2.14" + }, + "bodyProperties": {} + }, + "GET /public-keys/uses": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "ids": "2.14", + "limit": "2.14", + "names": "2.14", + "offset": "2.14", + "sort": "2.14" + }, + "bodyProperties": {} + }, + "GET /ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "ids": "2.14", + "names": "2.14", + "limit": "2.14", + "offset": "2.14", + "sort": "2.14", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "names": "2.14" + }, + "bodyProperties": { + "name": "2.14", + "id": "2.14", + "enabled": "2.14", + "is_local": "2.14", + "location": "2.14", + "policy_type": "2.14", + "signing_authority": "2.14", + "static_authorized_principals": "2.14", + "realms": "2.19" + } + }, + "DELETE /ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "ids": "2.14", + "names": "2.14" + }, + "bodyProperties": {} + }, + "PATCH /ssh-certificate-authority-policies": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "ids": "2.14", + "names": "2.14" + }, + "bodyProperties": { + "policy_type": "2.14", + "name": "2.14", + "id": "2.14", + "signing_authority": "2.14", + "static_authorized_principals": "2.14", + "enabled": "2.14", + "is_local": "2.14", + "location": "2.14", + "realms": "2.19", + "context": "2.24" + } + }, + "GET /ssh-certificate-authority-policies/admins": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "limit": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "offset": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "sort": "2.14", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /ssh-certificate-authority-policies/admins": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "DELETE /ssh-certificate-authority-policies/admins": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /ssh-certificate-authority-policies/arrays": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "limit": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "offset": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "sort": "2.14", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /ssh-certificate-authority-policies/arrays": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "DELETE /ssh-certificate-authority-policies/arrays": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /ssh-certificate-authority-policies/members": { + "minVersion": "2.14", + "parameters": { + "X-Request-ID": "2.14", + "continuation_token": "2.14", + "filter": "2.14", + "limit": "2.14", + "member_ids": "2.14", + "member_names": "2.14", + "offset": "2.14", + "policy_ids": "2.14", + "policy_names": "2.14", + "sort": "2.14", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /admins": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "names": "2.15", + "context_names": "2.24" + }, + "bodyProperties": { + "password": "2.15", + "public_key": "2.15", + "role": "2.15", + "management_access_policies": "2.19", + "admin_type": "2.26" + } + }, + "DELETE /admins": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "ids": "2.15", + "names": "2.15", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /file-systems/worm-data-policies": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "continuation_token": "2.15", + "filter": "2.15", + "limit": "2.15", + "member_ids": "2.15", + "member_names": "2.15", + "offset": "2.15", + "policy_ids": "2.15", + "policy_names": "2.15", + "sort": "2.15", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /sso/saml2/idps": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "continuation_token": "2.15", + "filter": "2.15", + "ids": "2.15", + "names": "2.15", + "limit": "2.15", + "offset": "2.15", + "sort": "2.15" + }, + "bodyProperties": {} + }, + "POST /sso/saml2/idps": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "names": "2.15" + }, + "bodyProperties": { + "name": "2.15", + "id": "2.15", + "enabled": "2.15", + "array_url": "2.15", + "sp": "2.15", + "idp": "2.15", + "binding": "2.17", + "services": "2.17", + "prn": "2.17", + "management": "2.24" + } + }, + "DELETE /sso/saml2/idps": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "ids": "2.15", + "names": "2.15" + }, + "bodyProperties": {} + }, + "PATCH /sso/saml2/idps": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "ids": "2.15", + "names": "2.15" + }, + "bodyProperties": { + "name": "2.15", + "id": "2.15", + "enabled": "2.15", + "array_url": "2.15", + "sp": "2.15", + "idp": "2.15", + "binding": "2.18", + "prn": "2.18", + "services": "2.18", + "management": "2.24" + } + }, + "GET /worm-data-policies": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "continuation_token": "2.15", + "filter": "2.15", + "limit": "2.15", + "offset": "2.15", + "ids": "2.15", + "names": "2.15", + "sort": "2.15", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /worm-data-policies": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "names": "2.15", + "context_names": "2.17" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "enabled": "2.18", + "is_local": "2.18", + "location": "2.18", + "policy_type": "2.18", + "default_retention": "2.18", + "max_retention": "2.18", + "min_retention": "2.18", + "mode": "2.18", + "retention_lock": "2.18", + "context": "2.18", + "realms": "2.19" + } + }, + "PATCH /worm-data-policies": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "ids": "2.15", + "names": "2.15", + "context_names": "2.17" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "enabled": "2.18", + "is_local": "2.18", + "location": "2.18", + "policy_type": "2.18", + "default_retention": "2.18", + "max_retention": "2.18", + "min_retention": "2.18", + "mode": "2.18", + "retention_lock": "2.18", + "context": "2.18", + "realms": "2.19" + } + }, + "DELETE /worm-data-policies": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "ids": "2.15", + "names": "2.15", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /worm-data-policies/members": { + "minVersion": "2.15", + "parameters": { + "X-Request-ID": "2.15", + "continuation_token": "2.15", + "filter": "2.15", + "limit": "2.15", + "member_ids": "2.15", + "member_names": "2.15", + "offset": "2.15", + "policy_ids": "2.15", + "policy_names": "2.15", + "sort": "2.15", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/space/storage-classes": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "continuation_token": "2.16", + "end_time": "2.16", + "filter": "2.16", + "limit": "2.16", + "offset": "2.16", + "resolution": "2.16", + "sort": "2.16", + "start_time": "2.16", + "storage_class_names": "2.16", + "total_only": "2.16" + }, + "bodyProperties": {} + }, + "POST /dns": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "names": "2.16", + "context_names": "2.25" + }, + "bodyProperties": { + "name": "2.16", + "id": "2.16", + "domain": "2.16", + "nameservers": "2.16", + "services": "2.16", + "sources": "2.16", + "ca_certificate": "2.25", + "ca_certificate_group": "2.25" + } + }, + "DELETE /dns": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "ids": "2.16", + "names": "2.16", + "context_names": "2.25" + }, + "bodyProperties": {} + }, + "GET /file-system-exports": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "continuation_token": "2.16", + "filter": "2.16", + "ids": "2.16", + "limit": "2.16", + "names": "2.16", + "offset": "2.16", + "sort": "2.16", + "allow_errors": "2.17", + "context_names": "2.17", + "workload_ids": "2.23", + "workload_names": "2.23" + }, + "bodyProperties": {} + }, + "POST /file-system-exports": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "member_ids": "2.16", + "member_names": "2.16", + "policy_ids": "2.16", + "policy_names": "2.16", + "context_names": "2.17" + }, + "bodyProperties": { + "export_name": "2.16", + "server": "2.16", + "share_policy": "2.16" + } + }, + "PATCH /file-system-exports": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "ids": "2.16", + "names": "2.16", + "context_names": "2.17" + }, + "bodyProperties": { + "name": "2.16", + "id": "2.16", + "enabled": "2.16", + "export_name": "2.16", + "member": "2.16", + "policy": "2.16", + "server": "2.16", + "share_policy": "2.16", + "status": "2.16", + "policy_type": "2.16", + "context": "2.17" + } + }, + "DELETE /file-system-exports": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "ids": "2.16", + "names": "2.16", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /maintenance-windows": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "continuation_token": "2.16", + "filter": "2.16", + "ids": "2.16", + "limit": "2.16", + "names": "2.16", + "offset": "2.16", + "sort": "2.16" + }, + "bodyProperties": {} + }, + "POST /maintenance-windows": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "names": "2.16" + }, + "bodyProperties": { + "timeout": "2.16" + } + }, + "DELETE /maintenance-windows": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "ids": "2.16", + "names": "2.16" + }, + "bodyProperties": {} + }, + "GET /password-policies": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "continuation_token": "2.16", + "filter": "2.16", + "ids": "2.16", + "limit": "2.16", + "names": "2.16", + "offset": "2.16", + "sort": "2.16" + }, + "bodyProperties": {} + }, + "PATCH /password-policies": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "ids": "2.16", + "names": "2.16" + }, + "bodyProperties": { + "policy_type": "2.16", + "lockout_duration": "2.16", + "max_login_attempts": "2.16", + "min_password_length": "2.16", + "password_history": "2.16", + "min_password_age": "2.16", + "min_character_groups": "2.16", + "min_characters_per_group": "2.16", + "enforce_username_check": "2.16", + "enforce_dictionary_check": "2.16", + "name": "2.17", + "id": "2.17", + "location": "2.17", + "is_local": "2.17", + "enabled": "2.17", + "max_password_age": "2.18", + "realms": "2.19" + } + }, + "GET /sso/saml2/idps/test": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "filter": "2.16", + "ids": "2.16", + "limit": "2.16", + "names": "2.16", + "sort": "2.16" + }, + "bodyProperties": {} + }, + "PATCH /sso/saml2/idps/test": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "ids": "2.16", + "names": "2.16" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "array_url": "2.18", + "binding": "2.18", + "enabled": "2.18", + "idp": "2.18", + "prn": "2.18", + "services": "2.18", + "sp": "2.18", + "management": "2.24" + } + }, + "GET /servers": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "continuation_token": "2.16", + "filter": "2.16", + "ids": "2.16", + "limit": "2.16", + "names": "2.16", + "offset": "2.16", + "sort": "2.16", + "allow_errors": "2.17", + "context_names": "2.17" + }, + "bodyProperties": {} + }, + "POST /servers": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "create_ds": "2.16", + "names": "2.16", + "create_local_directory_service": "2.24" + }, + "bodyProperties": { + "directory_services": "2.18", + "dns": "2.18", + "local_directory_service": "2.24" + } + }, + "PATCH /servers": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "ids": "2.16", + "names": "2.16" + }, + "bodyProperties": { + "directory_services": "2.18", + "dns": "2.18", + "local_directory_service": "2.24" + } + }, + "DELETE /servers": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "cascade_delete": "2.16", + "ids": "2.16", + "names": "2.16" + }, + "bodyProperties": {} + }, + "GET /support-diagnostics": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "continuation_token": "2.16", + "filter": "2.16", + "ids": "2.16", + "limit": "2.16", + "names": "2.16", + "offset": "2.16", + "sort": "2.16" + }, + "bodyProperties": {} + }, + "POST /support-diagnostics": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "analysis_period_start_time": "2.16", + "analysis_period_end_time": "2.16" + }, + "bodyProperties": {} + }, + "GET /support-diagnostics/details": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "continuation_token": "2.16", + "filter": "2.16", + "ids": "2.16", + "limit": "2.16", + "names": "2.16", + "offset": "2.16", + "sort": "2.16" + }, + "bodyProperties": {} + }, + "GET /software-check": { + "minVersion": "2.16", + "parameters": { + "filter": "2.16", + "ids": "2.16", + "limit": "2.16", + "names": "2.16", + "offset": "2.16", + "software_versions": "2.16", + "software_names": "2.16", + "sort": "2.16", + "total_item_count": "2.16" + }, + "bodyProperties": {} + }, + "POST /software-check": { + "minVersion": "2.16", + "parameters": { + "X-Request-ID": "2.16", + "software_versions": "2.16", + "software_names": "2.16" + }, + "bodyProperties": {} + }, + "GET /qos-policies/file-systems": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "offset": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17", + "sort": "2.17", + "allow_errors": "2.23", + "context_names": "2.23" + }, + "bodyProperties": {} + }, + "GET /tls-policies/network-interfaces": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "offset": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /tls-policies/network-interfaces": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /tls-policies/network-interfaces": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /legal-holds": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /legal-holds": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "description": "2.18", + "realms": "2.19" + } + }, + "DELETE /legal-holds": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /legal-holds": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "description": "2.18", + "realms": "2.19" + } + }, + "GET /fleets/members": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "fleet_ids": "2.17", + "fleet_names": "2.17", + "limit": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "offset": "2.17", + "sort": "2.17", + "total_only": "2.17" + }, + "bodyProperties": {} + }, + "POST /fleets/members": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "fleet_ids": "2.17", + "fleet_names": "2.17" + }, + "bodyProperties": { + "members": "2.17" + } + }, + "DELETE /fleets/members": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "unreachable": "2.17" + }, + "bodyProperties": {} + }, + "GET /tls-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "effective": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "purity_defined": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /tls-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "name": "2.17", + "id": "2.17", + "policy_type": "2.17", + "location": "2.17", + "is_local": "2.17", + "enabled": "2.17", + "enabled_tls_ciphers": "2.17", + "appliance_certificate": "2.17", + "min_tls_version": "2.17", + "disabled_tls_ciphers": "2.17", + "client_certificates_required": "2.18", + "trusted_client_certificate_authority": "2.18", + "verify_client_certificate_trust": "2.18", + "realms": "2.19" + } + }, + "DELETE /tls-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /tls-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "name": "2.17", + "id": "2.17", + "policy_type": "2.17", + "location": "2.17", + "is_local": "2.17", + "enabled": "2.17", + "enabled_tls_ciphers": "2.17", + "appliance_certificate": "2.17", + "min_tls_version": "2.17", + "disabled_tls_ciphers": "2.17", + "client_certificates_required": "2.18", + "trusted_client_certificate_authority": "2.18", + "verify_client_certificate_trust": "2.18", + "realms": "2.19" + } + }, + "GET /qos-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "sort": "2.17", + "allow_errors": "2.23", + "context_names": "2.23" + }, + "bodyProperties": {} + }, + "POST /qos-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "names": "2.17", + "context_names": "2.23" + }, + "bodyProperties": { + "name": "2.17", + "id": "2.17", + "policy_type": "2.17", + "location": "2.17", + "is_local": "2.17", + "enabled": "2.17", + "max_total_bytes_per_sec": "2.17", + "max_total_ops_per_sec": "2.17", + "realms": "2.19", + "context": "2.23" + } + }, + "DELETE /qos-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17", + "context_names": "2.23" + }, + "bodyProperties": {} + }, + "PATCH /qos-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17", + "context_names": "2.23" + }, + "bodyProperties": { + "name": "2.17", + "id": "2.17", + "policy_type": "2.17", + "location": "2.17", + "is_local": "2.17", + "enabled": "2.17", + "max_total_bytes_per_sec": "2.17", + "max_total_ops_per_sec": "2.17", + "realms": "2.19", + "context": "2.23" + } + }, + "GET /fleets/fleet-key": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "offset": "2.17", + "sort": "2.17", + "total_only": "2.17" + }, + "bodyProperties": {} + }, + "POST /fleets/fleet-key": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17" + }, + "bodyProperties": {} + }, + "GET /tls-policies/members": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "offset": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-roles": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "allow_errors": "2.17", + "context_names": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-roles": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "max_session_duration": "2.17" + } + }, + "DELETE /object-store-roles": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /object-store-roles": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "name": "2.17", + "id": "2.17", + "context": "2.17", + "trusted_entities": "2.17", + "created": "2.17", + "prn": "2.17", + "account": "2.17", + "max_session_duration": "2.17" + } + }, + "GET /object-store-access-policies/object-store-roles": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "allow_errors": "2.17", + "context_names": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "offset": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-access-policies/object-store-roles": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /object-store-access-policies/object-store-roles": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /file-systems/open-files": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "client_names": "2.17", + "continuation_token": "2.17", + "file_system_ids": "2.17", + "file_system_names": "2.17", + "ids": "2.17", + "limit": "2.17", + "paths": "2.17", + "protocols": "2.17", + "session_names": "2.17", + "user_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /file-systems/open-files": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17" + }, + "bodyProperties": {} + }, + "GET /remote-arrays": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "current_fleet_only": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "sort": "2.17", + "total_only": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /file-system-replica-links": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "ids": "2.17", + "local_file_system_ids": "2.17", + "local_file_system_names": "2.17", + "remote_ids": "2.17", + "remote_names": "2.17", + "replicate_now": "2.17" + }, + "bodyProperties": {} + }, + "GET /network-interfaces/connectors/performance": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "end_time": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "resolution": "2.17", + "sort": "2.17", + "start_time": "2.17", + "total_only": "2.17" + }, + "bodyProperties": {} + }, + "GET /fleets": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "sort": "2.17", + "total_only": "2.17" + }, + "bodyProperties": {} + }, + "POST /fleets": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /fleets": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /fleets": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "name": "2.17" + } + }, + "GET /qos-policies/members": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "offset": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17", + "sort": "2.17", + "member_types": "2.20", + "allow_errors": "2.23", + "context_names": "2.23" + }, + "bodyProperties": {} + }, + "GET /network-interfaces/connectors": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /network-interfaces/connectors": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "connector_type": "2.18", + "lane_speed": "2.18", + "port_count": "2.18", + "port_speed": "2.18", + "transceiver_type": "2.18", + "lanes_per_port": "2.20" + } + }, + "GET /sso/oidc/idps": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /sso/oidc/idps": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "idp": "2.17", + "services": "2.17", + "prn": "2.17", + "enabled": "2.17" + } + }, + "DELETE /sso/oidc/idps": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /sso/oidc/idps": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "ids": "2.17", + "names": "2.17" + }, + "bodyProperties": { + "idp": "2.17", + "services": "2.17", + "prn": "2.17", + "enabled": "2.17", + "name": "2.17" + } + }, + "GET /object-store-roles/object-store-access-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "allow_errors": "2.17", + "context_names": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "offset": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-roles/object-store-access-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /object-store-roles/object-store-access-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-roles/object-store-trust-policies/rules": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "allow_errors": "2.17", + "context_names": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "indices": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "policy_names": "2.17", + "role_ids": "2.17", + "role_names": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /object-store-roles/object-store-trust-policies/rules": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "names": "2.17", + "policy_names": "2.17", + "role_ids": "2.17", + "role_names": "2.17" + }, + "bodyProperties": { + "actions": "2.18", + "conditions": "2.18", + "effect": "2.18", + "policy": "2.18", + "principals": "2.18" + } + }, + "DELETE /object-store-roles/object-store-trust-policies/rules": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "indices": "2.17", + "names": "2.17", + "policy_names": "2.17", + "role_ids": "2.17", + "role_names": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /object-store-roles/object-store-trust-policies/rules": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "indices": "2.17", + "names": "2.17", + "policy_names": "2.17", + "role_ids": "2.17", + "role_names": "2.17" + }, + "bodyProperties": { + "actions": "2.18", + "conditions": "2.18", + "effect": "2.18", + "policy": "2.18", + "principals": "2.18" + } + }, + "PATCH /object-store-roles/object-store-trust-policies/upload": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "context_names": "2.17", + "names": "2.17", + "role_ids": "2.17", + "role_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-roles/object-store-trust-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "allow_errors": "2.17", + "context_names": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "role_ids": "2.17", + "role_names": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "GET /network-interfaces/tls-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "limit": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "offset": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "POST /network-interfaces/tls-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17" + }, + "bodyProperties": {} + }, + "DELETE /network-interfaces/tls-policies": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "member_ids": "2.17", + "member_names": "2.17", + "policy_ids": "2.17", + "policy_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /object-store-roles/object-store-trust-policies/download": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "names": "2.17", + "role_ids": "2.17", + "role_names": "2.17" + }, + "bodyProperties": {} + }, + "GET /network-interfaces/connectors/settings": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "filter": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "offset": "2.17", + "sort": "2.17" + }, + "bodyProperties": {} + }, + "GET /legal-holds/held-entities": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "continuation_token": "2.17", + "file_system_ids": "2.17", + "file_system_names": "2.17", + "ids": "2.17", + "limit": "2.17", + "names": "2.17", + "paths": "2.17" + }, + "bodyProperties": {} + }, + "POST /legal-holds/held-entities": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "file_system_ids": "2.17", + "file_system_names": "2.17", + "ids": "2.17", + "names": "2.17", + "paths": "2.17", + "recursive": "2.17" + }, + "bodyProperties": {} + }, + "PATCH /legal-holds/held-entities": { + "minVersion": "2.17", + "parameters": { + "X-Request-ID": "2.17", + "file_system_ids": "2.17", + "file_system_names": "2.17", + "ids": "2.17", + "names": "2.17", + "paths": "2.17", + "recursive": "2.17", + "released": "2.17" + }, + "bodyProperties": {} + }, + "GET /arrays/clients/s3-specific-performance": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "filter": "2.18", + "limit": "2.18", + "names": "2.18", + "sort": "2.18", + "total_only": "2.18" + }, + "bodyProperties": {} + }, + "POST /arrays/erasures": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "eradicate_all_data": "2.18", + "preserve_configuration_data": "2.18", + "skip_phonehome_check": "2.18" + }, + "bodyProperties": {} + }, + "PATCH /arrays/erasures": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "delete_sanitization_certificate": "2.18", + "eradicate_all_data": "2.18", + "finalize": "2.18" + }, + "bodyProperties": {} + }, + "GET /arrays/erasures": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18" + }, + "bodyProperties": {} + }, + "DELETE /arrays/erasures": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18" + }, + "bodyProperties": {} + }, + "GET /audit-file-systems-policy-operations": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "allow_errors": "2.18", + "context_names": "2.18", + "continuation_token": "2.18", + "filter": "2.18", + "limit": "2.18", + "names": "2.18", + "offset": "2.18", + "sort": "2.18" + }, + "bodyProperties": {} + }, + "GET /file-systems/space/storage-classes": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "continuation_token": "2.18", + "filter": "2.18", + "ids": "2.18", + "limit": "2.18", + "names": "2.18", + "offset": "2.18", + "sort": "2.18", + "storage_class_names": "2.18", + "total_only": "2.18" + }, + "bodyProperties": {} + }, + "GET /network-interfaces/network-connection-statistics": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "current_state": "2.18", + "filter": "2.18", + "limit": "2.18", + "local_host": "2.18", + "local_port": "2.18", + "offset": "2.18", + "remote_host": "2.18", + "remote_port": "2.18", + "sort": "2.18" + }, + "bodyProperties": {} + }, + "GET /nodes": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "continuation_token": "2.18", + "filter": "2.18", + "ids": "2.18", + "limit": "2.18", + "names": "2.18", + "offset": "2.18", + "sort": "2.18", + "total_only": "2.18" + }, + "bodyProperties": {} + }, + "PATCH /nodes": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "ids": "2.18", + "names": "2.18" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "capacity": "2.18", + "data_addresses": "2.18", + "details": "2.18", + "management_address": "2.18", + "raw_capacity": "2.18", + "serial_number": "2.18", + "status": "2.18", + "unique": "2.18", + "chassis_serial_number": "2.23", + "node_key": "2.27" + } + }, + "POST /nodes/batch": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "add_to_groups": "2.23" + }, + "bodyProperties": {} + }, + "GET /node-groups": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "continuation_token": "2.18", + "filter": "2.18", + "ids": "2.18", + "limit": "2.18", + "names": "2.18", + "offset": "2.18", + "sort": "2.18" + }, + "bodyProperties": {} + }, + "POST /node-groups": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "names": "2.18" + }, + "bodyProperties": {} + }, + "PATCH /node-groups": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "ids": "2.18", + "names": "2.18" + }, + "bodyProperties": { + "name": "2.18" + } + }, + "DELETE /node-groups": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "ids": "2.18", + "names": "2.18" + }, + "bodyProperties": {} + }, + "GET /node-groups/nodes": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "continuation_token": "2.18", + "filter": "2.18", + "limit": "2.18", + "node_group_ids": "2.18", + "node_group_names": "2.18", + "node_ids": "2.18", + "node_names": "2.18", + "offset": "2.18", + "sort": "2.18" + }, + "bodyProperties": {} + }, + "POST /node-groups/nodes": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "node_group_ids": "2.18", + "node_group_names": "2.18", + "node_ids": "2.18", + "node_names": "2.18" + }, + "bodyProperties": {} + }, + "DELETE /node-groups/nodes": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "node_group_ids": "2.18", + "node_group_names": "2.18", + "node_ids": "2.18", + "node_names": "2.18" + }, + "bodyProperties": {} + }, + "GET /node-groups/uses": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "continuation_token": "2.18", + "filter": "2.18", + "ids": "2.18", + "limit": "2.18", + "names": "2.18", + "offset": "2.18", + "sort": "2.18" + }, + "bodyProperties": {} + }, + "GET /storage-class-tiering-policies": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "continuation_token": "2.18", + "filter": "2.18", + "ids": "2.18", + "limit": "2.18", + "names": "2.18", + "offset": "2.18", + "sort": "2.18" + }, + "bodyProperties": {} + }, + "POST /storage-class-tiering-policies": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "names": "2.18" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "enabled": "2.18", + "is_local": "2.18", + "location": "2.18", + "policy_type": "2.18", + "archival_rules": "2.18", + "retrieval_rules": "2.18", + "realms": "2.19" + } + }, + "DELETE /storage-class-tiering-policies": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "ids": "2.18", + "names": "2.18" + }, + "bodyProperties": {} + }, + "PATCH /storage-class-tiering-policies": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "ids": "2.18", + "names": "2.18" + }, + "bodyProperties": { + "id": "2.18", + "name": "2.18", + "enabled": "2.18", + "is_local": "2.18", + "location": "2.18", + "policy_type": "2.18", + "archival_rules": "2.18", + "retrieval_rules": "2.18", + "realms": "2.19" + } + }, + "GET /storage-class-tiering-policies/members": { + "minVersion": "2.18", + "parameters": { + "X-Request-ID": "2.18", + "allow_errors": "2.18", + "context_names": "2.18", + "continuation_token": "2.18", + "filter": "2.18", + "limit": "2.18", + "member_ids": "2.18", + "member_names": "2.18", + "offset": "2.18", + "policy_ids": "2.18", + "policy_names": "2.18", + "sort": "2.18" + }, + "bodyProperties": {} + }, + "GET /admins/management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "filter": "2.19", + "limit": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "offset": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "sort": "2.19", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /admins/management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "DELETE /admins/management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /directory-services/roles/management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "filter": "2.19", + "limit": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "offset": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "sort": "2.19" + }, + "bodyProperties": {} + }, + "POST /directory-services/roles/management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19" + }, + "bodyProperties": {} + }, + "DELETE /directory-services/roles/management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19" + }, + "bodyProperties": {} + }, + "GET /management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "filter": "2.19", + "ids": "2.19", + "limit": "2.19", + "names": "2.19", + "offset": "2.19", + "sort": "2.19", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "names": "2.19", + "context_names": "2.26" + }, + "bodyProperties": { + "id": "2.19", + "name": "2.19", + "enabled": "2.19", + "is_local": "2.19", + "location": "2.19", + "policy_type": "2.19", + "realms": "2.19", + "aggregation_strategy": "2.19", + "rules": "2.19" + } + }, + "DELETE /management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "ids": "2.19", + "names": "2.19", + "context_names": "2.26" + }, + "bodyProperties": {} + }, + "PATCH /management-access-policies": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "ids": "2.19", + "names": "2.19", + "context_names": "2.26" + }, + "bodyProperties": { + "id": "2.19", + "name": "2.19", + "enabled": "2.19", + "is_local": "2.19", + "location": "2.19", + "policy_type": "2.19", + "realms": "2.19", + "version": "2.19", + "aggregation_strategy": "2.19", + "rules": "2.19", + "context": "2.24" + } + }, + "GET /management-access-policies/admins": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "filter": "2.19", + "limit": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "offset": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "sort": "2.19", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /management-access-policies/admins": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "DELETE /management-access-policies/admins": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /management-access-policies/directory-services/roles": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "filter": "2.19", + "limit": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "offset": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "sort": "2.19" + }, + "bodyProperties": {} + }, + "POST /management-access-policies/directory-services/roles": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19" + }, + "bodyProperties": {} + }, + "DELETE /management-access-policies/directory-services/roles": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19" + }, + "bodyProperties": {} + }, + "GET /management-access-policies/members": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "filter": "2.19", + "limit": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "offset": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "sort": "2.19", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "GET /qos-policies/buckets": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "filter": "2.19", + "limit": "2.19", + "member_ids": "2.19", + "member_names": "2.19", + "offset": "2.19", + "policy_ids": "2.19", + "policy_names": "2.19", + "sort": "2.19", + "allow_errors": "2.23", + "context_names": "2.23" + }, + "bodyProperties": {} + }, + "GET /realms": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "destroyed": "2.19", + "filter": "2.19", + "ids": "2.19", + "limit": "2.19", + "names": "2.19", + "offset": "2.19", + "sort": "2.19", + "total_only": "2.19", + "allow_errors": "2.24", + "context_names": "2.24" + }, + "bodyProperties": {} + }, + "POST /realms": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "names": "2.19", + "without_default_access_list": "2.19" + }, + "bodyProperties": {} + }, + "DELETE /realms": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "ids": "2.19", + "names": "2.19" + }, + "bodyProperties": {} + }, + "PATCH /realms": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "ids": "2.19", + "names": "2.19" + }, + "bodyProperties": { + "id": "2.19", + "name": "2.19", + "default_inbound_tls_policy": "2.19", + "destroyed": "2.19" + } + }, + "GET /realms/space": { + "minVersion": "2.19", + "parameters": { + "continuation_token": "2.19", + "end_time": "2.19", + "filter": "2.19", + "ids": "2.19", + "limit": "2.19", + "names": "2.19", + "offset": "2.19", + "resolution": "2.19", + "sort": "2.19", + "start_time": "2.19", + "total_only": "2.19", + "type": "2.19" + }, + "bodyProperties": {} + }, + "GET /realms/space/storage-classes": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "end_time": "2.19", + "filter": "2.19", + "ids": "2.19", + "limit": "2.19", + "names": "2.19", + "offset": "2.19", + "resolution": "2.19", + "sort": "2.19", + "start_time": "2.19", + "storage_class_names": "2.19", + "total_only": "2.19" + }, + "bodyProperties": {} + }, + "GET /resource-accesses": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "continuation_token": "2.19", + "filter": "2.19", + "ids": "2.19", + "limit": "2.19", + "offset": "2.19", + "sort": "2.19" + }, + "bodyProperties": {} + }, + "DELETE /resource-accesses": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19", + "ids": "2.19" + }, + "bodyProperties": {} + }, + "POST /resource-accesses/batch": { + "minVersion": "2.19", + "parameters": { + "X-Request-ID": "2.19" + }, + "bodyProperties": {} + }, + "GET /audit-object-store-policies": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "ids": "2.20", + "limit": "2.20", + "names": "2.20", + "offset": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "POST /audit-object-store-policies": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "id": "2.20", + "name": "2.20", + "enabled": "2.20", + "is_local": "2.20", + "location": "2.20", + "policy_type": "2.20", + "realms": "2.20", + "log_targets": "2.20" + } + }, + "DELETE /audit-object-store-policies": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": {} + }, + "PATCH /audit-object-store-policies": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "id": "2.20", + "name": "2.20", + "enabled": "2.20", + "is_local": "2.20", + "location": "2.20", + "policy_type": "2.20", + "realms": "2.20", + "log_targets": "2.20", + "add_log_targets": "2.20", + "remove_log_targets": "2.20" + } + }, + "GET /audit-object-store-policies/members": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "limit": "2.20", + "member_ids": "2.20", + "member_names": "2.20", + "offset": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "POST /audit-object-store-policies/members": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "member_ids": "2.20", + "member_names": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20" + }, + "bodyProperties": {} + }, + "DELETE /audit-object-store-policies/members": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "member_ids": "2.20", + "member_names": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20" + }, + "bodyProperties": {} + }, + "GET /bucket-audit-filter-actions": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "limit": "2.20", + "names": "2.20", + "offset": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "GET /buckets/audit-filters": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "bucket_ids": "2.20", + "bucket_names": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "limit": "2.20", + "names": "2.20", + "offset": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "POST /buckets/audit-filters": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "bucket_ids": "2.20", + "bucket_names": "2.20", + "context_names": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "actions": "2.20", + "s3_prefixes": "2.20" + } + }, + "DELETE /buckets/audit-filters": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "bucket_ids": "2.20", + "bucket_names": "2.20", + "context_names": "2.20", + "names": "2.20" + }, + "bodyProperties": {} + }, + "PATCH /buckets/audit-filters": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "bucket_ids": "2.20", + "bucket_names": "2.20", + "context_names": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "actions": "2.20", + "s3_prefixes": "2.20" + } + }, + "POST /certificates/certificate-signing-requests": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20" + }, + "bodyProperties": { + "certificate": "2.20", + "common_name": "2.20", + "country": "2.20", + "email": "2.20", + "locality": "2.20", + "organization": "2.20", + "organizational_unit": "2.20", + "state": "2.20", + "subject_alternative_names": "2.20" + } + }, + "GET /log-targets/file-systems": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "ids": "2.20", + "limit": "2.20", + "names": "2.20", + "offset": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "POST /log-targets/file-systems": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "id": "2.20", + "name": "2.20", + "file_system": "2.20", + "keep_for": "2.20", + "keep_size": "2.20" + } + }, + "DELETE /log-targets/file-systems": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": {} + }, + "PATCH /log-targets/file-systems": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "id": "2.20", + "name": "2.20", + "file_system": "2.20", + "keep_for": "2.20", + "keep_size": "2.20" + } + }, + "GET /log-targets/object-store": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "ids": "2.20", + "limit": "2.20", + "names": "2.20", + "offset": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "POST /log-targets/object-store": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "id": "2.20", + "name": "2.20", + "bucket": "2.20", + "log_name_prefix": "2.20", + "log_rotate": "2.20" + } + }, + "DELETE /log-targets/object-store": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": {} + }, + "PATCH /log-targets/object-store": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "id": "2.20", + "name": "2.20", + "bucket": "2.20", + "log_name_prefix": "2.20", + "log_rotate": "2.20" + } + }, + "GET /network-interfaces/neighbors": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "limit": "2.20", + "local_port_names": "2.20", + "offset": "2.20", + "sort": "2.20", + "total_item_count": "2.20" + }, + "bodyProperties": {} + }, + "GET /object-store-account-exports": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "ids": "2.20", + "limit": "2.20", + "names": "2.20", + "offset": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "POST /object-store-account-exports": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "member_ids": "2.20", + "member_names": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20" + }, + "bodyProperties": { + "export_enabled": "2.20", + "server": "2.20" + } + }, + "DELETE /object-store-account-exports": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": {} + }, + "PATCH /object-store-account-exports": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "export_enabled": "2.20", + "policy": "2.20" + } + }, + "PATCH /object-store-virtual-hosts": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "id": "2.20", + "name": "2.20", + "add_attached_servers": "2.20", + "attached_servers": "2.20", + "hostname": "2.20", + "remove_attached_servers": "2.20" + } + }, + "POST /qos-policies/members": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "member_ids": "2.20", + "member_names": "2.20", + "member_types": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20", + "context_names": "2.23" + }, + "bodyProperties": {} + }, + "DELETE /qos-policies/members": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "member_ids": "2.20", + "member_names": "2.20", + "member_types": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20", + "context_names": "2.23" + }, + "bodyProperties": {} + }, + "GET /realms/defaults": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "limit": "2.20", + "offset": "2.20", + "realm_ids": "2.20", + "realm_names": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "PATCH /realms/defaults": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "realm_ids": "2.20", + "realm_names": "2.20" + }, + "bodyProperties": { + "context": "2.20", + "object_store": "2.20", + "realm": "2.20" + } + }, + "GET /s3-export-policies": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "ids": "2.20", + "limit": "2.20", + "names": "2.20", + "offset": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "POST /s3-export-policies": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "enabled": "2.20", + "rules": "2.20" + } + }, + "DELETE /s3-export-policies": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": {} + }, + "PATCH /s3-export-policies": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "ids": "2.20", + "names": "2.20" + }, + "bodyProperties": { + "enabled": "2.20", + "name": "2.20", + "rules": "2.20" + } + }, + "GET /s3-export-policies/rules": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "allow_errors": "2.20", + "context_names": "2.20", + "continuation_token": "2.20", + "filter": "2.20", + "limit": "2.20", + "names": "2.20", + "offset": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20", + "sort": "2.20" + }, + "bodyProperties": {} + }, + "POST /s3-export-policies/rules": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "names": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20" + }, + "bodyProperties": { + "actions": "2.20", + "effect": "2.20", + "resources": "2.20" + } + }, + "DELETE /s3-export-policies/rules": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "names": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20" + }, + "bodyProperties": {} + }, + "PATCH /s3-export-policies/rules": { + "minVersion": "2.20", + "parameters": { + "X-Request-ID": "2.20", + "context_names": "2.20", + "names": "2.20", + "policy_ids": "2.20", + "policy_names": "2.20" + }, + "bodyProperties": { + "actions": "2.20", + "effect": "2.20", + "resources": "2.20" + } + }, + "GET /data-eviction-policies": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "allow_errors": "2.21", + "context_names": "2.21", + "continuation_token": "2.21", + "filter": "2.21", + "ids": "2.21", + "limit": "2.21", + "names": "2.21", + "offset": "2.21", + "sort": "2.21" + }, + "bodyProperties": {} + }, + "POST /data-eviction-policies": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "context_names": "2.21", + "names": "2.21" + }, + "bodyProperties": { + "id": "2.21", + "name": "2.21", + "enabled": "2.21", + "is_local": "2.21", + "location": "2.21", + "policy_type": "2.21", + "realms": "2.21", + "keep_size": "2.21" + } + }, + "DELETE /data-eviction-policies": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "context_names": "2.21", + "ids": "2.21", + "names": "2.21" + }, + "bodyProperties": {} + }, + "PATCH /data-eviction-policies": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "context_names": "2.21", + "ids": "2.21", + "names": "2.21" + }, + "bodyProperties": { + "id": "2.21", + "name": "2.21", + "enabled": "2.21", + "is_local": "2.21", + "location": "2.21", + "policy_type": "2.21", + "realms": "2.21", + "context": "2.21", + "keep_size": "2.21" + } + }, + "GET /data-eviction-policies/file-systems": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "allow_errors": "2.21", + "context_names": "2.21", + "continuation_token": "2.21", + "filter": "2.21", + "limit": "2.21", + "member_ids": "2.21", + "member_names": "2.21", + "offset": "2.21", + "policy_ids": "2.21", + "policy_names": "2.21", + "sort": "2.21" + }, + "bodyProperties": {} + }, + "POST /data-eviction-policies/file-systems": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "context_names": "2.21", + "member_ids": "2.21", + "member_names": "2.21", + "policy_ids": "2.21", + "policy_names": "2.21" + }, + "bodyProperties": {} + }, + "DELETE /data-eviction-policies/file-systems": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "context_names": "2.21", + "member_ids": "2.21", + "member_names": "2.21", + "policy_ids": "2.21", + "policy_names": "2.21" + }, + "bodyProperties": {} + }, + "GET /data-eviction-policies/members": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "allow_errors": "2.21", + "context_names": "2.21", + "continuation_token": "2.21", + "filter": "2.21", + "limit": "2.21", + "member_ids": "2.21", + "member_names": "2.21", + "offset": "2.21", + "policy_ids": "2.21", + "policy_names": "2.21", + "sort": "2.21" + }, + "bodyProperties": {} + }, + "GET /file-systems/data-eviction-policies": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "allow_errors": "2.21", + "context_names": "2.21", + "continuation_token": "2.21", + "filter": "2.21", + "limit": "2.21", + "member_ids": "2.21", + "member_names": "2.21", + "offset": "2.21", + "policy_ids": "2.21", + "policy_names": "2.21", + "sort": "2.21" + }, + "bodyProperties": {} + }, + "POST /file-systems/data-eviction-policies": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "context_names": "2.21", + "member_ids": "2.21", + "member_names": "2.21", + "policy_ids": "2.21", + "policy_names": "2.21" + }, + "bodyProperties": {} + }, + "DELETE /file-systems/data-eviction-policies": { + "minVersion": "2.21", + "parameters": { + "X-Request-ID": "2.21", + "context_names": "2.21", + "member_ids": "2.21", + "member_names": "2.21", + "policy_ids": "2.21", + "policy_names": "2.21" + }, + "bodyProperties": {} + }, + "GET /admins/management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "allow_errors": "2.22", + "context_names": "2.22", + "continuation_token": "2.22", + "filter": "2.22", + "limit": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "offset": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22", + "sort": "2.22" + }, + "bodyProperties": {} + }, + "POST /admins/management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22" + }, + "bodyProperties": {} + }, + "DELETE /admins/management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22" + }, + "bodyProperties": {} + }, + "GET /arrays/management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "allow_errors": "2.22", + "context_names": "2.22", + "continuation_token": "2.22", + "filter": "2.22", + "limit": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "offset": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22", + "sort": "2.22" + }, + "bodyProperties": {} + }, + "POST /arrays/management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22" + }, + "bodyProperties": {} + }, + "DELETE /arrays/management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22" + }, + "bodyProperties": {} + }, + "GET /management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "allow_errors": "2.22", + "context_names": "2.22", + "continuation_token": "2.22", + "filter": "2.22", + "ids": "2.22", + "limit": "2.22", + "names": "2.22", + "offset": "2.22", + "sort": "2.22" + }, + "bodyProperties": {} + }, + "POST /management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "names": "2.22" + }, + "bodyProperties": { + "id": "2.22", + "name": "2.22", + "enabled": "2.22", + "is_local": "2.22", + "location": "2.22", + "policy_type": "2.22", + "realms": "2.22", + "ssh": "2.22" + } + }, + "DELETE /management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "ids": "2.22", + "names": "2.22" + }, + "bodyProperties": {} + }, + "PATCH /management-authentication-policies": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "ids": "2.22", + "names": "2.22" + }, + "bodyProperties": { + "id": "2.22", + "name": "2.22", + "enabled": "2.22", + "is_local": "2.22", + "location": "2.22", + "policy_type": "2.22", + "realms": "2.22", + "ssh": "2.22", + "context": "2.22" + } + }, + "GET /management-authentication-policies/members": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "allow_errors": "2.22", + "context_names": "2.22", + "continuation_token": "2.22", + "filter": "2.22", + "limit": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "member_types": "2.22", + "offset": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22", + "sort": "2.22" + }, + "bodyProperties": {} + }, + "POST /management-authentication-policies/members": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "member_types": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22" + }, + "bodyProperties": {} + }, + "DELETE /management-authentication-policies/members": { + "minVersion": "2.22", + "parameters": { + "X-Request-ID": "2.22", + "context_names": "2.22", + "member_ids": "2.22", + "member_names": "2.22", + "member_types": "2.22", + "policy_ids": "2.22", + "policy_names": "2.22" + }, + "bodyProperties": {} + }, + "GET /presets/workload": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "ids": "2.23", + "names": "2.23" + }, + "bodyProperties": {} + }, + "PUT /presets/workload": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "ids": "2.23", + "names": "2.23", + "skip_verify_deployable": "2.23" + }, + "bodyProperties": { + "id": "2.23", + "name": "2.23", + "context": "2.23", + "description": "2.23", + "directory_configurations": "2.23", + "export_configurations": "2.23", + "parameters": "2.23", + "periodic_replication_configurations": "2.23", + "placement_configurations": "2.23", + "platform_features": "2.23", + "qos_configurations": "2.23", + "quota_configurations": "2.23", + "revision": "2.23", + "snapshot_configurations": "2.23", + "volume_configurations": "2.23", + "workload_tags": "2.23", + "workload_type": "2.23" + } + }, + "POST /presets/workload": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "names": "2.23", + "skip_verify_deployable": "2.23" + }, + "bodyProperties": { + "description": "2.23", + "directory_configurations": "2.23", + "export_configurations": "2.23", + "parameters": "2.23", + "periodic_replication_configurations": "2.23", + "placement_configurations": "2.23", + "platform_features": "2.23", + "qos_configurations": "2.23", + "quota_configurations": "2.23", + "revision": "2.23", + "snapshot_configurations": "2.23", + "volume_configurations": "2.23", + "workload_tags": "2.23", + "workload_type": "2.23" + } + }, + "DELETE /presets/workload": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "ids": "2.23", + "names": "2.23" + }, + "bodyProperties": {} + }, + "PATCH /presets/workload": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "ids": "2.23", + "names": "2.23" + }, + "bodyProperties": { + "name": "2.23" + } + }, + "GET /resiliency-groups": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "continuation_token": "2.23", + "filter": "2.23", + "ids": "2.23", + "limit": "2.23", + "names": "2.23", + "offset": "2.23", + "sort": "2.23" + }, + "bodyProperties": {} + }, + "GET /resiliency-groups/members": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "continuation_token": "2.23", + "filter": "2.23", + "limit": "2.23", + "member_ids": "2.23", + "member_names": "2.23", + "offset": "2.23", + "resiliency_group_ids": "2.23", + "resiliency_group_names": "2.23", + "sort": "2.23" + }, + "bodyProperties": {} + }, + "GET /workloads": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "allow_errors": "2.23", + "context_names": "2.23", + "continuation_token": "2.23", + "destroyed": "2.23", + "ids": "2.23", + "limit": "2.23", + "names": "2.23" + }, + "bodyProperties": {} + }, + "POST /workloads": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "names": "2.23", + "preset_ids": "2.23", + "preset_names": "2.23" + }, + "bodyProperties": { + "parameters": "2.23" + } + }, + "DELETE /workloads": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "ids": "2.23", + "names": "2.23" + }, + "bodyProperties": {} + }, + "PATCH /workloads": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "ids": "2.23", + "names": "2.23" + }, + "bodyProperties": { + "destroyed": "2.23", + "name": "2.23" + } + }, + "GET /workloads/placement-recommendations": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "allow_errors": "2.23", + "context_names": "2.23", + "continuation_token": "2.23", + "ids": "2.23", + "limit": "2.23", + "names": "2.23" + }, + "bodyProperties": {} + }, + "POST /workloads/placement-recommendations": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "placement_names": "2.23", + "preset_ids": "2.23", + "preset_names": "2.23" + }, + "bodyProperties": { + "context": "2.23", + "additional_constraints": "2.23", + "created": "2.23", + "expires": "2.23", + "id": "2.23", + "more_results_available": "2.23", + "name": "2.23", + "parameters": "2.23", + "placement_names": "2.23", + "preset": "2.23", + "progress": "2.23", + "projection_months": "2.23", + "recommendation_engine": "2.23", + "results": "2.23", + "results_limit": "2.23", + "status": "2.23" + } + }, + "GET /workloads/tags": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "allow_errors": "2.23", + "context_names": "2.23", + "namespaces": "2.23", + "resource_ids": "2.23", + "resource_names": "2.23" + }, + "bodyProperties": {} + }, + "DELETE /workloads/tags": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "keys": "2.23", + "namespaces": "2.23", + "resource_ids": "2.23", + "resource_names": "2.23" + }, + "bodyProperties": {} + }, + "PUT /workloads/tags/batch": { + "minVersion": "2.23", + "parameters": { + "X-Request-ID": "2.23", + "context_names": "2.23", + "resource_ids": "2.23", + "resource_names": "2.23" + }, + "bodyProperties": {} + }, + "GET /directory-services/local/directory-services": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "allow_errors": "2.24", + "context_names": "2.24", + "continuation_token": "2.24", + "destroyed": "2.24", + "filter": "2.24", + "ids": "2.24", + "limit": "2.24", + "names": "2.24", + "offset": "2.24", + "sort": "2.24", + "total_item_count": "2.24" + }, + "bodyProperties": {} + }, + "POST /directory-services/local/directory-services": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "names": "2.24" + }, + "bodyProperties": { + "domain": "2.24" + } + }, + "DELETE /directory-services/local/directory-services": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "ids": "2.24", + "names": "2.24" + }, + "bodyProperties": {} + }, + "PATCH /directory-services/local/directory-services": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "ids": "2.24", + "names": "2.24" + }, + "bodyProperties": { + "context": "2.24", + "destroyed": "2.24", + "time_remaining": "2.24", + "id": "2.24", + "name": "2.24", + "realms": "2.24", + "server": "2.24", + "domain": "2.24" + } + }, + "GET /directory-services/local/groups": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "allow_errors": "2.24", + "context_names": "2.24", + "continuation_token": "2.24", + "filter": "2.24", + "gids": "2.24", + "ids": "2.24", + "limit": "2.24", + "names": "2.24", + "offset": "2.24", + "sids": "2.24", + "sort": "2.24", + "total_item_count": "2.24" + }, + "bodyProperties": {} + }, + "POST /directory-services/local/groups": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "names": "2.24" + }, + "bodyProperties": { + "email": "2.24", + "gid": "2.24" + } + }, + "DELETE /directory-services/local/groups": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "gids": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "names": "2.24", + "sids": "2.24" + }, + "bodyProperties": {} + }, + "PATCH /directory-services/local/groups": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "gids": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "names": "2.24", + "sids": "2.24" + }, + "bodyProperties": { + "context": "2.24", + "built_in": "2.24", + "email": "2.24", + "gid": "2.24", + "name": "2.24", + "sid": "2.24" + } + }, + "GET /directory-services/local/groups/members": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "allow_errors": "2.24", + "context_names": "2.24", + "continuation_token": "2.24", + "filter": "2.24", + "group_gids": "2.24", + "group_names": "2.24", + "group_sids": "2.24", + "limit": "2.24", + "member_ids": "2.24", + "member_names": "2.24", + "member_sids": "2.24", + "member_types": "2.24", + "offset": "2.24", + "sort": "2.24", + "total_item_count": "2.24" + }, + "bodyProperties": {} + }, + "POST /directory-services/local/groups/members": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "group_gids": "2.24", + "group_names": "2.24", + "group_sids": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24" + }, + "bodyProperties": { + "members": "2.24" + } + }, + "DELETE /directory-services/local/groups/members": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "group_gids": "2.24", + "group_names": "2.24", + "group_sids": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "member_ids": "2.24", + "member_names": "2.24", + "member_sids": "2.24", + "member_types": "2.24" + }, + "bodyProperties": {} + }, + "GET /directory-services/local/users": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "allow_errors": "2.24", + "context_names": "2.24", + "continuation_token": "2.24", + "filter": "2.24", + "ids": "2.24", + "limit": "2.24", + "names": "2.24", + "offset": "2.24", + "sids": "2.24", + "sort": "2.24", + "total_item_count": "2.24", + "uids": "2.24" + }, + "bodyProperties": {} + }, + "POST /directory-services/local/users": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "names": "2.24" + }, + "bodyProperties": { + "email": "2.24", + "enabled": "2.24", + "password": "2.24", + "primary_group": "2.24", + "uid": "2.24" + } + }, + "DELETE /directory-services/local/users": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "names": "2.24", + "sids": "2.24", + "uids": "2.24" + }, + "bodyProperties": {} + }, + "PATCH /directory-services/local/users": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "names": "2.24", + "sids": "2.24", + "uids": "2.24" + }, + "bodyProperties": { + "email": "2.24", + "enabled": "2.24", + "name": "2.24", + "password": "2.24", + "primary_group": "2.24", + "uid": "2.24" + } + }, + "GET /directory-services/local/users/members": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "allow_errors": "2.24", + "context_names": "2.24", + "continuation_token": "2.24", + "filter": "2.24", + "group_gids": "2.24", + "group_names": "2.24", + "group_sids": "2.24", + "limit": "2.24", + "member_ids": "2.24", + "member_names": "2.24", + "member_sids": "2.24", + "offset": "2.24", + "sort": "2.24", + "total_item_count": "2.24" + }, + "bodyProperties": {} + }, + "POST /directory-services/local/users/members": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "member_ids": "2.24", + "member_names": "2.24", + "member_sids": "2.24" + }, + "bodyProperties": { + "groups": "2.24", + "is_primary": "2.24" + } + }, + "DELETE /directory-services/local/users/members": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "context_names": "2.24", + "group_gids": "2.24", + "group_names": "2.24", + "group_sids": "2.24", + "local_directory_service_ids": "2.24", + "local_directory_service_names": "2.24", + "member_ids": "2.24", + "member_names": "2.24", + "member_sids": "2.24", + "member_types": "2.24" + }, + "bodyProperties": {} + }, + "GET /support-diagnostics/settings": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "continuation_token": "2.24", + "filter": "2.24", + "limit": "2.24", + "offset": "2.24", + "sort": "2.24", + "total_item_count": "2.24" + }, + "bodyProperties": {} + }, + "PATCH /support-diagnostics/settings": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24" + }, + "bodyProperties": {} + }, + "GET /software-bundle": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "continuation_token": "2.24", + "filter": "2.24", + "ids": "2.24", + "limit": "2.24", + "offset": "2.24", + "sort": "2.24", + "total_item_count": "2.24" + }, + "bodyProperties": {} + }, + "POST /software-bundle": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24" + }, + "bodyProperties": { + "source": "2.24" + } + }, + "GET /software-patches": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "continuation_token": "2.24", + "filter": "2.24", + "ids": "2.24", + "limit": "2.24", + "names": "2.24", + "offset": "2.24", + "sort": "2.24", + "total_item_count": "2.24" + }, + "bodyProperties": {} + }, + "POST /software-patches": { + "minVersion": "2.24", + "parameters": { + "X-Request-ID": "2.24", + "allow_ha_reduction": "2.24", + "name": "2.24" + }, + "bodyProperties": {} + }, + "GET /file-systems/user-group-quota-policies": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "filter": "2.25", + "limit": "2.25", + "member_ids": "2.25", + "member_names": "2.25", + "offset": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "POST /file-systems/user-group-quota-policies": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "delete_existing_user_group_quota_settings": "2.25", + "ignore_usage": "2.25", + "member_ids": "2.25", + "member_names": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25" + }, + "bodyProperties": {} + }, + "DELETE /file-systems/user-group-quota-policies": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "member_ids": "2.25", + "member_names": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25" + }, + "bodyProperties": {} + }, + "GET /file-system-junctions": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "destination_file_system_ids": "2.25", + "destination_file_system_names": "2.25", + "filter": "2.25", + "ids": "2.25", + "limit": "2.25", + "names": "2.25", + "offset": "2.25", + "origin_file_system_ids": "2.25", + "origin_file_system_names": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "POST /file-system-junctions": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "names": "2.25", + "origin_file_system_ids": "2.25", + "origin_file_system_names": "2.25", + "use_existing_directory": "2.25" + }, + "bodyProperties": { + "context": "2.25", + "id": "2.25", + "name": "2.25", + "destination_file_system": "2.25", + "junction_origin_path": "2.25", + "origin_file_system": "2.25", + "status": "2.25" + } + }, + "DELETE /file-system-junctions": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "ids": "2.25", + "names": "2.25" + }, + "bodyProperties": {} + }, + "GET /file-system-group-quotas": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "file_system_ids": "2.25", + "file_system_names": "2.25", + "filter": "2.25", + "gids": "2.25", + "group_names": "2.25", + "limit": "2.25", + "offset": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "GET /file-systems/groups": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "file_system_ids": "2.25", + "file_system_names": "2.25", + "filter": "2.25", + "gids": "2.25", + "group_names": "2.25", + "limit": "2.25", + "offset": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "GET /file-system-user-quotas": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "file_system_ids": "2.25", + "file_system_names": "2.25", + "filter": "2.25", + "limit": "2.25", + "offset": "2.25", + "sort": "2.25", + "uids": "2.25", + "user_names": "2.25", + "user_sids": "2.25" + }, + "bodyProperties": {} + }, + "GET /file-systems/users": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "file_system_ids": "2.25", + "file_system_names": "2.25", + "filter": "2.25", + "limit": "2.25", + "offset": "2.25", + "sort": "2.25", + "uids": "2.25", + "user_names": "2.25", + "user_sids": "2.25" + }, + "bodyProperties": {} + }, + "GET /realm-connections": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "continuation_token": "2.25", + "filter": "2.25", + "ids": "2.25", + "limit": "2.25", + "local_realm_ids": "2.25", + "local_realm_names": "2.25", + "offset": "2.25", + "remote_realm_ids": "2.25", + "remote_realm_names": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "POST /realm-connections": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "local_realm_ids": "2.25", + "local_realm_names": "2.25", + "remote_realm_ids": "2.25", + "remote_realm_names": "2.25" + }, + "bodyProperties": { + "id": "2.25", + "local_realm": "2.25", + "remote_realm": "2.25", + "status": "2.25", + "connection_key": "2.25" + } + }, + "DELETE /realm-connections": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "local_realm_ids": "2.25", + "local_realm_names": "2.25", + "remote_realm_ids": "2.25", + "remote_realm_names": "2.25" + }, + "bodyProperties": {} + }, + "GET /realm-connections/connection-key": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "continuation_token": "2.25", + "filter": "2.25", + "limit": "2.25", + "offset": "2.25", + "realm_ids": "2.25", + "realm_names": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "POST /realm-connections/connection-key": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "realm_ids": "2.25", + "realm_names": "2.25" + }, + "bodyProperties": {} + }, + "DELETE /realm-connections/connection-key": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "realm_ids": "2.25", + "realm_names": "2.25" + }, + "bodyProperties": {} + }, + "GET /remote-realms": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "continuation_token": "2.25", + "filter": "2.25", + "ids": "2.25", + "limit": "2.25", + "names": "2.25", + "offset": "2.25", + "on": "2.25", + "on_ids": "2.25", + "sort": "2.25", + "total_only": "2.25" + }, + "bodyProperties": {} + }, + "GET /user-group-quota-policies": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "filter": "2.25", + "ids": "2.25", + "limit": "2.25", + "names": "2.25", + "offset": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "POST /user-group-quota-policies": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "file_system_ids": "2.25", + "file_system_names": "2.25", + "names": "2.25" + }, + "bodyProperties": { + "id": "2.25", + "name": "2.25", + "realms": "2.25", + "enabled": "2.25", + "is_local": "2.25", + "location": "2.25", + "policy_type": "2.25", + "rules": "2.25" + } + }, + "PATCH /user-group-quota-policies": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "ids": "2.25", + "ignore_usage": "2.25", + "names": "2.25", + "versions": "2.25" + }, + "bodyProperties": { + "id": "2.25", + "name": "2.25", + "realms": "2.25", + "enabled": "2.25", + "is_local": "2.25", + "location": "2.25", + "policy_type": "2.25", + "version": "2.25", + "context": "2.25", + "rules": "2.25" + } + }, + "DELETE /user-group-quota-policies": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "ids": "2.25", + "names": "2.25", + "versions": "2.25" + }, + "bodyProperties": {} + }, + "GET /user-group-quota-policies/rules": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "filter": "2.25", + "ids": "2.25", + "limit": "2.25", + "names": "2.25", + "offset": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "POST /user-group-quota-policies/rules": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "ignore_usage": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25" + }, + "bodyProperties": { + "enforced": "2.25", + "notifications": "2.25", + "quota_limit": "2.25", + "quota_type": "2.25", + "subject": "2.25" + } + }, + "DELETE /user-group-quota-policies/rules": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "ids": "2.25", + "names": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25" + }, + "bodyProperties": {} + }, + "PATCH /user-group-quota-policies/rules": { + "minVersion": "2.25", + "parameters": { + "context_names": "2.25", + "ids": "2.25", + "ignore_usage": "2.25", + "names": "2.25" + }, + "bodyProperties": { + "id": "2.25", + "name": "2.25", + "notifications": "2.25", + "quota_limit": "2.25" + } + }, + "GET /user-group-quota-policies/file-systems": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "filter": "2.25", + "limit": "2.25", + "member_ids": "2.25", + "member_names": "2.25", + "offset": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "POST /user-group-quota-policies/file-systems": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "delete_existing_user_group_quota_settings": "2.25", + "ignore_usage": "2.25", + "member_ids": "2.25", + "member_names": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25" + }, + "bodyProperties": {} + }, + "DELETE /user-group-quota-policies/file-systems": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "context_names": "2.25", + "member_ids": "2.25", + "member_names": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25" + }, + "bodyProperties": {} + }, + "GET /user-group-quota-policies/members": { + "minVersion": "2.25", + "parameters": { + "X-Request-ID": "2.25", + "allow_errors": "2.25", + "context_names": "2.25", + "continuation_token": "2.25", + "filter": "2.25", + "limit": "2.25", + "member_ids": "2.25", + "member_names": "2.25", + "offset": "2.25", + "policy_ids": "2.25", + "policy_names": "2.25", + "sort": "2.25" + }, + "bodyProperties": {} + }, + "GET /management-access-policies/roles": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "allow_errors": "2.26", + "context_names": "2.26", + "continuation_token": "2.26", + "filter": "2.26", + "ids": "2.26", + "limit": "2.26", + "names": "2.26", + "offset": "2.26", + "sort": "2.26" + }, + "bodyProperties": {} + }, + "POST /management-access-policies/roles": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "names": "2.26" + }, + "bodyProperties": { + "description": "2.26" + } + }, + "DELETE /management-access-policies/roles": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "ids": "2.26", + "names": "2.26" + }, + "bodyProperties": {} + }, + "GET /management-access-policies/roles/permissions": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "allow_errors": "2.26", + "context_names": "2.26", + "continuation_token": "2.26", + "filter": "2.26", + "ids": "2.26", + "limit": "2.26", + "names": "2.26", + "offset": "2.26", + "role_ids": "2.26", + "role_names": "2.26", + "sort": "2.26" + }, + "bodyProperties": {} + }, + "POST /management-access-policies/roles/permissions": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "role_ids": "2.26", + "role_names": "2.26" + }, + "bodyProperties": { + "actions": "2.26", + "resource": "2.26" + } + }, + "DELETE /management-access-policies/roles/permissions": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "ids": "2.26", + "names": "2.26" + }, + "bodyProperties": {} + }, + "PATCH /management-access-policies/roles/permissions": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "ids": "2.26", + "names": "2.26" + }, + "bodyProperties": { + "actions": "2.26" + } + }, + "GET /management-access-policies/roles/permissions/supported-resources": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "allow_errors": "2.26", + "context_names": "2.26", + "continuation_token": "2.26", + "filter": "2.26", + "limit": "2.26", + "names": "2.26", + "offset": "2.26", + "sort": "2.26" + }, + "bodyProperties": {} + }, + "GET /management-access-policies/rules": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "allow_errors": "2.26", + "context_names": "2.26", + "continuation_token": "2.26", + "filter": "2.26", + "ids": "2.26", + "limit": "2.26", + "names": "2.26", + "offset": "2.26", + "policy_ids": "2.26", + "policy_names": "2.26", + "sort": "2.26" + }, + "bodyProperties": {} + }, + "POST /management-access-policies/rules": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "before_rule_id": "2.26", + "before_rule_name": "2.26", + "context_names": "2.26", + "policy_ids": "2.26", + "policy_names": "2.26", + "versions": "2.26" + }, + "bodyProperties": { + "context": "2.26", + "id": "2.26", + "name": "2.26", + "role": "2.26", + "scope": "2.26", + "index": "2.26", + "policy": "2.26", + "policy_version": "2.26" + } + }, + "DELETE /management-access-policies/rules": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "ids": "2.26", + "names": "2.26", + "versions": "2.26" + }, + "bodyProperties": {} + }, + "PATCH /management-access-policies/rules": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "before_rule_id": "2.26", + "before_rule_name": "2.26", + "context_names": "2.26", + "ids": "2.26", + "names": "2.26", + "versions": "2.26" + }, + "bodyProperties": { + "context": "2.26", + "id": "2.26", + "name": "2.26", + "role": "2.26", + "scope": "2.26", + "index": "2.26", + "policy": "2.26", + "policy_version": "2.26" + } + }, + "PATCH /remote-arrays": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "ids": "2.26", + "names": "2.26", + "to_topology_group_ids": "2.26", + "to_topology_group_names": "2.26" + }, + "bodyProperties": {} + }, + "GET /support/system-manifest": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "allow_errors": "2.26", + "context_names": "2.26", + "continuation_token": "2.26", + "filter": "2.26", + "limit": "2.26", + "offset": "2.26", + "sort": "2.26", + "total_only": "2.26" + }, + "bodyProperties": {} + }, + "GET /topology-groups": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "continuation_token": "2.26", + "filter": "2.26", + "ids": "2.26", + "limit": "2.26", + "list_all_parents": "2.26", + "names": "2.26", + "offset": "2.26", + "sort": "2.26", + "total_item_count": "2.26" + }, + "bodyProperties": {} + }, + "POST /topology-groups": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "names": "2.26", + "parent_topology_group_ids": "2.26", + "parent_topology_group_names": "2.26" + }, + "bodyProperties": {} + }, + "PATCH /topology-groups": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "ids": "2.26", + "names": "2.26", + "to_parent_topology_group_ids": "2.26", + "to_parent_topology_group_names": "2.26" + }, + "bodyProperties": { + "topology_group": "2.26" + } + }, + "DELETE /topology-groups": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "ids": "2.26", + "names": "2.26" + }, + "bodyProperties": {} + }, + "GET /topology-groups/arrays": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "continuation_token": "2.26", + "filter": "2.26", + "limit": "2.26", + "member_ids": "2.26", + "member_names": "2.26", + "offset": "2.26", + "sort": "2.26", + "topology_group_ids": "2.26", + "topology_group_names": "2.26", + "total_item_count": "2.26" + }, + "bodyProperties": {} + }, + "GET /topology-groups/members": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "continuation_token": "2.26", + "filter": "2.26", + "limit": "2.26", + "member_ids": "2.26", + "member_names": "2.26", + "offset": "2.26", + "recursive": "2.26", + "sort": "2.26", + "topology_group_ids": "2.26", + "topology_group_names": "2.26", + "total_item_count": "2.26" + }, + "bodyProperties": {} + }, + "POST /topology-groups/members": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "topology_group_ids": "2.26", + "topology_group_names": "2.26" + }, + "bodyProperties": { + "members": "2.26" + } + }, + "DELETE /topology-groups/members": { + "minVersion": "2.26", + "parameters": { + "X-Request-ID": "2.26", + "context_names": "2.26", + "member_ids": "2.26", + "member_names": "2.26", + "topology_group_ids": "2.26", + "topology_group_names": "2.26" + }, + "bodyProperties": {} + }, + "PATCH /active-directory/test": { + "minVersion": "2.27", + "parameters": { + "X-Request-ID": "2.27", + "context_names": "2.27", + "ids": "2.27", + "names": "2.27" + }, + "bodyProperties": { + "ca_certificate": "2.27", + "ca_certificate_group": "2.27" + } + }, + "POST /fleets/members/batch": { + "minVersion": "2.27", + "parameters": { + "X-Request-ID": "2.27", + "fleet_ids": "2.27", + "fleet_names": "2.27", + "validate_target_certificates": "2.27" + }, + "bodyProperties": {} + }, + "GET /storage-classes/members": { + "minVersion": "2.27", + "parameters": { + "X-Request-ID": "2.27", + "continuation_token": "2.27", + "filter": "2.27", + "limit": "2.27", + "member_ids": "2.27", + "member_names": "2.27", + "offset": "2.27", + "sort": "2.27", + "storage_class_names": "2.27" + }, + "bodyProperties": {} + } + } +} diff --git a/Data/PfbVersionMap.json b/Data/PfbVersionMap.json new file mode 100644 index 0000000..9544e99 --- /dev/null +++ b/Data/PfbVersionMap.json @@ -0,0 +1,86 @@ +{ + "2.0": { + "purity": "3.2.0" + }, + "2.1": { + "purity": "3.2.3" + }, + "2.2": { + "purity": "3.2.4" + }, + "2.3": { + "purity": "3.3.0" + }, + "2.4": { + "purity": "3.3.3/4.0.0" + }, + "2.5": { + "purity": "4.0.2" + }, + "2.6": { + "purity": "4.0.2" + }, + "2.7": { + "purity": "4.0.4" + }, + "2.8": { + "purity": "4.1.0" + }, + "2.9": { + "purity": "4.2.0" + }, + "2.10": { + "purity": "4.1.5" + }, + "2.11": { + "purity": "4.3.0" + }, + "2.12": { + "purity": "4.3.4" + }, + "2.13": { + "purity": "4.4.0" + }, + "2.14": { + "purity": "4.4.2" + }, + "2.15": { + "purity": "4.5.0" + }, + "2.16": { + "purity": "4.5.2" + }, + "2.17": { + "purity": "4.5.6" + }, + "2.18": { + "purity": "4.6.0" + }, + "2.19": { + "purity": "4.6.1" + }, + "2.20": { + "purity": "4.6.3" + }, + "2.21": { + "purity": "4.6.4" + }, + "2.22": { + "purity": "4.6.5" + }, + "2.23": { + "purity": "4.6.7" + }, + "2.24": { + "purity": "4.6.8" + }, + "2.25": { + "purity": "4.8.0" + }, + "2.26": { + "purity": "4.8.1" + }, + "2.27": { + "purity": "4.8.3" + } +} diff --git a/Private/Assert-PfbApiCapability.ps1 b/Private/Assert-PfbApiCapability.ps1 new file mode 100644 index 0000000..af556f6 --- /dev/null +++ b/Private/Assert-PfbApiCapability.ps1 @@ -0,0 +1,88 @@ +function Assert-PfbApiCapability { + <# + .SYNOPSIS + Throws before an API call is sent if the connected array's REST version does not + support the requested endpoint, query parameter, or request-body field. + .DESCRIPTION + Looks up Data/PfbCapabilityMap.json (built by tools/Build-PfbCapabilityMap.ps1) for + the "$Method $Endpoint" being called. If the map is unavailable, or the endpoint is + not present in it, this is a deliberate no-op: the map may be stale, or the endpoint + may take path parameters not captured by the map's flat key format. A capability + check must never be the reason a call that would otherwise succeed gets blocked. + .PARAMETER ApiVersion + Overrides the version to check against instead of $Array.ApiVersion (mirrors + Invoke-PfbApiRequest's -ApiVersionOverride). + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [PSCustomObject]$Array, + + [Parameter(Mandatory)] + [string]$Method, + + [Parameter(Mandatory)] + [string]$Endpoint, + + [Parameter()] + [hashtable]$Body, + + [Parameter()] + [hashtable]$QueryParams, + + [Parameter()] + [string]$ApiVersion + ) + + $map = Get-PfbCapabilityMap + if (-not $map) { return } + + $normalizedEndpoint = '/' + $Endpoint.TrimStart('/') + $key = "$Method $normalizedEndpoint" + $entry = $map.endpoints.$key + if (-not $entry) { return } + + $effectiveVersion = if ($ApiVersion) { $ApiVersion } else { $Array.ApiVersion } + if (-not $effectiveVersion) { return } + + $versionMap = Get-PfbVersionMap + + function Format-PfbVersionDescription { + param([string]$RestVersion) + $purity = $versionMap.$RestVersion.purity + if ($purity) { return "REST $RestVersion (Purity//FB $purity)" } + return "REST $RestVersion" + } + + $violations = [System.Collections.Generic.List[string]]::new() + + if (-not (Test-PfbVersionAtLeast -Have $effectiveVersion -Need $entry.minVersion)) { + $violations.Add("$key requires $(Format-PfbVersionDescription $entry.minVersion)") + } + + if ($QueryParams) { + foreach ($paramName in $QueryParams.Keys) { + $value = $QueryParams[$paramName] + if ($null -eq $value -or ($value -is [string] -and [string]::IsNullOrEmpty($value))) { continue } + + $introducedIn = $entry.parameters.$paramName + if ($introducedIn -and -not (Test-PfbVersionAtLeast -Have $effectiveVersion -Need $introducedIn)) { + $violations.Add("parameter '$paramName' on $key requires $(Format-PfbVersionDescription $introducedIn)") + } + } + } + + if ($Body) { + foreach ($propName in $Body.Keys) { + $introducedIn = $entry.bodyProperties.$propName + if ($introducedIn -and -not (Test-PfbVersionAtLeast -Have $effectiveVersion -Need $introducedIn)) { + $violations.Add("request-body field '$propName' on $key requires $(Format-PfbVersionDescription $introducedIn)") + } + } + } + + if ($violations.Count -eq 0) { return } + + $haveDescription = Format-PfbVersionDescription $effectiveVersion + throw "$($violations -join '; '), but the connected array is running $haveDescription. Upgrade the array or omit the unsupported option(s)." +} diff --git a/Private/Get-PfbCapabilityMap.ps1 b/Private/Get-PfbCapabilityMap.ps1 new file mode 100644 index 0000000..1b2a5c6 --- /dev/null +++ b/Private/Get-PfbCapabilityMap.ps1 @@ -0,0 +1,34 @@ +function Get-PfbCapabilityMap { + <# + .SYNOPSIS + Loads and caches Data/PfbCapabilityMap.json, the generated manifest mapping each + FlashBlade REST endpoint (and its parameters/request-body fields) to the REST + version it was introduced in. + .DESCRIPTION + Returns $null if the manifest file is missing rather than throwing -- callers + (Assert-PfbApiCapability) treat a missing/unloadable map as "nothing to check + against" rather than a hard failure. + #> + [CmdletBinding()] + param() + + if ($null -ne $script:PfbCapabilityMap) { + return $script:PfbCapabilityMap + } + + $path = Join-Path $script:PfbModuleRoot 'Data/PfbCapabilityMap.json' + if (-not (Test-Path $path)) { + return $null + } + + $json = Get-Content -Path $path -Raw + # ConvertFrom-Json has no -Depth parameter on Windows PowerShell 5.1 (added in PS6) -- + # 5.1's own recursion limit (100) is already far deeper than this manifest's shape. + $script:PfbCapabilityMap = if ($PSVersionTable.PSVersion.Major -ge 6) { + $json | ConvertFrom-Json -Depth 20 + } + else { + $json | ConvertFrom-Json + } + return $script:PfbCapabilityMap +} diff --git a/Private/Get-PfbVersionMap.ps1 b/Private/Get-PfbVersionMap.ps1 new file mode 100644 index 0000000..30c77bf --- /dev/null +++ b/Private/Get-PfbVersionMap.ps1 @@ -0,0 +1,33 @@ +function Get-PfbVersionMap { + <# + .SYNOPSIS + Loads and caches Data/PfbVersionMap.json, the REST-version to Purity//FB-version + pairing. + .DESCRIPTION + Returns $null if the file is missing. This map is purely cosmetic -- it only + enriches capability-check error messages with a Purity//FB version alongside the + REST version; a missing map never blocks a call. + #> + [CmdletBinding()] + param() + + if ($null -ne $script:PfbVersionMap) { + return $script:PfbVersionMap + } + + $path = Join-Path $script:PfbModuleRoot 'Data/PfbVersionMap.json' + if (-not (Test-Path $path)) { + return $null + } + + $json = Get-Content -Path $path -Raw + # ConvertFrom-Json has no -Depth parameter on Windows PowerShell 5.1 (added in PS6) -- + # 5.1's own recursion limit (100) is already far deeper than this manifest's shape. + $script:PfbVersionMap = if ($PSVersionTable.PSVersion.Major -ge 6) { + $json | ConvertFrom-Json -Depth 5 + } + else { + $json | ConvertFrom-Json + } + return $script:PfbVersionMap +} diff --git a/Private/Invoke-PfbApiRequest.ps1 b/Private/Invoke-PfbApiRequest.ps1 index 2cdaea2..c6c7075 100644 --- a/Private/Invoke-PfbApiRequest.ps1 +++ b/Private/Invoke-PfbApiRequest.ps1 @@ -35,6 +35,11 @@ function Invoke-PfbApiRequest { [string]$ApiVersionOverride ) + # Fail fast if the connected array's REST version doesn't support this endpoint/param/ + # field, before any network call is made. Never sent if incompatible: see + # Assert-PfbApiCapability's header for why an unrecognized endpoint is a silent no-op. + Assert-PfbApiCapability -Array $Array -Method $Method -Endpoint $Endpoint -Body $Body -QueryParams $QueryParams -ApiVersion $ApiVersionOverride + # Certificate/OAuth2 sessions: proactively refresh the access token before it expires, # rather than waiting for a 401. A proactive refresh generates no failed-authentication # entry in the array's session log, unlike a reactive 401-triggered refresh. diff --git a/Private/Test-PfbVersionAtLeast.ps1 b/Private/Test-PfbVersionAtLeast.ps1 new file mode 100644 index 0000000..e2e5f81 --- /dev/null +++ b/Private/Test-PfbVersionAtLeast.ps1 @@ -0,0 +1,34 @@ +function Test-PfbVersionAtLeast { + <# + .SYNOPSIS + Tests whether one REST API version string is numerically >= another. + .DESCRIPTION + Naive string comparison ranks '2.9' above '2.26'. Parses each into numeric + Major/Minor components (same idiom as ConvertTo-PfbVersionObject) and compares + those instead. + .PARAMETER Have + The version to test, e.g. the connected array's negotiated REST version. + .PARAMETER Need + The minimum version required. + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [string]$Have, + + [Parameter(Mandatory)] + [string]$Need + ) + + $haveParts = $Have -split '\.' + $needParts = $Need -split '\.' + $haveMajor = [int]$haveParts[0] + $haveMinor = [int]$haveParts[1] + $needMajor = [int]$needParts[0] + $needMinor = [int]$needParts[1] + + if ($haveMajor -ne $needMajor) { + return $haveMajor -gt $needMajor + } + return $haveMinor -ge $needMinor +} diff --git a/Public/Array/Get-PfbArrayPerformanceReplication.ps1 b/Public/Array/Get-PfbArrayPerformanceReplication.ps1 index 0153eec..e062757 100644 --- a/Public/Array/Get-PfbArrayPerformanceReplication.ps1 +++ b/Public/Array/Get-PfbArrayPerformanceReplication.ps1 @@ -17,6 +17,9 @@ function Get-PfbArrayPerformanceReplication { End of the time range for historical data (epoch milliseconds or datetime string). .PARAMETER Resolution Time resolution for data points in milliseconds (e.g. 30000, 86400000). + .PARAMETER Type + Restricts results to replication performance for a specific object type. Valid values + are "all", "file-system", and "object-store". .PARAMETER Array The FlashBlade connection object. If not specified, the default connection is used. .EXAMPLE @@ -37,6 +40,9 @@ function Get-PfbArrayPerformanceReplication { [Parameter()] [long]$StartTime, [Parameter()] [long]$EndTime, [Parameter()] [long]$Resolution, + [Parameter()] + [ValidateSet('all', 'file-system', 'object-store')] + [string]$Type, [Parameter()] [PSCustomObject]$Array ) @@ -52,6 +58,7 @@ function Get-PfbArrayPerformanceReplication { if ($StartTime) { $queryParams['start_time'] = $StartTime } if ($EndTime) { $queryParams['end_time'] = $EndTime } if ($Resolution) { $queryParams['resolution'] = $Resolution } + if ($Type) { $queryParams['type'] = $Type } Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'arrays/performance/replication' -QueryParams $queryParams -AutoPaginate } diff --git a/Public/FileSystem/Get-PfbFileSystemSession.ps1 b/Public/FileSystem/Get-PfbFileSystemSession.ps1 index 2926679..0c48f2c 100644 --- a/Public/FileSystem/Get-PfbFileSystemSession.ps1 +++ b/Public/FileSystem/Get-PfbFileSystemSession.ps1 @@ -4,12 +4,12 @@ function Get-PfbFileSystemSession { Retrieves file system sessions from the FlashBlade. .DESCRIPTION Returns active client sessions connected to file systems on the FlashBlade. - Supports filtering by file system name, ID, or advanced filter expressions. + Supports filtering by session name, protocol, or advanced filter expressions. Auto-paginates by default. .PARAMETER Name - One or more file system names to retrieve sessions for. Accepts pipeline input. - .PARAMETER Id - One or more session IDs to retrieve. + One or more session names to filter by -- the session's own generated identifier + (e.g. as returned in a prior Get-PfbFileSystemSession call's Name property), NOT the + name of a file system. Accepts pipeline input. .PARAMETER Filter A server-side filter expression to narrow results. .PARAMETER Sort @@ -18,14 +18,17 @@ function Get-PfbFileSystemSession { Maximum number of items to return. .PARAMETER TotalOnly Return only the total count, not the items. + .PARAMETER Protocol + Restricts results to sessions using one or more specific protocols. Valid values are + "nfs" and "smb". .PARAMETER Array The FlashBlade connection object. If not specified, uses the default connection. .EXAMPLE Get-PfbFileSystemSession Returns all file system sessions on the FlashBlade. .EXAMPLE - Get-PfbFileSystemSession -Name "fs01" - Returns all sessions connected to file system 'fs01'. + Get-PfbFileSystemSession -Name "22517998136858346-smb" + Returns the single session with that session name. .EXAMPLE Get-PfbFileSystemSession -Filter "protocol='NFS'" -Limit 50 Returns up to 50 NFS sessions. @@ -36,10 +39,6 @@ function Get-PfbFileSystemSession { [ValidateNotNullOrEmpty()] [string[]]$Name, - [Parameter(ParameterSetName = 'ById')] - [ValidateNotNullOrEmpty()] - [string[]]$Id, - [Parameter()] [string]$Filter, @@ -53,6 +52,10 @@ function Get-PfbFileSystemSession { [Parameter()] [switch]$TotalOnly, + [Parameter()] + [ValidateSet('nfs', 'smb')] + [string[]]$Protocol, + [Parameter()] [PSCustomObject]$Array ) @@ -60,22 +63,20 @@ function Get-PfbFileSystemSession { begin { Assert-PfbConnection -Array ([ref]$Array) $allNames = [System.Collections.Generic.List[string]]::new() - $allIds = [System.Collections.Generic.List[string]]::new() } process { if ($Name) { foreach ($n in $Name) { $allNames.Add($n) } } - if ($Id) { foreach ($i in $Id) { $allIds.Add($i) } } } end { $queryParams = @{} if ($allNames.Count -gt 0) { $queryParams['names'] = $allNames -join ',' } - if ($allIds.Count -gt 0) { $queryParams['ids'] = $allIds -join ',' } if ($Filter) { $queryParams['filter'] = $Filter } if ($Sort) { $queryParams['sort'] = $Sort } if ($Limit -gt 0) { $queryParams['limit'] = $Limit } if ($TotalOnly) { $queryParams['total_only'] = 'true' } + if ($Protocol) { $queryParams['protocols'] = $Protocol -join ',' } Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'file-systems/sessions' -QueryParams $queryParams -AutoPaginate } diff --git a/Public/FileSystem/Remove-PfbFileSystemSession.ps1 b/Public/FileSystem/Remove-PfbFileSystemSession.ps1 index 064a98b..a727af1 100644 --- a/Public/FileSystem/Remove-PfbFileSystemSession.ps1 +++ b/Public/FileSystem/Remove-PfbFileSystemSession.ps1 @@ -1,25 +1,50 @@ function Remove-PfbFileSystemSession { <# .SYNOPSIS - Terminates a file system session on the FlashBlade. + Terminates one or more file system sessions on the FlashBlade. .DESCRIPTION - Forces the termination of an active client session connected to a file system. - This is a disruptive operation that disconnects the client and may cause - in-progress operations to fail. + Forces the termination of active client session(s). This is a disruptive operation + that disconnects the client(s) and may cause in-progress operations to fail. + + Two mutually exclusive modes are supported, matching the real REST endpoint's own + rules (live-confirmed: the server rejects combining `names` with any other query + parameter, including `protocols`): + - -Name: terminates one specific session, identified by the session's own generated + name (as returned in the Name property of Get-PfbFileSystemSession's output) -- + NOT a file system name. + - -Protocol: bulk-terminates every active session using the given protocol(s), + across the entire array, regardless of file system or client. Cannot be combined + with -Name. The server requires an internal "disruptive" flag for this + single-filter bulk mode, which this cmdlet sets automatically -- there is no + narrower per-client/per-user filter exposed here, so any use of -Protocol affects + every matching session array-wide. Because of that blast radius, -Protocol also + requires -Force -- independent of $ConfirmPreference/-Confirm, so a caller who has + globally lowered their confirm preference still cannot trigger a bulk purge without + explicitly opting in. .PARAMETER Name - The name of the file system whose session should be terminated. - .PARAMETER Id - The ID of the session to terminate. + The session's own generated name to terminate (as returned by + Get-PfbFileSystemSession's Name property) -- NOT the name of a file system. + Mandatory in the ByName parameter set; cannot be combined with -Protocol. + .PARAMETER Protocol + Bulk-terminates every active session using one or more specific protocols, across + the entire array. Valid values are "nfs" and "smb". Cannot be combined with -Name -- + the server rejects that combination. This is an array-wide, cross-client operation; + there is no narrower filter exposed by this cmdlet. Requires -Force. + .PARAMETER Force + Required alongside -Protocol to acknowledge the array-wide, cross-client blast radius + of that bulk-terminate mode. This check is independent of $ConfirmPreference/-Confirm + -- it cannot be bypassed by lowering the session's confirm preference, unlike the + standard SupportsShouldProcess prompt this cmdlet also honors. .PARAMETER Array The FlashBlade connection object. If not specified, uses the default connection. .EXAMPLE - Remove-PfbFileSystemSession -Name "fs01" - Terminates sessions on file system 'fs01'. + Remove-PfbFileSystemSession -Name "22517998136858346-smb" + Terminates the single session with that session name. .EXAMPLE - Remove-PfbFileSystemSession -Id "abc-123" - Terminates the session with the specified ID. + Remove-PfbFileSystemSession -Protocol 'smb' -Force -Confirm:$false + Bulk-terminates every active SMB session on the array. .EXAMPLE - Remove-PfbFileSystemSession -Name "fs01" -Confirm:$false + Remove-PfbFileSystemSession -Name "22517998136858346-smb" -Confirm:$false Terminates the session without prompting for confirmation. #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')] @@ -27,8 +52,12 @@ function Remove-PfbFileSystemSession { [Parameter(ParameterSetName = 'ByName', Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [string]$Name, - [Parameter(ParameterSetName = 'ById', Mandatory)] - [string]$Id, + [Parameter(ParameterSetName = 'ByProtocol', Mandatory)] + [ValidateSet('nfs', 'smb')] + [string[]]$Protocol, + + [Parameter()] + [switch]$Force, [Parameter()] [PSCustomObject]$Array @@ -40,12 +69,23 @@ function Remove-PfbFileSystemSession { process { $queryParams = @{} - if ($Name) { $queryParams['names'] = $Name } - if ($Id) { $queryParams['ids'] = $Id } + $action = 'Terminate file system session' - $target = if ($Name) { $Name } else { $Id } + if ($PSCmdlet.ParameterSetName -eq 'ByProtocol') { + if (-not $Force) { + throw "Remove-PfbFileSystemSession -Protocol bulk-terminates EVERY active session using that protocol, across the entire array, for every client -- pass -Force to acknowledge this before it will run (independent of `$ConfirmPreference/-Confirm)." + } + $queryParams['protocols'] = $Protocol -join ',' + $queryParams['disruptive'] = 'true' + $target = $Protocol -join ', ' + $action = 'Bulk-terminate ALL file system sessions using protocol(s)' + } + else { + $queryParams['names'] = $Name + $target = $Name + } - if ($PSCmdlet.ShouldProcess($target, 'Terminate file system session')) { + if ($PSCmdlet.ShouldProcess($target, $action)) { Invoke-PfbApiRequest -Array $Array -Method DELETE -Endpoint 'file-systems/sessions' -QueryParams $queryParams } } diff --git a/Public/Network/Invoke-PfbNetworkTrace.ps1 b/Public/Network/Invoke-PfbNetworkTrace.ps1 index 3abdedf..aaec164 100644 --- a/Public/Network/Invoke-PfbNetworkTrace.ps1 +++ b/Public/Network/Invoke-PfbNetworkTrace.ps1 @@ -10,6 +10,8 @@ function Invoke-PfbNetworkTrace { The hostname or IP address to trace the route to. This parameter is mandatory. .PARAMETER SourceName The name of the network interface to use as the source of the trace. + .PARAMETER Method + The trace protocol to use. Valid values are "icmp", "tcp", and "udp". .PARAMETER Array The FlashBlade connection object. If not specified, the default connection is used. .EXAMPLE @@ -29,12 +31,16 @@ function Invoke-PfbNetworkTrace { param( [Parameter(Mandatory, Position = 0)] [string]$Destination, [Parameter()] [string]$SourceName, + [Parameter()] + [ValidateSet('icmp', 'tcp', 'udp')] + [string]$Method, [Parameter()] [PSCustomObject]$Array ) begin { Assert-PfbConnection -Array ([ref]$Array) } process { $queryParams = @{ 'destination' = $Destination } if ($SourceName) { $queryParams['source.name'] = $SourceName } + if ($Method) { $queryParams['method'] = $Method } Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'network-interfaces/trace' -QueryParams $queryParams } } diff --git a/Public/Policy/Get-PfbPolicyAllMember.ps1 b/Public/Policy/Get-PfbPolicyAllMember.ps1 index cafb7eb..d2d872c 100644 --- a/Public/Policy/Get-PfbPolicyAllMember.ps1 +++ b/Public/Policy/Get-PfbPolicyAllMember.ps1 @@ -13,6 +13,11 @@ function Get-PfbPolicyAllMember { One or more member names to filter by. .PARAMETER MemberId One or more member IDs to filter by. + .PARAMETER MemberType + One or more member types to filter by (e.g. "file-systems", "object-store-users"). + Tab-completes the values documented as of this module's release, but the server's + accepted set has grown across REST versions and may include newer values not offered + here — any value is passed through as-is, not validated client-side. .PARAMETER Filter A server-side filter expression to narrow results. .PARAMETER Limit @@ -38,6 +43,18 @@ function Get-PfbPolicyAllMember { [Parameter()] [string[]]$PolicyId, [Parameter()] [string[]]$MemberName, [Parameter()] [string[]]$MemberId, + [Parameter()] + [ArgumentCompleter({ + param($CommandName, $ParameterName, $WordToComplete, $CommandAst, $FakeBoundParameters) + @( + 'file-systems', + 'file-system-snapshots', + 'file-system-replica-links', + 'object-store-users', + 'object-store-accounts' + ) | Where-Object { $_ -like "$WordToComplete*" } + })] + [string[]]$MemberType, [Parameter()] [string]$Filter, [Parameter()] [int]$Limit, [Parameter()] [PSCustomObject]$Array ) @@ -49,6 +66,7 @@ function Get-PfbPolicyAllMember { if ($PolicyId) { $queryParams['policy_ids'] = $PolicyId -join ',' } if ($MemberName) { $queryParams['member_names'] = $MemberName -join ',' } if ($MemberId) { $queryParams['member_ids'] = $MemberId -join ',' } + if ($MemberType) { $queryParams['member_types'] = $MemberType -join ',' } if ($Filter) { $queryParams['filter'] = $Filter } if ($Limit -gt 0) { $queryParams['limit'] = $Limit } diff --git a/Public/Replication/Get-PfbArrayConnectionPerformanceReplication.ps1 b/Public/Replication/Get-PfbArrayConnectionPerformanceReplication.ps1 index 2b15618..e83d6c8 100644 --- a/Public/Replication/Get-PfbArrayConnectionPerformanceReplication.ps1 +++ b/Public/Replication/Get-PfbArrayConnectionPerformanceReplication.ps1 @@ -19,6 +19,9 @@ function Get-PfbArrayConnectionPerformanceReplication { End of the time range for historical data (epoch milliseconds). .PARAMETER Resolution Time resolution for data points in milliseconds (e.g., 30000, 86400000). + .PARAMETER Type + Restricts results to replication performance for a specific object type. Valid values + are "all", "file-system", and "object-store". .PARAMETER Array The FlashBlade connection object. If not specified, the default connection is used. .EXAMPLE @@ -41,6 +44,9 @@ function Get-PfbArrayConnectionPerformanceReplication { [Parameter()] [long]$StartTime, [Parameter()] [long]$EndTime, [Parameter()] [long]$Resolution, + [Parameter()] + [ValidateSet('all', 'file-system', 'object-store')] + [string]$Type, [Parameter()] [PSCustomObject]$Array ) begin { @@ -61,6 +67,7 @@ function Get-PfbArrayConnectionPerformanceReplication { if ($StartTime) { $queryParams['start_time'] = $StartTime } if ($EndTime) { $queryParams['end_time'] = $EndTime } if ($Resolution) { $queryParams['resolution'] = $Resolution } + if ($Type) { $queryParams['type'] = $Type } Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'array-connections/performance/replication' -QueryParams $queryParams -AutoPaginate } } diff --git a/Public/Support/Test-PfbSupport.ps1 b/Public/Support/Test-PfbSupport.ps1 index 9cfeb9e..6fb7c3a 100644 --- a/Public/Support/Test-PfbSupport.ps1 +++ b/Public/Support/Test-PfbSupport.ps1 @@ -6,12 +6,19 @@ function Test-PfbSupport { The Test-PfbSupport cmdlet tests the support connectivity of the connected Pure Storage FlashBlade. This returns test results indicating whether Phone Home and remote assist connections are functioning properly. + .PARAMETER TestType + Restricts which support connectivity test is run. Valid values are "all", "phonehome", + and "remote-assist". .PARAMETER Array The FlashBlade connection object. If not specified, the default connection is used. .EXAMPLE Test-PfbSupport Runs the support connectivity test on the connected FlashBlade. + .EXAMPLE + Test-PfbSupport -TestType 'phonehome' + + Runs only the phone-home connectivity test. .EXAMPLE Test-PfbSupport -Array $FlashBlade @@ -22,7 +29,16 @@ function Test-PfbSupport { Runs the support test and displays the test type from the results. #> [CmdletBinding()] - param([Parameter()] [PSCustomObject]$Array) + param( + [Parameter()] + [ValidateSet('all', 'phonehome', 'remote-assist')] + [string]$TestType, + + [Parameter()] + [PSCustomObject]$Array + ) Assert-PfbConnection -Array ([ref]$Array) - Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'support/test' + $queryParams = @{} + if ($TestType) { $queryParams['test_type'] = $TestType } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'support/test' -QueryParams $queryParams } diff --git a/PureStorageFlashBladePowerShell.psd1 b/PureStorageFlashBladePowerShell.psd1 index d42386e..7217a61 100644 --- a/PureStorageFlashBladePowerShell.psd1 +++ b/PureStorageFlashBladePowerShell.psd1 @@ -1,6 +1,6 @@ @{ RootModule = 'PureStorageFlashBladePowerShell.psm1' - ModuleVersion = '2.1.2' + ModuleVersion = '2.2.0' GUID = 'b25473b3-9eb7-414d-8da1-264e10f73d86' Author = 'Pure Storage, Inc.' CompanyName = 'Pure Storage, Inc.' @@ -548,6 +548,17 @@ LicenseUri = 'https://github.com/PureStorage-OpenConnect/flashblade-powershell/blob/main/LICENSE' # ReleaseNotes carries only the latest-version highlight; full history is in CHANGELOG.md. ReleaseNotes = @' +v2.2.0 - API version-awareness + feature-gap parameters. + Adds a generated capability map of every FlashBlade REST endpoint/parameter/field to + the API version that introduced it, and a fail-fast runtime check that rejects a call + (before any HTTP request) when the connected array's version cannot support it. The + check fails safe: a missing map / unmatched endpoint / unresolvable version is a no-op. + Also exposes seven documented query-parameter enums that cmdlets never surfaced + (Get-PfbArrayConnectionPerformanceReplication/Get-PfbArrayPerformanceReplication -Type, + Test-PfbSupport -TestType, Invoke-PfbNetworkTrace -Method, Get-PfbFileSystemSession + -Protocol, Get-PfbPolicyAllMember -MemberType), and fixes Get-/Remove-PfbFileSystemSession + (removed a non-working -Id, added a -Protocol bulk-terminate mode, corrected -Name help). + v2.1.2 - API-drift cleanup. Removes three cmdlets that modeled endpoints that never existed in the FlashBlade API and always returned HTTP 405 (Remove-PfbSession, New-/Remove-PfbNetworkAccessPolicy; network-access policy *rules* remain fully diff --git a/PureStorageFlashBladePowerShell.psm1 b/PureStorageFlashBladePowerShell.psm1 index c9dbf0c..0ab0eed 100644 --- a/PureStorageFlashBladePowerShell.psm1 +++ b/PureStorageFlashBladePowerShell.psm1 @@ -4,6 +4,11 @@ $script:PfbDefaultArray = $null $script:PfbArrays = @{} +# Module-scoped API-capability state (Data/PfbCapabilityMap.json, Data/PfbVersionMap.json) +$script:PfbModuleRoot = $PSScriptRoot +$script:PfbCapabilityMap = $null +$script:PfbVersionMap = $null + # Dot-source all private functions $privatePath = Join-Path $PSScriptRoot 'Private' if (Test-Path $privatePath) { diff --git a/Reports/PfbApiDriftReport.json b/Reports/PfbApiDriftReport.json new file mode 100644 index 0000000..bde3901 --- /dev/null +++ b/Reports/PfbApiDriftReport.json @@ -0,0 +1,4946 @@ +{ + "schemaVersion": 1, + "generatedFrom": [ + "2.0", + "2.1", + "2.2", + "2.3", + "2.4", + "2.5", + "2.6", + "2.7", + "2.8", + "2.9", + "2.10", + "2.11", + "2.12", + "2.13", + "2.14", + "2.15", + "2.16", + "2.17", + "2.18", + "2.19", + "2.20", + "2.21", + "2.22", + "2.23", + "2.24", + "2.25", + "2.26", + "2.27" + ], + "sinceVersion": null, + "uncoveredEndpoints": [ + { + "endpoint": "GET /api/login-banner", + "minVersion": "2.0" + }, + { + "endpoint": "POST /bucket-replica-links", + "minVersion": "2.0" + }, + { + "endpoint": "PATCH /bucket-replica-links", + "minVersion": "2.0" + }, + { + "endpoint": "DELETE /bucket-replica-links", + "minVersion": "2.0" + }, + { + "endpoint": "POST /certificate-groups/certificates", + "minVersion": "2.0" + }, + { + "endpoint": "DELETE /certificate-groups/certificates", + "minVersion": "2.0" + }, + { + "endpoint": "PATCH /directory-services/test", + "minVersion": "2.0" + }, + { + "endpoint": "GET /file-systems/performance", + "minVersion": "2.0" + }, + { + "endpoint": "PATCH /object-store-access-keys", + "minVersion": "2.0" + }, + { + "endpoint": "DELETE /policies/file-system-snapshots", + "minVersion": "2.0" + }, + { + "endpoint": "GET /policies/members", + "minVersion": "2.0" + }, + { + "endpoint": "PATCH /smtp-servers", + "minVersion": "2.0" + }, + { + "endpoint": "POST /kmip", + "minVersion": "2.1" + }, + { + "endpoint": "DELETE /kmip", + "minVersion": "2.1" + }, + { + "endpoint": "PATCH /object-store-access-policies", + "minVersion": "2.2" + }, + { + "endpoint": "GET /file-systems/policies-all", + "minVersion": "2.3" + }, + { + "endpoint": "PATCH /object-store-accounts", + "minVersion": "2.8" + }, + { + "endpoint": "POST /admins", + "minVersion": "2.15" + }, + { + "endpoint": "DELETE /admins", + "minVersion": "2.15" + }, + { + "endpoint": "PATCH /sso/saml2/idps/test", + "minVersion": "2.16" + }, + { + "endpoint": "GET /tls-policies/network-interfaces", + "minVersion": "2.17" + }, + { + "endpoint": "POST /tls-policies/network-interfaces", + "minVersion": "2.17" + }, + { + "endpoint": "DELETE /tls-policies/network-interfaces", + "minVersion": "2.17" + }, + { + "endpoint": "PATCH /file-system-replica-links", + "minVersion": "2.17" + }, + { + "endpoint": "PATCH /object-store-roles/object-store-trust-policies/upload", + "minVersion": "2.17" + }, + { + "endpoint": "GET /object-store-roles/object-store-trust-policies/download", + "minVersion": "2.17" + }, + { + "endpoint": "POST /nodes/batch", + "minVersion": "2.18" + }, + { + "endpoint": "POST /resource-accesses/batch", + "minVersion": "2.19" + }, + { + "endpoint": "GET /file-systems/data-eviction-policies", + "minVersion": "2.21" + }, + { + "endpoint": "POST /file-systems/data-eviction-policies", + "minVersion": "2.21" + }, + { + "endpoint": "DELETE /file-systems/data-eviction-policies", + "minVersion": "2.21" + }, + { + "endpoint": "GET /admins/management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "POST /admins/management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "DELETE /admins/management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "GET /arrays/management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "POST /arrays/management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "DELETE /arrays/management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "GET /management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "POST /management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "DELETE /management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "PATCH /management-authentication-policies", + "minVersion": "2.22" + }, + { + "endpoint": "GET /management-authentication-policies/members", + "minVersion": "2.22" + }, + { + "endpoint": "POST /management-authentication-policies/members", + "minVersion": "2.22" + }, + { + "endpoint": "DELETE /management-authentication-policies/members", + "minVersion": "2.22" + }, + { + "endpoint": "PUT /presets/workload", + "minVersion": "2.23" + }, + { + "endpoint": "GET /resiliency-groups/members", + "minVersion": "2.23" + }, + { + "endpoint": "PUT /workloads/tags/batch", + "minVersion": "2.23" + }, + { + "endpoint": "DELETE /directory-services/local/directory-services", + "minVersion": "2.24" + }, + { + "endpoint": "PATCH /directory-services/local/directory-services", + "minVersion": "2.24" + }, + { + "endpoint": "PATCH /directory-services/local/groups", + "minVersion": "2.24" + }, + { + "endpoint": "GET /directory-services/local/users", + "minVersion": "2.24" + }, + { + "endpoint": "POST /directory-services/local/users", + "minVersion": "2.24" + }, + { + "endpoint": "DELETE /directory-services/local/users", + "minVersion": "2.24" + }, + { + "endpoint": "PATCH /directory-services/local/users", + "minVersion": "2.24" + }, + { + "endpoint": "GET /directory-services/local/users/members", + "minVersion": "2.24" + }, + { + "endpoint": "POST /directory-services/local/users/members", + "minVersion": "2.24" + }, + { + "endpoint": "DELETE /directory-services/local/users/members", + "minVersion": "2.24" + }, + { + "endpoint": "GET /support-diagnostics/settings", + "minVersion": "2.24" + }, + { + "endpoint": "PATCH /support-diagnostics/settings", + "minVersion": "2.24" + }, + { + "endpoint": "GET /software-bundle", + "minVersion": "2.24" + }, + { + "endpoint": "POST /software-bundle", + "minVersion": "2.24" + }, + { + "endpoint": "GET /software-patches", + "minVersion": "2.24" + }, + { + "endpoint": "POST /software-patches", + "minVersion": "2.24" + }, + { + "endpoint": "GET /file-systems/user-group-quota-policies", + "minVersion": "2.25" + }, + { + "endpoint": "POST /file-systems/user-group-quota-policies", + "minVersion": "2.25" + }, + { + "endpoint": "DELETE /file-systems/user-group-quota-policies", + "minVersion": "2.25" + }, + { + "endpoint": "GET /file-system-junctions", + "minVersion": "2.25" + }, + { + "endpoint": "POST /file-system-junctions", + "minVersion": "2.25" + }, + { + "endpoint": "DELETE /file-system-junctions", + "minVersion": "2.25" + }, + { + "endpoint": "GET /file-system-group-quotas", + "minVersion": "2.25" + }, + { + "endpoint": "GET /file-systems/groups", + "minVersion": "2.25" + }, + { + "endpoint": "GET /file-system-user-quotas", + "minVersion": "2.25" + }, + { + "endpoint": "GET /file-systems/users", + "minVersion": "2.25" + }, + { + "endpoint": "GET /realm-connections", + "minVersion": "2.25" + }, + { + "endpoint": "POST /realm-connections", + "minVersion": "2.25" + }, + { + "endpoint": "DELETE /realm-connections", + "minVersion": "2.25" + }, + { + "endpoint": "GET /realm-connections/connection-key", + "minVersion": "2.25" + }, + { + "endpoint": "POST /realm-connections/connection-key", + "minVersion": "2.25" + }, + { + "endpoint": "DELETE /realm-connections/connection-key", + "minVersion": "2.25" + }, + { + "endpoint": "GET /remote-realms", + "minVersion": "2.25" + }, + { + "endpoint": "GET /user-group-quota-policies", + "minVersion": "2.25" + }, + { + "endpoint": "POST /user-group-quota-policies", + "minVersion": "2.25" + }, + { + "endpoint": "PATCH /user-group-quota-policies", + "minVersion": "2.25" + }, + { + "endpoint": "DELETE /user-group-quota-policies", + "minVersion": "2.25" + }, + { + "endpoint": "GET /user-group-quota-policies/rules", + "minVersion": "2.25" + }, + { + "endpoint": "POST /user-group-quota-policies/rules", + "minVersion": "2.25" + }, + { + "endpoint": "DELETE /user-group-quota-policies/rules", + "minVersion": "2.25" + }, + { + "endpoint": "PATCH /user-group-quota-policies/rules", + "minVersion": "2.25" + }, + { + "endpoint": "GET /user-group-quota-policies/file-systems", + "minVersion": "2.25" + }, + { + "endpoint": "POST /user-group-quota-policies/file-systems", + "minVersion": "2.25" + }, + { + "endpoint": "DELETE /user-group-quota-policies/file-systems", + "minVersion": "2.25" + }, + { + "endpoint": "GET /user-group-quota-policies/members", + "minVersion": "2.25" + }, + { + "endpoint": "GET /management-access-policies/roles", + "minVersion": "2.26" + }, + { + "endpoint": "POST /management-access-policies/roles", + "minVersion": "2.26" + }, + { + "endpoint": "DELETE /management-access-policies/roles", + "minVersion": "2.26" + }, + { + "endpoint": "GET /management-access-policies/roles/permissions", + "minVersion": "2.26" + }, + { + "endpoint": "POST /management-access-policies/roles/permissions", + "minVersion": "2.26" + }, + { + "endpoint": "DELETE /management-access-policies/roles/permissions", + "minVersion": "2.26" + }, + { + "endpoint": "PATCH /management-access-policies/roles/permissions", + "minVersion": "2.26" + }, + { + "endpoint": "GET /management-access-policies/roles/permissions/supported-resources", + "minVersion": "2.26" + }, + { + "endpoint": "GET /management-access-policies/rules", + "minVersion": "2.26" + }, + { + "endpoint": "POST /management-access-policies/rules", + "minVersion": "2.26" + }, + { + "endpoint": "DELETE /management-access-policies/rules", + "minVersion": "2.26" + }, + { + "endpoint": "PATCH /management-access-policies/rules", + "minVersion": "2.26" + }, + { + "endpoint": "PATCH /remote-arrays", + "minVersion": "2.26" + }, + { + "endpoint": "GET /support/system-manifest", + "minVersion": "2.26" + }, + { + "endpoint": "GET /topology-groups", + "minVersion": "2.26" + }, + { + "endpoint": "POST /topology-groups", + "minVersion": "2.26" + }, + { + "endpoint": "PATCH /topology-groups", + "minVersion": "2.26" + }, + { + "endpoint": "DELETE /topology-groups", + "minVersion": "2.26" + }, + { + "endpoint": "GET /topology-groups/arrays", + "minVersion": "2.26" + }, + { + "endpoint": "GET /topology-groups/members", + "minVersion": "2.26" + }, + { + "endpoint": "POST /topology-groups/members", + "minVersion": "2.26" + }, + { + "endpoint": "DELETE /topology-groups/members", + "minVersion": "2.26" + }, + { + "endpoint": "PATCH /active-directory/test", + "minVersion": "2.27" + }, + { + "endpoint": "POST /fleets/members/batch", + "minVersion": "2.27" + }, + { + "endpoint": "GET /storage-classes/members", + "minVersion": "2.27" + } + ], + "parameterGaps": [ + { + "endpoint": "DELETE /active-directory", + "cmdlets": [ + "Remove-PfbActiveDirectory" + ], + "missingParameters": [ + "local_only" + ] + }, + { + "endpoint": "DELETE /admins/api-tokens", + "cmdlets": [ + "Remove-PfbApiToken" + ], + "missingParameters": [ + "admin_ids", + "admin_names", + "context_names" + ] + }, + { + "endpoint": "DELETE /admins/cache", + "cmdlets": [ + "Remove-PfbAdminCache" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /admins/management-access-policies", + "cmdlets": [ + "Remove-PfbAdminManagementAccessPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /admins/ssh-certificate-authority-policies", + "cmdlets": [ + "Remove-PfbAdminSshCaPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /array-connections", + "cmdlets": [ + "Remove-PfbArrayConnection" + ], + "missingParameters": [ + "context_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "DELETE /arrays/ssh-certificate-authority-policies", + "cmdlets": [ + "Remove-PfbArraySshCaPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /audit-file-systems-policies", + "cmdlets": [ + "Remove-PfbAuditFileSystemPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /audit-file-systems-policies/members", + "cmdlets": [ + "Remove-PfbAuditFileSystemPolicyMember" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /audit-object-store-policies", + "cmdlets": [ + "Remove-PfbAuditObjectStorePolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /audit-object-store-policies/members", + "cmdlets": [ + "Remove-PfbAuditObjectStorePolicyMember" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /buckets/audit-filters", + "cmdlets": [ + "Remove-PfbBucketAuditFilter" + ], + "missingParameters": [ + "bucket_ids", + "bucket_names", + "context_names", + "names" + ] + }, + { + "endpoint": "DELETE /buckets/cross-origin-resource-sharing-policies", + "cmdlets": [ + "Remove-PfbBucketCorsPolicy" + ], + "missingParameters": [ + "bucket_ids", + "bucket_names", + "context_names", + "names" + ] + }, + { + "endpoint": "DELETE /certificates/certificate-groups", + "cmdlets": [ + "Remove-PfbCertificateCertificateGroup" + ], + "missingParameters": [ + "certificate_group_ids", + "certificate_ids" + ] + }, + { + "endpoint": "DELETE /data-eviction-policies", + "cmdlets": [ + "Remove-PfbDataEvictionPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /data-eviction-policies/file-systems", + "cmdlets": [ + "Remove-PfbDataEvictionPolicyFileSystem" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /directory-services/local/groups", + "cmdlets": [ + "Remove-PfbLocalGroup" + ], + "missingParameters": [ + "context_names", + "gids", + "local_directory_service_ids", + "local_directory_service_names", + "sids" + ] + }, + { + "endpoint": "DELETE /dns", + "cmdlets": [ + "Remove-PfbDns" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /file-system-exports", + "cmdlets": [ + "Remove-PfbFileSystemExport" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /file-system-replica-links", + "cmdlets": [ + "Remove-PfbFileSystemReplicaLink" + ], + "missingParameters": [ + "context_names", + "local_file_system_ids", + "remote_file_system_ids", + "remote_ids" + ] + }, + { + "endpoint": "DELETE /file-system-replica-links/policies", + "cmdlets": [ + "Remove-PfbFileSystemReplicaLinkPolicy" + ], + "missingParameters": [ + "context_names", + "local_file_system_ids", + "local_file_system_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "DELETE /file-system-snapshots/policies", + "cmdlets": [ + "Remove-PfbFileSystemSnapshotPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /file-system-snapshots/transfer", + "cmdlets": [ + "Remove-PfbFileSystemSnapshotTransfer" + ], + "missingParameters": [ + "context_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "DELETE /file-systems/audit-policies", + "cmdlets": [ + "Remove-PfbFileSystemAuditPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /file-systems/locks", + "cmdlets": [ + "Remove-PfbFileLock" + ], + "missingParameters": [ + "client_names", + "context_names", + "file_system_ids", + "file_system_names", + "inodes", + "paths", + "recursive" + ] + }, + { + "endpoint": "DELETE /file-systems/policies", + "cmdlets": [ + "Remove-PfbFileSystemPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /file-systems/sessions", + "cmdlets": [ + "Remove-PfbFileSystemSession" + ], + "missingParameters": [ + "client_names", + "context_names", + "disruptive", + "protocols", + "user_names" + ] + }, + { + "endpoint": "DELETE /fleets/members", + "cmdlets": [ + "Remove-PfbFleetMember" + ], + "missingParameters": [ + "member_ids", + "unreachable" + ] + }, + { + "endpoint": "DELETE /lifecycle-rules", + "cmdlets": [ + "Remove-PfbLifecycleRule" + ], + "missingParameters": [ + "bucket_ids", + "bucket_names", + "context_names" + ] + }, + { + "endpoint": "DELETE /log-targets/file-systems", + "cmdlets": [ + "Remove-PfbLogTargetFileSystem" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /log-targets/object-store", + "cmdlets": [ + "Remove-PfbLogTargetObjectStore" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /management-access-policies", + "cmdlets": [ + "Remove-PfbManagementAccessPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /management-access-policies/admins", + "cmdlets": [ + "Remove-PfbManagementAccessPolicyAdmin" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /network-interfaces/tls-policies", + "cmdlets": [ + "Remove-PfbNetworkInterfaceTlsPolicy" + ], + "missingParameters": [ + "member_ids", + "policy_ids" + ] + }, + { + "endpoint": "DELETE /nfs-export-policies", + "cmdlets": [ + "Remove-PfbNfsExportPolicy" + ], + "missingParameters": [ + "context_names", + "versions" + ] + }, + { + "endpoint": "DELETE /node-groups/nodes", + "cmdlets": [ + "Remove-PfbNodeGroupNode" + ], + "missingParameters": [ + "node_group_ids", + "node_group_names", + "node_ids", + "node_names" + ] + }, + { + "endpoint": "DELETE /object-store-access-keys", + "cmdlets": [ + "Remove-PfbObjectStoreAccessKey" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /object-store-access-policies", + "cmdlets": [ + "Remove-PfbObjectStoreAccessPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /object-store-account-exports", + "cmdlets": [ + "Remove-PfbObjectStoreAccountExport" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /object-store-accounts", + "cmdlets": [ + "Remove-PfbObjectStoreAccount" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /object-store-remote-credentials", + "cmdlets": [ + "Remove-PfbObjectStoreRemoteCredential" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /object-store-roles", + "cmdlets": [ + "Remove-PfbObjectStoreRole" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /object-store-users", + "cmdlets": [ + "Remove-PfbObjectStoreUser" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /object-store-virtual-hosts", + "cmdlets": [ + "Remove-PfbObjectStoreVirtualHost" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /policies", + "cmdlets": [ + "Remove-PfbPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /policies/file-system-replica-links", + "cmdlets": [ + "Remove-PfbPolicyFileSystemReplicaLink" + ], + "missingParameters": [ + "context_names", + "local_file_system_ids", + "local_file_system_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "DELETE /policies/file-systems", + "cmdlets": [ + "Remove-PfbPolicyFileSystem" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /presets/workload", + "cmdlets": [ + "Remove-PfbPresetWorkload" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /qos-policies", + "cmdlets": [ + "Remove-PfbQosPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /qos-policies/members", + "cmdlets": [ + "Remove-PfbQosPolicyMember" + ], + "missingParameters": [ + "context_names", + "member_types" + ] + }, + { + "endpoint": "DELETE /s3-export-policies", + "cmdlets": [ + "Remove-PfbS3ExportPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /smb-client-policies", + "cmdlets": [ + "Remove-PfbSmbClientPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /smb-share-policies", + "cmdlets": [ + "Remove-PfbSmbSharePolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /ssh-certificate-authority-policies/admins", + "cmdlets": [ + "Remove-PfbSshCaPolicyAdmin" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /ssh-certificate-authority-policies/arrays", + "cmdlets": [ + "Remove-PfbSshCaPolicyArray" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /workloads", + "cmdlets": [ + "Remove-PfbWorkload" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "DELETE /worm-data-policies", + "cmdlets": [ + "Remove-PfbWormPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "GET /active-directory", + "cmdlets": [ + "Get-PfbActiveDirectory" + ], + "missingParameters": [ + "ids", + "limit", + "sort" + ] + }, + { + "endpoint": "GET /active-directory/test", + "cmdlets": [ + "Test-PfbActiveDirectory" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "filter", + "limit", + "sort" + ] + }, + { + "endpoint": "GET /admins", + "cmdlets": [ + "Get-PfbAdmin" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "expose_api_token" + ] + }, + { + "endpoint": "GET /admins/api-tokens", + "cmdlets": [ + "Get-PfbApiToken" + ], + "missingParameters": [ + "admin_ids", + "admin_names", + "allow_errors", + "context_names", + "expose_api_token" + ] + }, + { + "endpoint": "GET /admins/cache", + "cmdlets": [ + "Get-PfbAdminCache" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "refresh" + ] + }, + { + "endpoint": "GET /admins/management-access-policies", + "cmdlets": [ + "Get-PfbAdminManagementAccessPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /admins/ssh-certificate-authority-policies", + "cmdlets": [ + "Get-PfbAdminSshCaPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /alert-watchers/test", + "cmdlets": [ + "Test-PfbAlertWatcher" + ], + "missingParameters": [ + "filter", + "sort" + ] + }, + { + "endpoint": "GET /array-connections", + "cmdlets": [ + "Get-PfbArrayConnection" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "GET /array-connections/connection-key", + "cmdlets": [ + "Get-PfbArrayConnectionKey" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /array-connections/path", + "cmdlets": [ + "Get-PfbArrayConnectionPath" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "ids", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "GET /array-connections/performance/replication", + "cmdlets": [ + "Get-PfbArrayConnectionPerformanceReplication" + ], + "missingParameters": [ + "ids", + "remote_ids", + "remote_names", + "total_only", + "type" + ] + }, + { + "endpoint": "GET /arrays/clients/performance", + "cmdlets": [ + "Get-PfbArrayClientPerformance" + ], + "missingParameters": [ + "names", + "protocol", + "total_only" + ] + }, + { + "endpoint": "GET /arrays/clients/s3-specific-performance", + "cmdlets": [ + "Get-PfbArrayClientS3Performance" + ], + "missingParameters": [ + "names", + "total_only" + ] + }, + { + "endpoint": "GET /arrays/http-specific-performance", + "cmdlets": [ + "Get-PfbArrayHttpPerformance" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /arrays/nfs-specific-performance", + "cmdlets": [ + "Get-PfbArrayNfsPerformance" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /arrays/performance", + "cmdlets": [ + "Get-PfbArrayPerformance" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /arrays/performance/replication", + "cmdlets": [ + "Get-PfbArrayPerformanceReplication" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "type" + ] + }, + { + "endpoint": "GET /arrays/s3-specific-performance", + "cmdlets": [ + "Get-PfbArrayS3Performance" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /arrays/space", + "cmdlets": [ + "Get-PfbArraySpace" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "end_time", + "resolution", + "start_time" + ] + }, + { + "endpoint": "GET /arrays/space/storage-classes", + "cmdlets": [ + "Get-PfbArrayStorageClass" + ], + "missingParameters": [ + "end_time", + "resolution", + "start_time", + "storage_class_names", + "total_only" + ] + }, + { + "endpoint": "GET /arrays/ssh-certificate-authority-policies", + "cmdlets": [ + "Get-PfbArraySshCaPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /arrays/supported-time-zones", + "cmdlets": [ + "Get-PfbArraySupportedTimeZone" + ], + "missingParameters": [ + "names" + ] + }, + { + "endpoint": "GET /audit-file-systems-policies", + "cmdlets": [ + "Get-PfbAuditFileSystemPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /audit-file-systems-policies/members", + "cmdlets": [ + "Get-PfbAuditFileSystemPolicyMember" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /audit-file-systems-policy-operations", + "cmdlets": [ + "Get-PfbAuditFileSystemPolicyOperation" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "names" + ] + }, + { + "endpoint": "GET /audit-object-store-policies", + "cmdlets": [ + "Get-PfbAuditObjectStorePolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /audit-object-store-policies/members", + "cmdlets": [ + "Get-PfbAuditObjectStorePolicyMember" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /blades", + "cmdlets": [ + "Get-PfbBlade", + "Get-PfbNode" + ], + "missingParameters": [ + "total_only" + ] + }, + { + "endpoint": "GET /bucket-audit-filter-actions", + "cmdlets": [ + "Get-PfbBucketAuditFilterAction" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "names" + ] + }, + { + "endpoint": "GET /bucket-replica-links", + "cmdlets": [ + "Get-PfbBucketReplicaLink" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "ids", + "local_bucket_ids", + "remote_ids", + "remote_names", + "total_only" + ] + }, + { + "endpoint": "GET /buckets", + "cmdlets": [ + "Get-PfbBucket" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /buckets/audit-filters", + "cmdlets": [ + "Get-PfbBucketAuditFilter" + ], + "missingParameters": [ + "allow_errors", + "bucket_ids", + "bucket_names", + "context_names", + "names" + ] + }, + { + "endpoint": "GET /buckets/bucket-access-policies", + "cmdlets": [ + "Get-PfbBucketAccessPolicy" + ], + "missingParameters": [ + "allow_errors", + "bucket_ids", + "bucket_names", + "context_names" + ] + }, + { + "endpoint": "GET /buckets/bucket-access-policies/rules", + "cmdlets": [ + "Get-PfbBucketAccessPolicyRule" + ], + "missingParameters": [ + "allow_errors", + "bucket_ids", + "bucket_names", + "context_names" + ] + }, + { + "endpoint": "GET /buckets/cross-origin-resource-sharing-policies", + "cmdlets": [ + "Get-PfbBucketCorsPolicy" + ], + "missingParameters": [ + "allow_errors", + "bucket_ids", + "bucket_names", + "context_names" + ] + }, + { + "endpoint": "GET /buckets/cross-origin-resource-sharing-policies/rules", + "cmdlets": [ + "Get-PfbBucketCorsPolicyRule" + ], + "missingParameters": [ + "allow_errors", + "bucket_ids", + "bucket_names", + "context_names" + ] + }, + { + "endpoint": "GET /certificate-groups/certificates", + "cmdlets": [ + "Get-PfbCertificateGroupCertificate" + ], + "missingParameters": [ + "certificate_group_ids", + "certificate_group_names", + "certificate_ids", + "certificate_names" + ] + }, + { + "endpoint": "GET /certificate-groups/uses", + "cmdlets": [ + "Get-PfbCertificateGroupUse" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /certificates/certificate-groups", + "cmdlets": [ + "Get-PfbCertificateCertificateGroup" + ], + "missingParameters": [ + "certificate_group_ids", + "certificate_ids", + "sort" + ] + }, + { + "endpoint": "GET /certificates/uses", + "cmdlets": [ + "Get-PfbCertificateUse" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /data-eviction-policies", + "cmdlets": [ + "Get-PfbDataEvictionPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /data-eviction-policies/file-systems", + "cmdlets": [ + "Get-PfbDataEvictionPolicyFileSystem" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /data-eviction-policies/members", + "cmdlets": [ + "Get-PfbDataEvictionPolicyMember" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /directory-services", + "cmdlets": [ + "Get-PfbDirectoryService" + ], + "missingParameters": [ + "ids", + "limit", + "sort" + ] + }, + { + "endpoint": "GET /directory-services/local/directory-services", + "cmdlets": [ + "Get-PfbLocalDirectoryService" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "destroyed", + "total_item_count" + ] + }, + { + "endpoint": "GET /directory-services/local/groups", + "cmdlets": [ + "Get-PfbLocalGroup" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "gids", + "sids", + "total_item_count" + ] + }, + { + "endpoint": "GET /directory-services/local/groups/members", + "cmdlets": [ + "Get-PfbLocalGroupMember" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "group_gids", + "group_sids", + "member_ids", + "member_sids", + "member_types", + "total_item_count" + ] + }, + { + "endpoint": "GET /directory-services/roles", + "cmdlets": [ + "Get-PfbDirectoryServiceRole" + ], + "missingParameters": [ + "role_ids", + "role_names" + ] + }, + { + "endpoint": "GET /directory-services/roles/management-access-policies", + "cmdlets": [ + "Get-PfbDirectoryServiceRoleManagementPolicy" + ], + "missingParameters": [ + "sort" + ] + }, + { + "endpoint": "GET /drives", + "cmdlets": [ + "Get-PfbDrive" + ], + "missingParameters": [ + "total_only" + ] + }, + { + "endpoint": "GET /file-system-exports", + "cmdlets": [ + "Get-PfbFileSystemExport" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "workload_ids", + "workload_names" + ] + }, + { + "endpoint": "GET /file-system-replica-links", + "cmdlets": [ + "Get-PfbFileSystemReplicaLink" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "ids", + "local_file_system_ids", + "remote_file_system_ids", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "GET /file-system-replica-links/policies", + "cmdlets": [ + "Get-PfbFileSystemReplicaLinkPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "local_file_system_ids", + "local_file_system_names", + "remote_file_system_ids", + "remote_file_system_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "GET /file-system-replica-links/transfer", + "cmdlets": [ + "Get-PfbFileSystemReplicaLinkTransfer" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "names_or_owner_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "GET /file-system-snapshots", + "cmdlets": [ + "Get-PfbFileSystemSnapshot" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "names_or_owner_names", + "owner_ids" + ] + }, + { + "endpoint": "GET /file-system-snapshots/policies", + "cmdlets": [ + "Get-PfbFileSystemSnapshotPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /file-system-snapshots/transfer", + "cmdlets": [ + "Get-PfbFileSystemSnapshotTransfer" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "names_or_owner_names" + ] + }, + { + "endpoint": "GET /file-systems", + "cmdlets": [ + "Get-PfbFileSystem" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "workload_ids", + "workload_names" + ] + }, + { + "endpoint": "GET /file-systems/audit-policies", + "cmdlets": [ + "Get-PfbFileSystemAuditPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /file-systems/groups/performance", + "cmdlets": [ + "Get-PfbFileSystemGroupPerformance" + ], + "missingParameters": [ + "gids", + "group_names", + "names" + ] + }, + { + "endpoint": "GET /file-systems/locks", + "cmdlets": [ + "Get-PfbFileLock" + ], + "missingParameters": [ + "allow_errors", + "client_names", + "context_names", + "file_system_ids", + "file_system_names", + "inodes", + "paths" + ] + }, + { + "endpoint": "GET /file-systems/locks/clients", + "cmdlets": [ + "Get-PfbFileLockClient" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /file-systems/open-files", + "cmdlets": [ + "Get-PfbOpenFile" + ], + "missingParameters": [ + "client_names", + "file_system_ids", + "file_system_names", + "paths", + "protocols", + "session_names", + "user_names" + ] + }, + { + "endpoint": "GET /file-systems/policies", + "cmdlets": [ + "Get-PfbFileSystemPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /file-systems/sessions", + "cmdlets": [ + "Get-PfbFileSystemSession" + ], + "missingParameters": [ + "allow_errors", + "client_names", + "context_names", + "protocols", + "user_names" + ] + }, + { + "endpoint": "GET /file-systems/space/storage-classes", + "cmdlets": [ + "Get-PfbFileSystemStorageClass" + ], + "missingParameters": [ + "storage_class_names" + ] + }, + { + "endpoint": "GET /file-systems/users/performance", + "cmdlets": [ + "Get-PfbFileSystemUserPerformance" + ], + "missingParameters": [ + "names", + "uids", + "user_names" + ] + }, + { + "endpoint": "GET /file-systems/worm-data-policies", + "cmdlets": [ + "Get-PfbFileSystemWormPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /fleets", + "cmdlets": [ + "Get-PfbFleet" + ], + "missingParameters": [ + "total_only" + ] + }, + { + "endpoint": "GET /fleets/fleet-key", + "cmdlets": [ + "Get-PfbFleetKey" + ], + "missingParameters": [ + "total_only" + ] + }, + { + "endpoint": "GET /fleets/members", + "cmdlets": [ + "Get-PfbFleetMember" + ], + "missingParameters": [ + "fleet_ids", + "member_ids", + "total_only" + ] + }, + { + "endpoint": "GET /hardware-connectors/performance", + "cmdlets": [ + "Get-PfbHardwareConnectorPerformance" + ], + "missingParameters": [ + "ids", + "total_only" + ] + }, + { + "endpoint": "GET /keytabs/download", + "cmdlets": [ + "Get-PfbKeytabDownload" + ], + "missingParameters": [ + "keytab_ids", + "keytab_names" + ] + }, + { + "endpoint": "GET /legal-holds/held-entities", + "cmdlets": [ + "Get-PfbLegalHoldEntity" + ], + "missingParameters": [ + "file_system_ids", + "file_system_names", + "ids", + "names", + "paths" + ] + }, + { + "endpoint": "GET /lifecycle-rules", + "cmdlets": [ + "Get-PfbLifecycleRule" + ], + "missingParameters": [ + "allow_errors", + "bucket_ids", + "context_names" + ] + }, + { + "endpoint": "GET /log-targets/file-systems", + "cmdlets": [ + "Get-PfbLogTargetFileSystem" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /log-targets/object-store", + "cmdlets": [ + "Get-PfbLogTargetObjectStore" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /management-access-policies", + "cmdlets": [ + "Get-PfbManagementAccessPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /management-access-policies/admins", + "cmdlets": [ + "Get-PfbManagementAccessPolicyAdmin" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /management-access-policies/directory-services/roles", + "cmdlets": [ + "Get-PfbManagementAccessPolicyDirectoryRole" + ], + "missingParameters": [ + "sort" + ] + }, + { + "endpoint": "GET /management-access-policies/members", + "cmdlets": [ + "Get-PfbManagementAccessPolicyMember" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /network-access-policies/rules", + "cmdlets": [ + "Get-PfbNetworkAccessRule" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /network-interfaces/connectors/performance", + "cmdlets": [ + "Get-PfbNetworkInterfaceConnectorPerformance" + ], + "missingParameters": [ + "ids", + "total_only" + ] + }, + { + "endpoint": "GET /network-interfaces/connectors/settings", + "cmdlets": [ + "Get-PfbNetworkInterfaceConnectorSettings" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /network-interfaces/neighbors", + "cmdlets": [ + "Get-PfbNetworkInterfaceNeighbor" + ], + "missingParameters": [ + "local_port_names", + "total_item_count" + ] + }, + { + "endpoint": "GET /network-interfaces/network-connection-statistics", + "cmdlets": [ + "Get-PfbNetworkConnectionStatistics" + ], + "missingParameters": [ + "current_state", + "local_host", + "local_port", + "remote_host", + "remote_port" + ] + }, + { + "endpoint": "GET /nfs-export-policies", + "cmdlets": [ + "Get-PfbNfsExportPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "workload_ids", + "workload_names" + ] + }, + { + "endpoint": "GET /nfs-export-policies/rules", + "cmdlets": [ + "Get-PfbNfsExportRule" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "ids" + ] + }, + { + "endpoint": "GET /node-groups/nodes", + "cmdlets": [ + "Get-PfbNodeGroupNode" + ], + "missingParameters": [ + "node_group_ids", + "node_group_names", + "node_ids", + "node_names" + ] + }, + { + "endpoint": "GET /node-groups/uses", + "cmdlets": [ + "Get-PfbNodeGroupUse" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /nodes", + "cmdlets": [ + "Get-PfbNode" + ], + "missingParameters": [ + "total_only" + ] + }, + { + "endpoint": "GET /object-store-access-keys", + "cmdlets": [ + "Get-PfbObjectStoreAccessKey" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-access-policies", + "cmdlets": [ + "Get-PfbObjectStoreAccessPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "exclude_rules" + ] + }, + { + "endpoint": "GET /object-store-access-policies/object-store-roles", + "cmdlets": [ + "Get-PfbObjectStoreAccessPolicyRole" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-access-policies/object-store-users", + "cmdlets": [ + "Get-PfbObjectStoreAccessPolicyUser" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-access-policies/rules", + "cmdlets": [ + "Get-PfbObjectStoreAccessPolicyRule" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-access-policy-actions", + "cmdlets": [ + "Get-PfbObjectStoreAccessPolicyAction" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "names" + ] + }, + { + "endpoint": "GET /object-store-account-exports", + "cmdlets": [ + "Get-PfbObjectStoreAccountExport" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-accounts", + "cmdlets": [ + "Get-PfbObjectStoreAccount" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-remote-credentials", + "cmdlets": [ + "Get-PfbObjectStoreRemoteCredential" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-roles", + "cmdlets": [ + "Get-PfbObjectStoreRole" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-roles/object-store-access-policies", + "cmdlets": [ + "Get-PfbObjectStoreRoleAccessPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "policy_ids", + "policy_names" + ] + }, + { + "endpoint": "GET /object-store-roles/object-store-trust-policies", + "cmdlets": [ + "Get-PfbObjectStoreTrustPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "names" + ] + }, + { + "endpoint": "GET /object-store-roles/object-store-trust-policies/rules", + "cmdlets": [ + "Get-PfbObjectStoreTrustPolicyRule" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "indices", + "role_ids", + "role_names" + ] + }, + { + "endpoint": "GET /object-store-users", + "cmdlets": [ + "Get-PfbObjectStoreUser" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-users/object-store-access-policies", + "cmdlets": [ + "Get-PfbObjectStoreUserAccessPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /object-store-virtual-hosts", + "cmdlets": [ + "Get-PfbObjectStoreVirtualHost" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /policies", + "cmdlets": [ + "Get-PfbPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "workload_ids", + "workload_names" + ] + }, + { + "endpoint": "GET /policies-all", + "cmdlets": [ + "Get-PfbPolicyAll" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /policies-all/members", + "cmdlets": [ + "Get-PfbPolicyAllMember" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "local_file_system_ids", + "local_file_system_names", + "member_types", + "remote_file_system_ids", + "remote_file_system_names", + "remote_ids", + "remote_names", + "sort" + ] + }, + { + "endpoint": "GET /policies/file-system-replica-links", + "cmdlets": [ + "Get-PfbPolicyFileSystemReplicaLink" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "local_file_system_ids", + "local_file_system_names", + "remote_file_system_ids", + "remote_file_system_names", + "remote_ids", + "remote_names", + "sort" + ] + }, + { + "endpoint": "GET /policies/file-system-snapshots", + "cmdlets": [ + "Get-PfbPolicyFileSystemSnapshot" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /policies/file-systems", + "cmdlets": [ + "Get-PfbPolicyFileSystem" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /presets/workload", + "cmdlets": [ + "Get-PfbPresetWorkload" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "GET /public-keys/uses", + "cmdlets": [ + "Get-PfbPublicKeyUse" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /qos-policies", + "cmdlets": [ + "Get-PfbQosPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /qos-policies/buckets", + "cmdlets": [ + "Get-PfbQosPolicyBucket" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /qos-policies/file-systems", + "cmdlets": [ + "Get-PfbQosPolicyFileSystem" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /qos-policies/members", + "cmdlets": [ + "Get-PfbQosPolicyMember" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "member_types", + "sort" + ] + }, + { + "endpoint": "GET /quotas/groups", + "cmdlets": [ + "Get-PfbQuotaGroup" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "file_system_ids", + "gids", + "group_names" + ] + }, + { + "endpoint": "GET /quotas/users", + "cmdlets": [ + "Get-PfbQuotaUser" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "file_system_ids", + "uids", + "user_names" + ] + }, + { + "endpoint": "GET /realms", + "cmdlets": [ + "Get-PfbRealm" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /realms/defaults", + "cmdlets": [ + "Get-PfbRealmDefaults" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "realm_ids", + "realm_names" + ] + }, + { + "endpoint": "GET /realms/space", + "cmdlets": [ + "Get-PfbRealmSpace" + ], + "missingParameters": [ + "end_time", + "ids", + "resolution", + "start_time", + "total_only", + "type" + ] + }, + { + "endpoint": "GET /realms/space/storage-classes", + "cmdlets": [ + "Get-PfbRealmStorageClass" + ], + "missingParameters": [ + "end_time", + "ids", + "resolution", + "start_time", + "storage_class_names", + "total_only" + ] + }, + { + "endpoint": "GET /remote-arrays", + "cmdlets": [ + "Get-PfbRemoteArray" + ], + "missingParameters": [ + "total_only" + ] + }, + { + "endpoint": "GET /roles", + "cmdlets": [ + "Get-PfbRole" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /s3-export-policies", + "cmdlets": [ + "Get-PfbS3ExportPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /s3-export-policies/rules", + "cmdlets": [ + "Get-PfbS3ExportRule" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /servers", + "cmdlets": [ + "Get-PfbServer" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /smb-client-policies", + "cmdlets": [ + "Get-PfbSmbClientPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "workload_ids", + "workload_names" + ] + }, + { + "endpoint": "GET /smb-client-policies/rules", + "cmdlets": [ + "Get-PfbSmbClientRule" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "ids" + ] + }, + { + "endpoint": "GET /smb-share-policies", + "cmdlets": [ + "Get-PfbSmbSharePolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "workload_ids", + "workload_names" + ] + }, + { + "endpoint": "GET /smb-share-policies/rules", + "cmdlets": [ + "Get-PfbSmbShareRule" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "ids" + ] + }, + { + "endpoint": "GET /snmp-agents", + "cmdlets": [ + "Get-PfbSnmpAgent" + ], + "missingParameters": [ + "ids", + "limit", + "names", + "sort" + ] + }, + { + "endpoint": "GET /snmp-managers/test", + "cmdlets": [ + "Test-PfbSnmpManager" + ], + "missingParameters": [ + "filter", + "limit", + "sort" + ] + }, + { + "endpoint": "GET /software-check", + "cmdlets": [ + "Get-PfbSoftwareCheck" + ], + "missingParameters": [ + "ids", + "names", + "software_names", + "software_versions", + "total_item_count" + ] + }, + { + "endpoint": "GET /ssh-certificate-authority-policies", + "cmdlets": [ + "Get-PfbSshCaPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /ssh-certificate-authority-policies/admins", + "cmdlets": [ + "Get-PfbSshCaPolicyAdmin" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /ssh-certificate-authority-policies/arrays", + "cmdlets": [ + "Get-PfbSshCaPolicyArray" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /ssh-certificate-authority-policies/members", + "cmdlets": [ + "Get-PfbSshCaPolicyMember" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /sso/saml2/idps/test", + "cmdlets": [ + "Test-PfbSaml2Idp" + ], + "missingParameters": [ + "filter", + "limit", + "sort" + ] + }, + { + "endpoint": "GET /storage-class-tiering-policies/members", + "cmdlets": [ + "Get-PfbStorageClassTieringPolicyMember" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "GET /support", + "cmdlets": [ + "Get-PfbSupport" + ], + "missingParameters": [ + "ids" + ] + }, + { + "endpoint": "GET /syslog-servers", + "cmdlets": [ + "Get-PfbSyslogServer" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /targets", + "cmdlets": [ + "Get-PfbTarget" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /targets/performance/replication", + "cmdlets": [ + "Get-PfbTargetPerformanceReplication" + ], + "missingParameters": [ + "ids", + "total_only" + ] + }, + { + "endpoint": "GET /tls-policies", + "cmdlets": [ + "Get-PfbTlsPolicy" + ], + "missingParameters": [ + "effective", + "purity_defined" + ] + }, + { + "endpoint": "GET /tls-policies/members", + "cmdlets": [ + "Get-PfbTlsPolicyMember" + ], + "missingParameters": [ + "sort" + ] + }, + { + "endpoint": "GET /usage/groups", + "cmdlets": [ + "Get-PfbUsageGroup" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "file_system_ids", + "gids", + "group_names" + ] + }, + { + "endpoint": "GET /usage/users", + "cmdlets": [ + "Get-PfbUsageUser" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "file_system_ids", + "uids", + "user_names" + ] + }, + { + "endpoint": "GET /workloads", + "cmdlets": [ + "Get-PfbWorkload" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /workloads/placement-recommendations", + "cmdlets": [ + "Get-PfbWorkloadPlacementRecommendation" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /workloads/tags", + "cmdlets": [ + "Get-PfbWorkloadTag" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /worm-data-policies", + "cmdlets": [ + "Get-PfbWormPolicy" + ], + "missingParameters": [ + "allow_errors", + "context_names" + ] + }, + { + "endpoint": "GET /worm-data-policies/members", + "cmdlets": [ + "Get-PfbWormPolicyMember" + ], + "missingParameters": [ + "allow_errors", + "context_names", + "sort" + ] + }, + { + "endpoint": "PATCH /active-directory", + "cmdlets": [ + "Update-PfbActiveDirectory" + ], + "missingParameters": [ + "ca_certificate", + "ca_certificate_group", + "directory_servers", + "encryption_types", + "fqdns", + "global_catalog_servers", + "join_ou", + "kerberos_servers", + "service_principal_names" + ] + }, + { + "endpoint": "PATCH /admins", + "cmdlets": [ + "Update-PfbAdmin" + ], + "missingParameters": [ + "authorization_model", + "context_names", + "locked", + "management_access_policies", + "old_password", + "password", + "public_key", + "role" + ] + }, + { + "endpoint": "PATCH /api-clients", + "cmdlets": [ + "Update-PfbApiClient" + ], + "missingParameters": [ + "access_policies", + "access_token_ttl_in_ms", + "enabled", + "id", + "issuer", + "key_id", + "max_role", + "name", + "public_key" + ] + }, + { + "endpoint": "PATCH /array-connections", + "cmdlets": [ + "Update-PfbArrayConnection" + ], + "missingParameters": [ + "ca_certificate_group", + "context", + "context_names", + "encrypted", + "id", + "management_address", + "os", + "remote", + "remote_ids", + "remote_names", + "replication_addresses", + "status", + "throttle", + "type", + "version" + ] + }, + { + "endpoint": "PATCH /buckets/audit-filters", + "cmdlets": [ + "Update-PfbBucketAuditFilter" + ], + "missingParameters": [ + "actions", + "bucket_ids", + "bucket_names", + "context_names", + "names", + "s3_prefixes" + ] + }, + { + "endpoint": "PATCH /certificates", + "cmdlets": [ + "Update-PfbCertificate" + ], + "missingParameters": [ + "certificate", + "certificate_type", + "common_name", + "country", + "days", + "email", + "generate_new_key", + "id", + "intermediate_certificate", + "issued_by", + "issued_to", + "key_algorithm", + "key_size", + "locality", + "name", + "organization", + "organizational_unit", + "passphrase", + "private_key", + "realms", + "state", + "status", + "subject_alternative_names", + "valid_from", + "valid_to" + ] + }, + { + "endpoint": "PATCH /directory-services/roles", + "cmdlets": [ + "Update-PfbDirectoryServiceRole" + ], + "missingParameters": [ + "group", + "group_base", + "id", + "management_access_policies", + "name", + "role", + "role_ids", + "role_names" + ] + }, + { + "endpoint": "PATCH /dns", + "cmdlets": [ + "Update-PfbDns" + ], + "missingParameters": [ + "ca_certificate", + "ca_certificate_group", + "context", + "context_names", + "id", + "ids", + "name", + "names", + "realms", + "services", + "sources" + ] + }, + { + "endpoint": "PATCH /file-system-exports", + "cmdlets": [ + "Update-PfbFileSystemExport" + ], + "missingParameters": [ + "context", + "context_names", + "enabled", + "export_name", + "id", + "member", + "name", + "policy", + "policy_type", + "server", + "share_policy", + "status" + ] + }, + { + "endpoint": "PATCH /fleets", + "cmdlets": [ + "Update-PfbFleet" + ], + "missingParameters": [ + "name" + ] + }, + { + "endpoint": "PATCH /hardware", + "cmdlets": [ + "Update-PfbHardware" + ], + "missingParameters": [ + "data_mac", + "details", + "id", + "identify_enabled", + "index", + "management_mac", + "model", + "name", + "part_number", + "sensor_readings", + "serial", + "slot", + "speed", + "status", + "temperature", + "type" + ] + }, + { + "endpoint": "PATCH /hardware-connectors", + "cmdlets": [ + "Update-PfbHardwareConnector" + ], + "missingParameters": [ + "connector_type", + "id", + "lane_speed", + "lanes_per_port", + "name", + "port_count", + "port_speed", + "transceiver_type" + ] + }, + { + "endpoint": "PATCH /kmip", + "cmdlets": [ + "Update-PfbKmip" + ], + "missingParameters": [ + "ca_certificate", + "ca_certificate_group", + "id", + "name", + "uris" + ] + }, + { + "endpoint": "PATCH /legal-holds", + "cmdlets": [ + "Update-PfbLegalHold" + ], + "missingParameters": [ + "description", + "id", + "name", + "realms" + ] + }, + { + "endpoint": "PATCH /legal-holds/held-entities", + "cmdlets": [ + "Update-PfbLegalHoldEntity" + ], + "missingParameters": [ + "file_system_ids", + "file_system_names", + "ids", + "paths", + "recursive", + "released" + ] + }, + { + "endpoint": "PATCH /lifecycle-rules", + "cmdlets": [ + "Update-PfbLifecycleRule" + ], + "missingParameters": [ + "abort_incomplete_multipart_uploads_after", + "bucket_ids", + "bucket_names", + "confirm_date", + "context_names", + "enabled", + "keep_current_version_for", + "keep_current_version_until", + "keep_previous_version_for", + "prefix" + ] + }, + { + "endpoint": "PATCH /link-aggregation-groups", + "cmdlets": [ + "Update-PfbLag" + ], + "missingParameters": [ + "add_ports", + "ports", + "remove_ports" + ] + }, + { + "endpoint": "PATCH /log-targets/file-systems", + "cmdlets": [ + "Update-PfbLogTargetFileSystem" + ], + "missingParameters": [ + "context_names", + "file_system", + "id", + "keep_for", + "keep_size", + "name" + ] + }, + { + "endpoint": "PATCH /log-targets/object-store", + "cmdlets": [ + "Update-PfbLogTargetObjectStore" + ], + "missingParameters": [ + "bucket", + "context_names", + "id", + "log_name_prefix", + "log_rotate", + "name" + ] + }, + { + "endpoint": "PATCH /logs-async", + "cmdlets": [ + "Update-PfbAsyncLog" + ], + "missingParameters": [ + "available_files", + "end_time", + "hardware_components", + "id", + "last_request_time", + "name", + "processing", + "progress", + "start_time" + ] + }, + { + "endpoint": "PATCH /management-access-policies", + "cmdlets": [ + "Update-PfbManagementAccessPolicy" + ], + "missingParameters": [ + "aggregation_strategy", + "context", + "context_names", + "enabled", + "id", + "is_local", + "location", + "name", + "policy_type", + "realms", + "rules", + "version" + ] + }, + { + "endpoint": "PATCH /network-interfaces", + "cmdlets": [ + "Update-PfbNetworkInterface" + ], + "missingParameters": [ + "attached_servers", + "server", + "services" + ] + }, + { + "endpoint": "PATCH /network-interfaces/connectors", + "cmdlets": [ + "Update-PfbNetworkInterfaceConnector" + ], + "missingParameters": [ + "connector_type", + "id", + "lane_speed", + "lanes_per_port", + "name", + "port_count", + "port_speed", + "transceiver_type" + ] + }, + { + "endpoint": "PATCH /node-groups", + "cmdlets": [ + "Update-PfbNodeGroup" + ], + "missingParameters": [ + "name" + ] + }, + { + "endpoint": "PATCH /nodes", + "cmdlets": [ + "Update-PfbNode" + ], + "missingParameters": [ + "capacity", + "chassis_serial_number", + "data_addresses", + "details", + "id", + "management_address", + "name", + "node_key", + "raw_capacity", + "serial_number", + "status", + "unique" + ] + }, + { + "endpoint": "PATCH /object-store-account-exports", + "cmdlets": [ + "Update-PfbObjectStoreAccountExport" + ], + "missingParameters": [ + "context_names", + "export_enabled", + "policy" + ] + }, + { + "endpoint": "PATCH /object-store-remote-credentials", + "cmdlets": [ + "Update-PfbObjectStoreRemoteCredential" + ], + "missingParameters": [ + "access_key_id", + "context", + "context_names", + "id", + "name", + "realms", + "remote", + "secret_access_key" + ] + }, + { + "endpoint": "PATCH /object-store-roles", + "cmdlets": [ + "Update-PfbObjectStoreRole" + ], + "missingParameters": [ + "account", + "context", + "context_names", + "created", + "id", + "max_session_duration", + "name", + "prn", + "trusted_entities" + ] + }, + { + "endpoint": "PATCH /object-store-virtual-hosts", + "cmdlets": [ + "Update-PfbObjectStoreVirtualHost" + ], + "missingParameters": [ + "add_attached_servers", + "attached_servers", + "context_names", + "hostname", + "id", + "name", + "remove_attached_servers" + ] + }, + { + "endpoint": "PATCH /qos-policies", + "cmdlets": [ + "Update-PfbQosPolicy" + ], + "missingParameters": [ + "context", + "context_names", + "enabled", + "id", + "is_local", + "location", + "max_total_bytes_per_sec", + "max_total_ops_per_sec", + "name", + "policy_type", + "realms" + ] + }, + { + "endpoint": "PATCH /realms/defaults", + "cmdlets": [ + "Update-PfbRealmDefaults" + ], + "missingParameters": [ + "context", + "context_names", + "object_store", + "realm", + "realm_ids", + "realm_names" + ] + }, + { + "endpoint": "PATCH /snmp-managers", + "cmdlets": [ + "Update-PfbSnmpManager" + ], + "missingParameters": [ + "host", + "id", + "name", + "notification", + "v2c", + "v3", + "version" + ] + }, + { + "endpoint": "PATCH /ssh-certificate-authority-policies", + "cmdlets": [ + "Update-PfbSshCaPolicy" + ], + "missingParameters": [ + "context", + "enabled", + "id", + "is_local", + "location", + "name", + "policy_type", + "realms", + "signing_authority", + "static_authorized_principals" + ] + }, + { + "endpoint": "PATCH /sso/oidc/idps", + "cmdlets": [ + "Update-PfbOidcIdp" + ], + "missingParameters": [ + "enabled", + "idp", + "name", + "prn", + "services" + ] + }, + { + "endpoint": "PATCH /sso/saml2/idps", + "cmdlets": [ + "Update-PfbSaml2Idp" + ], + "missingParameters": [ + "array_url", + "binding", + "enabled", + "id", + "idp", + "management", + "name", + "prn", + "services", + "sp" + ] + }, + { + "endpoint": "PATCH /storage-class-tiering-policies", + "cmdlets": [ + "Update-PfbStorageClassTieringPolicy" + ], + "missingParameters": [ + "archival_rules", + "enabled", + "id", + "is_local", + "location", + "name", + "policy_type", + "realms", + "retrieval_rules" + ] + }, + { + "endpoint": "PATCH /subnets", + "cmdlets": [ + "Update-PfbSubnet" + ], + "missingParameters": [ + "enabled", + "id", + "interfaces", + "link_aggregation_group", + "name", + "services", + "vlan" + ] + }, + { + "endpoint": "PATCH /syslog-servers", + "cmdlets": [ + "Update-PfbSyslogServer" + ], + "missingParameters": [ + "services", + "sources", + "uri" + ] + }, + { + "endpoint": "PATCH /targets", + "cmdlets": [ + "Update-PfbTarget" + ], + "missingParameters": [ + "address", + "ca_certificate_group", + "id", + "name", + "status", + "status_details" + ] + }, + { + "endpoint": "PATCH /tls-policies", + "cmdlets": [ + "Update-PfbTlsPolicy" + ], + "missingParameters": [ + "appliance_certificate", + "client_certificates_required", + "disabled_tls_ciphers", + "enabled", + "enabled_tls_ciphers", + "id", + "is_local", + "location", + "min_tls_version", + "name", + "policy_type", + "realms", + "trusted_client_certificate_authority", + "verify_client_certificate_trust" + ] + }, + { + "endpoint": "PATCH /worm-data-policies", + "cmdlets": [ + "Update-PfbWormPolicy" + ], + "missingParameters": [ + "context", + "context_names", + "default_retention", + "enabled", + "id", + "is_local", + "location", + "max_retention", + "min_retention", + "mode", + "name", + "policy_type", + "realms", + "retention_lock" + ] + }, + { + "endpoint": "POST /admins/api-tokens", + "cmdlets": [ + "New-PfbApiToken" + ], + "missingParameters": [ + "admin_ids", + "admin_names", + "context_names", + "timeout" + ] + }, + { + "endpoint": "POST /admins/management-access-policies", + "cmdlets": [ + "New-PfbAdminManagementAccessPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /admins/ssh-certificate-authority-policies", + "cmdlets": [ + "New-PfbAdminSshCaPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /array-connections", + "cmdlets": [ + "New-PfbArrayConnection" + ], + "missingParameters": [ + "ca_certificate_group", + "context", + "context_names", + "encrypted", + "id", + "os", + "remote", + "status", + "throttle", + "type", + "version" + ] + }, + { + "endpoint": "POST /arrays/ssh-certificate-authority-policies", + "cmdlets": [ + "New-PfbArraySshCaPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /audit-file-systems-policies/members", + "cmdlets": [ + "New-PfbAuditFileSystemPolicyMember" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /audit-object-store-policies/members", + "cmdlets": [ + "New-PfbAuditObjectStorePolicyMember" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /certificates/certificate-groups", + "cmdlets": [ + "New-PfbCertificateCertificateGroup" + ], + "missingParameters": [ + "certificate_group_ids", + "certificate_ids" + ] + }, + { + "endpoint": "POST /data-eviction-policies/file-systems", + "cmdlets": [ + "Add-PfbDataEvictionPolicyFileSystem" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /file-system-replica-links/policies", + "cmdlets": [ + "New-PfbFileSystemReplicaLinkPolicy" + ], + "missingParameters": [ + "context_names", + "local_file_system_ids", + "local_file_system_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "POST /file-systems/audit-policies", + "cmdlets": [ + "New-PfbFileSystemAuditPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /file-systems/policies", + "cmdlets": [ + "New-PfbFileSystemPolicy" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /fleets/members", + "cmdlets": [ + "New-PfbFleetMember" + ], + "missingParameters": [ + "fleet_ids", + "members" + ] + }, + { + "endpoint": "POST /legal-holds/held-entities", + "cmdlets": [ + "New-PfbLegalHoldEntity" + ], + "missingParameters": [ + "file_system_ids", + "file_system_names", + "ids", + "names", + "paths", + "recursive" + ] + }, + { + "endpoint": "POST /management-access-policies/admins", + "cmdlets": [ + "New-PfbManagementAccessPolicyAdmin" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /network-access-policies/rules", + "cmdlets": [ + "New-PfbNetworkAccessRule" + ], + "missingParameters": [ + "before_rule_id", + "before_rule_name", + "client", + "effect", + "id", + "index", + "interfaces", + "name", + "versions" + ] + }, + { + "endpoint": "POST /network-interfaces/tls-policies", + "cmdlets": [ + "New-PfbNetworkInterfaceTlsPolicy" + ], + "missingParameters": [ + "member_ids", + "policy_ids" + ] + }, + { + "endpoint": "POST /nfs-export-policies/rules", + "cmdlets": [ + "New-PfbNfsExportRule" + ], + "missingParameters": [ + "access", + "anongid", + "anonuid", + "atime", + "before_rule_id", + "before_rule_name", + "client", + "context", + "context_names", + "fileid_32bit", + "id", + "index", + "name", + "permission", + "policy", + "policy_version", + "required_transport_security", + "secure", + "security", + "versions" + ] + }, + { + "endpoint": "POST /node-groups/nodes", + "cmdlets": [ + "New-PfbNodeGroupNode" + ], + "missingParameters": [ + "node_group_ids", + "node_group_names", + "node_ids", + "node_names" + ] + }, + { + "endpoint": "POST /policies/file-system-replica-links", + "cmdlets": [ + "New-PfbPolicyFileSystemReplicaLink" + ], + "missingParameters": [ + "context_names", + "local_file_system_ids", + "local_file_system_names", + "remote_ids", + "remote_names" + ] + }, + { + "endpoint": "POST /policies/file-systems", + "cmdlets": [ + "New-PfbPolicyFileSystem" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /qos-policies/members", + "cmdlets": [ + "New-PfbQosPolicyMember" + ], + "missingParameters": [ + "context_names", + "member_types" + ] + }, + { + "endpoint": "POST /s3-export-policies/rules", + "cmdlets": [ + "New-PfbS3ExportRule" + ], + "missingParameters": [ + "actions", + "context_names", + "effect", + "names", + "resources" + ] + }, + { + "endpoint": "POST /smb-client-policies/rules", + "cmdlets": [ + "New-PfbSmbClientRule" + ], + "missingParameters": [ + "before_rule_id", + "before_rule_name", + "client", + "context_names", + "encryption", + "id", + "index", + "name", + "permission", + "versions" + ] + }, + { + "endpoint": "POST /smb-share-policies/rules", + "cmdlets": [ + "New-PfbSmbShareRule" + ], + "missingParameters": [ + "change", + "context_names", + "full_control", + "id", + "name", + "principal", + "read" + ] + }, + { + "endpoint": "POST /ssh-certificate-authority-policies/admins", + "cmdlets": [ + "New-PfbSshCaPolicyAdmin" + ], + "missingParameters": [ + "context_names" + ] + }, + { + "endpoint": "POST /ssh-certificate-authority-policies/arrays", + "cmdlets": [ + "New-PfbSshCaPolicyArray" + ], + "missingParameters": [ + "context_names" + ] + } + ], + "notVerifiedEndpoints": [ + { + "endpoint": "DELETE /arrays/erasures", + "cmdlets": [ + "Remove-PfbArrayErasure" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /arrays/factory-reset-token", + "cmdlets": [ + "Remove-PfbArrayFactoryResetToken" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /buckets", + "cmdlets": [ + "Remove-PfbBucket" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /buckets/bucket-access-policies", + "cmdlets": [ + "Remove-PfbBucketAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /buckets/bucket-access-policies/rules", + "cmdlets": [ + "Remove-PfbBucketAccessPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /buckets/cross-origin-resource-sharing-policies/rules", + "cmdlets": [ + "Remove-PfbBucketCorsPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /directory-services/local/groups/members", + "cmdlets": [ + "Remove-PfbLocalGroupMember" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /file-system-snapshots", + "cmdlets": [ + "Remove-PfbFileSystemSnapshot" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /file-systems", + "cmdlets": [ + "Remove-PfbFileSystem" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /network-access-policies/rules", + "cmdlets": [ + "Remove-PfbNetworkAccessRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /nfs-export-policies/rules", + "cmdlets": [ + "Remove-PfbNfsExportRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /object-store-access-policies/object-store-roles", + "cmdlets": [ + "Remove-PfbObjectStoreAccessPolicyRole" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /object-store-access-policies/object-store-users", + "cmdlets": [ + "Remove-PfbObjectStoreAccessPolicyUser" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /object-store-access-policies/rules", + "cmdlets": [ + "Remove-PfbObjectStoreAccessPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /object-store-roles/object-store-access-policies", + "cmdlets": [ + "Remove-PfbObjectStoreRoleAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /object-store-roles/object-store-trust-policies/rules", + "cmdlets": [ + "Remove-PfbObjectStoreTrustPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /object-store-users/object-store-access-policies", + "cmdlets": [ + "Remove-PfbObjectStoreUserAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /quotas/groups", + "cmdlets": [ + "Remove-PfbQuotaGroup" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /quotas/users", + "cmdlets": [ + "Remove-PfbQuotaUser" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /realms", + "cmdlets": [ + "Remove-PfbRealm" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /s3-export-policies/rules", + "cmdlets": [ + "Remove-PfbS3ExportRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /servers", + "cmdlets": [ + "Remove-PfbServer" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /smb-client-policies/rules", + "cmdlets": [ + "Remove-PfbSmbClientRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /smb-share-policies/rules", + "cmdlets": [ + "Remove-PfbSmbShareRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "DELETE /workloads/tags", + "cmdlets": [ + "Remove-PfbWorkloadTag" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /admins/settings", + "cmdlets": [ + "Get-PfbAdminSetting" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /alerts", + "cmdlets": [ + "Get-PfbAlert" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /arrays", + "cmdlets": [ + "Get-PfbArray", + "Test-PfbConnection" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /arrays/eula", + "cmdlets": [ + "Get-PfbArrayEula" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /arrays/factory-reset-token", + "cmdlets": [ + "Get-PfbArrayFactoryResetToken" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /directory-services/test", + "cmdlets": [ + "Test-PfbDirectoryService" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /dns", + "cmdlets": [ + "Get-PfbDns" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /hardware", + "cmdlets": [ + "Get-PfbHardware", + "Get-PfbHardwareTemperature" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /network-interfaces/ping", + "cmdlets": [ + "Invoke-PfbNetworkPing" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /network-interfaces/trace", + "cmdlets": [ + "Invoke-PfbNetworkTrace" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /password-policies", + "cmdlets": [ + "Get-PfbPasswordPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /quotas/settings", + "cmdlets": [ + "Get-PfbQuotaSettings" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /rapid-data-locking", + "cmdlets": [ + "Get-PfbRapidDataLocking" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /rapid-data-locking/test", + "cmdlets": [ + "Test-PfbRapidDataLocking" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /smtp-servers", + "cmdlets": [ + "Get-PfbSmtpServer" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /snmp-agents/mib", + "cmdlets": [ + "Get-PfbSnmpAgentMib" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /support/test", + "cmdlets": [ + "Test-PfbSupport" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "GET /syslog-servers/settings", + "cmdlets": [ + "Get-PfbSyslogServerSettings" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /admins/settings", + "cmdlets": [ + "Update-PfbAdminSetting" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /alert-watchers", + "cmdlets": [ + "Update-PfbAlertWatcher" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /alerts", + "cmdlets": [ + "Update-PfbAlert" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /arrays", + "cmdlets": [ + "Update-PfbArray" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /arrays/erasures", + "cmdlets": [ + "Update-PfbArrayErasure" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /arrays/eula", + "cmdlets": [ + "Update-PfbArrayEula" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /audit-file-systems-policies", + "cmdlets": [ + "Update-PfbAuditFileSystemPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /audit-object-store-policies", + "cmdlets": [ + "Update-PfbAuditObjectStorePolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /buckets", + "cmdlets": [ + "Remove-PfbBucket", + "Update-PfbBucket" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /data-eviction-policies", + "cmdlets": [ + "Update-PfbDataEvictionPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /directory-services", + "cmdlets": [ + "Update-PfbDirectoryService" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /file-system-snapshots", + "cmdlets": [ + "Remove-PfbFileSystemSnapshot" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /file-systems", + "cmdlets": [ + "Remove-PfbFileSystem", + "Update-PfbFileSystem" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /network-access-policies", + "cmdlets": [ + "Update-PfbNetworkAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /network-access-policies/rules", + "cmdlets": [ + "Update-PfbNetworkAccessRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /nfs-export-policies", + "cmdlets": [ + "Update-PfbNfsExportPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /nfs-export-policies/rules", + "cmdlets": [ + "Update-PfbNfsExportRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /object-store-access-policies/rules", + "cmdlets": [ + "Update-PfbObjectStoreAccessPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /object-store-roles/object-store-trust-policies/rules", + "cmdlets": [ + "Update-PfbObjectStoreTrustPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /password-policies", + "cmdlets": [ + "Update-PfbPasswordPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /policies", + "cmdlets": [ + "Update-PfbPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /presets/workload", + "cmdlets": [ + "Update-PfbPresetWorkload" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /quotas/groups", + "cmdlets": [ + "Update-PfbQuotaGroup" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /quotas/settings", + "cmdlets": [ + "Update-PfbQuotaSettings" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /quotas/users", + "cmdlets": [ + "Update-PfbQuotaUser" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /rapid-data-locking", + "cmdlets": [ + "Update-PfbRapidDataLocking" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /realms", + "cmdlets": [ + "Remove-PfbRealm", + "Update-PfbRealm" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /s3-export-policies", + "cmdlets": [ + "Update-PfbS3ExportPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /s3-export-policies/rules", + "cmdlets": [ + "Update-PfbS3ExportRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /servers", + "cmdlets": [ + "Update-PfbServer" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /smb-client-policies", + "cmdlets": [ + "Update-PfbSmbClientPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /smb-client-policies/rules", + "cmdlets": [ + "Update-PfbSmbClientRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /smb-share-policies", + "cmdlets": [ + "Update-PfbSmbSharePolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /smb-share-policies/rules", + "cmdlets": [ + "Update-PfbSmbShareRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /snmp-agents", + "cmdlets": [ + "Update-PfbSnmpAgent" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /support", + "cmdlets": [ + "Update-PfbSupport" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /support/verification-keys", + "cmdlets": [ + "Update-PfbSupportVerificationKey" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /syslog-servers/settings", + "cmdlets": [ + "Update-PfbSyslogServerSettings" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "PATCH /workloads", + "cmdlets": [ + "Update-PfbWorkload" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /active-directory", + "cmdlets": [ + "New-PfbActiveDirectory" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /alert-watchers", + "cmdlets": [ + "New-PfbAlertWatcher" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /api-clients", + "cmdlets": [ + "New-PfbApiClient" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /array-connections/connection-key", + "cmdlets": [ + "New-PfbArrayConnectionKey" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /arrays/erasures", + "cmdlets": [ + "New-PfbArrayErasure" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /arrays/factory-reset-token", + "cmdlets": [ + "New-PfbArrayFactoryResetToken" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /audit-file-systems-policies", + "cmdlets": [ + "New-PfbAuditFileSystemPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /audit-object-store-policies", + "cmdlets": [ + "New-PfbAuditObjectStorePolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /buckets", + "cmdlets": [ + "New-PfbBucket" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /buckets/audit-filters", + "cmdlets": [ + "New-PfbBucketAuditFilter" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /buckets/bucket-access-policies", + "cmdlets": [ + "New-PfbBucketAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /buckets/bucket-access-policies/rules", + "cmdlets": [ + "New-PfbBucketAccessPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /buckets/cross-origin-resource-sharing-policies", + "cmdlets": [ + "New-PfbBucketCorsPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /buckets/cross-origin-resource-sharing-policies/rules", + "cmdlets": [ + "New-PfbBucketCorsPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /certificate-groups", + "cmdlets": [ + "New-PfbCertificateGroup" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /certificates", + "cmdlets": [ + "New-PfbCertificate" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /certificates/certificate-signing-requests", + "cmdlets": [ + "New-PfbCertificateSigningRequest" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /data-eviction-policies", + "cmdlets": [ + "New-PfbDataEvictionPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /directory-services/local/directory-services", + "cmdlets": [ + "New-PfbLocalDirectoryService" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /directory-services/local/groups", + "cmdlets": [ + "New-PfbLocalGroup" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /directory-services/local/groups/members", + "cmdlets": [ + "New-PfbLocalGroupMember" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /directory-services/roles", + "cmdlets": [ + "New-PfbDirectoryServiceRole" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /dns", + "cmdlets": [ + "New-PfbDns" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /file-system-exports", + "cmdlets": [ + "New-PfbFileSystemExport" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /file-system-replica-links", + "cmdlets": [ + "New-PfbFileSystemReplicaLink" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /file-system-snapshots", + "cmdlets": [ + "New-PfbFileSystemSnapshot" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /file-systems", + "cmdlets": [ + "New-PfbFileSystem" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /file-systems/locks/nlm-reclamations", + "cmdlets": [ + "New-PfbNlmReclamation" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /fleets", + "cmdlets": [ + "New-PfbFleet" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /fleets/fleet-key", + "cmdlets": [ + "New-PfbFleetKey" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /keytabs", + "cmdlets": [ + "New-PfbKeytab" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /keytabs/upload", + "cmdlets": [ + "New-PfbKeytabUpload" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /legal-holds", + "cmdlets": [ + "New-PfbLegalHold" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /lifecycle-rules", + "cmdlets": [ + "New-PfbLifecycleRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /link-aggregation-groups", + "cmdlets": [ + "New-PfbLag" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /log-targets/file-systems", + "cmdlets": [ + "New-PfbLogTargetFileSystem" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /log-targets/object-store", + "cmdlets": [ + "New-PfbLogTargetObjectStore" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /maintenance-windows", + "cmdlets": [ + "New-PfbMaintenanceWindow" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /management-access-policies", + "cmdlets": [ + "New-PfbManagementAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /network-interfaces", + "cmdlets": [ + "New-PfbNetworkInterface" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /nfs-export-policies", + "cmdlets": [ + "New-PfbNfsExportPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /node-groups", + "cmdlets": [ + "New-PfbNodeGroup" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-access-keys", + "cmdlets": [ + "New-PfbObjectStoreAccessKey" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-access-policies", + "cmdlets": [ + "New-PfbObjectStoreAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-access-policies/object-store-roles", + "cmdlets": [ + "New-PfbObjectStoreAccessPolicyRole" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-access-policies/object-store-users", + "cmdlets": [ + "New-PfbObjectStoreAccessPolicyUser" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-access-policies/rules", + "cmdlets": [ + "New-PfbObjectStoreAccessPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-account-exports", + "cmdlets": [ + "New-PfbObjectStoreAccountExport" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-accounts", + "cmdlets": [ + "New-PfbObjectStoreAccount" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-remote-credentials", + "cmdlets": [ + "New-PfbObjectStoreRemoteCredential" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-roles", + "cmdlets": [ + "New-PfbObjectStoreRole" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-roles/object-store-access-policies", + "cmdlets": [ + "New-PfbObjectStoreRoleAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-roles/object-store-trust-policies/rules", + "cmdlets": [ + "New-PfbObjectStoreTrustPolicyRule" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-users", + "cmdlets": [ + "New-PfbObjectStoreUser" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-users/object-store-access-policies", + "cmdlets": [ + "New-PfbObjectStoreUserAccessPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /object-store-virtual-hosts", + "cmdlets": [ + "New-PfbObjectStoreVirtualHost" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /policies", + "cmdlets": [ + "New-PfbPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /presets/workload", + "cmdlets": [ + "New-PfbPresetWorkload" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /public-keys", + "cmdlets": [ + "New-PfbPublicKey" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /qos-policies", + "cmdlets": [ + "New-PfbQosPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /quotas/groups", + "cmdlets": [ + "New-PfbQuotaGroup" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /quotas/users", + "cmdlets": [ + "New-PfbQuotaUser" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /rapid-data-locking/rotate", + "cmdlets": [ + "New-PfbRapidDataLockingRotation" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /realms", + "cmdlets": [ + "New-PfbRealm" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /s3-export-policies", + "cmdlets": [ + "New-PfbS3ExportPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /servers", + "cmdlets": [ + "New-PfbServer" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /smb-client-policies", + "cmdlets": [ + "New-PfbSmbClientPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /smb-share-policies", + "cmdlets": [ + "New-PfbSmbSharePolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /snmp-managers", + "cmdlets": [ + "New-PfbSnmpManager" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /software-check", + "cmdlets": [ + "New-PfbSoftwareCheck" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /ssh-certificate-authority-policies", + "cmdlets": [ + "New-PfbSshCaPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /sso/oidc/idps", + "cmdlets": [ + "New-PfbOidcIdp" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /sso/saml2/idps", + "cmdlets": [ + "New-PfbSaml2Idp" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /storage-class-tiering-policies", + "cmdlets": [ + "New-PfbStorageClassTieringPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /subnets", + "cmdlets": [ + "New-PfbSubnet" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /support-diagnostics", + "cmdlets": [ + "New-PfbSupportDiagnostics" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /syslog-servers", + "cmdlets": [ + "New-PfbSyslogServer" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /targets", + "cmdlets": [ + "New-PfbTarget" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /tls-policies", + "cmdlets": [ + "New-PfbTlsPolicy" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /workloads", + "cmdlets": [ + "New-PfbWorkload" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /workloads/placement-recommendations", + "cmdlets": [ + "New-PfbWorkloadPlacementRecommendation" + ], + "reason": "has attributes/unresolved surface" + }, + { + "endpoint": "POST /worm-data-policies", + "cmdlets": [ + "New-PfbWormPolicy" + ], + "reason": "has attributes/unresolved surface" + } + ], + "validateSetDrift": [], + "newValidateSetCandidates": [] +} diff --git a/Reports/PfbApiDriftReport.md b/Reports/PfbApiDriftReport.md new file mode 100644 index 0000000..d35e8e2 --- /dev/null +++ b/Reports/PfbApiDriftReport.md @@ -0,0 +1,423 @@ +# API Drift Report + +Generated by `tools/Build-PfbApiDriftReport.ps1` (28 REST versions). + +Reporting only -- no `Public/` cmdlet is edited by this script. + +## Summary + +- Uncovered endpoints: 117 +- Parameter gaps: 282 +- Not-verified endpoints (has attributes/unresolved surface): 164 +- ValidateSet drift: 0 +- New ValidateSet candidates: 0 + +## Uncovered endpoints + +| Endpoint | Introduced in | +|---|---| +| `GET /api/login-banner` | 2.0 | +| `POST /bucket-replica-links` | 2.0 | +| `PATCH /bucket-replica-links` | 2.0 | +| `DELETE /bucket-replica-links` | 2.0 | +| `POST /certificate-groups/certificates` | 2.0 | +| `DELETE /certificate-groups/certificates` | 2.0 | +| `PATCH /directory-services/test` | 2.0 | +| `GET /file-systems/performance` | 2.0 | +| `PATCH /object-store-access-keys` | 2.0 | +| `DELETE /policies/file-system-snapshots` | 2.0 | +| `GET /policies/members` | 2.0 | +| `PATCH /smtp-servers` | 2.0 | +| `POST /kmip` | 2.1 | +| `DELETE /kmip` | 2.1 | +| `PATCH /object-store-access-policies` | 2.2 | +| `GET /file-systems/policies-all` | 2.3 | +| `PATCH /object-store-accounts` | 2.8 | +| `POST /admins` | 2.15 | +| `DELETE /admins` | 2.15 | +| `PATCH /sso/saml2/idps/test` | 2.16 | +| `GET /tls-policies/network-interfaces` | 2.17 | +| `POST /tls-policies/network-interfaces` | 2.17 | +| `DELETE /tls-policies/network-interfaces` | 2.17 | +| `PATCH /file-system-replica-links` | 2.17 | +| `PATCH /object-store-roles/object-store-trust-policies/upload` | 2.17 | +| `GET /object-store-roles/object-store-trust-policies/download` | 2.17 | +| `POST /nodes/batch` | 2.18 | +| `POST /resource-accesses/batch` | 2.19 | +| `GET /file-systems/data-eviction-policies` | 2.21 | +| `POST /file-systems/data-eviction-policies` | 2.21 | +| `DELETE /file-systems/data-eviction-policies` | 2.21 | +| `GET /admins/management-authentication-policies` | 2.22 | +| `POST /admins/management-authentication-policies` | 2.22 | +| `DELETE /admins/management-authentication-policies` | 2.22 | +| `GET /arrays/management-authentication-policies` | 2.22 | +| `POST /arrays/management-authentication-policies` | 2.22 | +| `DELETE /arrays/management-authentication-policies` | 2.22 | +| `GET /management-authentication-policies` | 2.22 | +| `POST /management-authentication-policies` | 2.22 | +| `DELETE /management-authentication-policies` | 2.22 | +| `PATCH /management-authentication-policies` | 2.22 | +| `GET /management-authentication-policies/members` | 2.22 | +| `POST /management-authentication-policies/members` | 2.22 | +| `DELETE /management-authentication-policies/members` | 2.22 | +| `PUT /presets/workload` | 2.23 | +| `GET /resiliency-groups/members` | 2.23 | +| `PUT /workloads/tags/batch` | 2.23 | +| `DELETE /directory-services/local/directory-services` | 2.24 | +| `PATCH /directory-services/local/directory-services` | 2.24 | +| `PATCH /directory-services/local/groups` | 2.24 | +| `GET /directory-services/local/users` | 2.24 | +| `POST /directory-services/local/users` | 2.24 | +| `DELETE /directory-services/local/users` | 2.24 | +| `PATCH /directory-services/local/users` | 2.24 | +| `GET /directory-services/local/users/members` | 2.24 | +| `POST /directory-services/local/users/members` | 2.24 | +| `DELETE /directory-services/local/users/members` | 2.24 | +| `GET /support-diagnostics/settings` | 2.24 | +| `PATCH /support-diagnostics/settings` | 2.24 | +| `GET /software-bundle` | 2.24 | +| `POST /software-bundle` | 2.24 | +| `GET /software-patches` | 2.24 | +| `POST /software-patches` | 2.24 | +| `GET /file-systems/user-group-quota-policies` | 2.25 | +| `POST /file-systems/user-group-quota-policies` | 2.25 | +| `DELETE /file-systems/user-group-quota-policies` | 2.25 | +| `GET /file-system-junctions` | 2.25 | +| `POST /file-system-junctions` | 2.25 | +| `DELETE /file-system-junctions` | 2.25 | +| `GET /file-system-group-quotas` | 2.25 | +| `GET /file-systems/groups` | 2.25 | +| `GET /file-system-user-quotas` | 2.25 | +| `GET /file-systems/users` | 2.25 | +| `GET /realm-connections` | 2.25 | +| `POST /realm-connections` | 2.25 | +| `DELETE /realm-connections` | 2.25 | +| `GET /realm-connections/connection-key` | 2.25 | +| `POST /realm-connections/connection-key` | 2.25 | +| `DELETE /realm-connections/connection-key` | 2.25 | +| `GET /remote-realms` | 2.25 | +| `GET /user-group-quota-policies` | 2.25 | +| `POST /user-group-quota-policies` | 2.25 | +| `PATCH /user-group-quota-policies` | 2.25 | +| `DELETE /user-group-quota-policies` | 2.25 | +| `GET /user-group-quota-policies/rules` | 2.25 | +| `POST /user-group-quota-policies/rules` | 2.25 | +| `DELETE /user-group-quota-policies/rules` | 2.25 | +| `PATCH /user-group-quota-policies/rules` | 2.25 | +| `GET /user-group-quota-policies/file-systems` | 2.25 | +| `POST /user-group-quota-policies/file-systems` | 2.25 | +| `DELETE /user-group-quota-policies/file-systems` | 2.25 | +| `GET /user-group-quota-policies/members` | 2.25 | +| `GET /management-access-policies/roles` | 2.26 | +| `POST /management-access-policies/roles` | 2.26 | +| `DELETE /management-access-policies/roles` | 2.26 | +| `GET /management-access-policies/roles/permissions` | 2.26 | +| `POST /management-access-policies/roles/permissions` | 2.26 | +| `DELETE /management-access-policies/roles/permissions` | 2.26 | +| `PATCH /management-access-policies/roles/permissions` | 2.26 | +| `GET /management-access-policies/roles/permissions/supported-resources` | 2.26 | +| `GET /management-access-policies/rules` | 2.26 | +| `POST /management-access-policies/rules` | 2.26 | +| `DELETE /management-access-policies/rules` | 2.26 | +| `PATCH /management-access-policies/rules` | 2.26 | +| `PATCH /remote-arrays` | 2.26 | +| `GET /support/system-manifest` | 2.26 | +| `GET /topology-groups` | 2.26 | +| `POST /topology-groups` | 2.26 | +| `PATCH /topology-groups` | 2.26 | +| `DELETE /topology-groups` | 2.26 | +| `GET /topology-groups/arrays` | 2.26 | +| `GET /topology-groups/members` | 2.26 | +| `POST /topology-groups/members` | 2.26 | +| `DELETE /topology-groups/members` | 2.26 | +| `PATCH /active-directory/test` | 2.27 | +| `POST /fleets/members/batch` | 2.27 | +| `GET /storage-classes/members` | 2.27 | + +## Parameter gaps + +| Endpoint | Cmdlets | Missing parameters | +|---|---|---| +| `DELETE /active-directory` | Remove-PfbActiveDirectory | local_only | +| `DELETE /admins/api-tokens` | Remove-PfbApiToken | admin_ids, admin_names, context_names | +| `DELETE /admins/cache` | Remove-PfbAdminCache | context_names | +| `DELETE /admins/management-access-policies` | Remove-PfbAdminManagementAccessPolicy | context_names | +| `DELETE /admins/ssh-certificate-authority-policies` | Remove-PfbAdminSshCaPolicy | context_names | +| `DELETE /array-connections` | Remove-PfbArrayConnection | context_names, remote_ids, remote_names | +| `DELETE /arrays/ssh-certificate-authority-policies` | Remove-PfbArraySshCaPolicy | context_names | +| `DELETE /audit-file-systems-policies` | Remove-PfbAuditFileSystemPolicy | context_names | +| `DELETE /audit-file-systems-policies/members` | Remove-PfbAuditFileSystemPolicyMember | context_names | +| `DELETE /audit-object-store-policies` | Remove-PfbAuditObjectStorePolicy | context_names | +| `DELETE /audit-object-store-policies/members` | Remove-PfbAuditObjectStorePolicyMember | context_names | +| `DELETE /buckets/audit-filters` | Remove-PfbBucketAuditFilter | bucket_ids, bucket_names, context_names, names | +| `DELETE /buckets/cross-origin-resource-sharing-policies` | Remove-PfbBucketCorsPolicy | bucket_ids, bucket_names, context_names, names | +| `DELETE /certificates/certificate-groups` | Remove-PfbCertificateCertificateGroup | certificate_group_ids, certificate_ids | +| `DELETE /data-eviction-policies` | Remove-PfbDataEvictionPolicy | context_names | +| `DELETE /data-eviction-policies/file-systems` | Remove-PfbDataEvictionPolicyFileSystem | context_names | +| `DELETE /directory-services/local/groups` | Remove-PfbLocalGroup | context_names, gids, local_directory_service_ids, local_directory_service_names, sids | +| `DELETE /dns` | Remove-PfbDns | context_names | +| `DELETE /file-system-exports` | Remove-PfbFileSystemExport | context_names | +| `DELETE /file-system-replica-links` | Remove-PfbFileSystemReplicaLink | context_names, local_file_system_ids, remote_file_system_ids, remote_ids | +| `DELETE /file-system-replica-links/policies` | Remove-PfbFileSystemReplicaLinkPolicy | context_names, local_file_system_ids, local_file_system_names, remote_ids, remote_names | +| `DELETE /file-system-snapshots/policies` | Remove-PfbFileSystemSnapshotPolicy | context_names | +| `DELETE /file-system-snapshots/transfer` | Remove-PfbFileSystemSnapshotTransfer | context_names, remote_ids, remote_names | +| `DELETE /file-systems/audit-policies` | Remove-PfbFileSystemAuditPolicy | context_names | +| `DELETE /file-systems/locks` | Remove-PfbFileLock | client_names, context_names, file_system_ids, file_system_names, inodes, paths, recursive | +| `DELETE /file-systems/policies` | Remove-PfbFileSystemPolicy | context_names | +| `DELETE /file-systems/sessions` | Remove-PfbFileSystemSession | client_names, context_names, disruptive, protocols, user_names | +| `DELETE /fleets/members` | Remove-PfbFleetMember | member_ids, unreachable | +| `DELETE /lifecycle-rules` | Remove-PfbLifecycleRule | bucket_ids, bucket_names, context_names | +| `DELETE /log-targets/file-systems` | Remove-PfbLogTargetFileSystem | context_names | +| `DELETE /log-targets/object-store` | Remove-PfbLogTargetObjectStore | context_names | +| `DELETE /management-access-policies` | Remove-PfbManagementAccessPolicy | context_names | +| `DELETE /management-access-policies/admins` | Remove-PfbManagementAccessPolicyAdmin | context_names | +| `DELETE /network-interfaces/tls-policies` | Remove-PfbNetworkInterfaceTlsPolicy | member_ids, policy_ids | +| `DELETE /nfs-export-policies` | Remove-PfbNfsExportPolicy | context_names, versions | +| `DELETE /node-groups/nodes` | Remove-PfbNodeGroupNode | node_group_ids, node_group_names, node_ids, node_names | +| `DELETE /object-store-access-keys` | Remove-PfbObjectStoreAccessKey | context_names | +| `DELETE /object-store-access-policies` | Remove-PfbObjectStoreAccessPolicy | context_names | +| `DELETE /object-store-account-exports` | Remove-PfbObjectStoreAccountExport | context_names | +| `DELETE /object-store-accounts` | Remove-PfbObjectStoreAccount | context_names | +| `DELETE /object-store-remote-credentials` | Remove-PfbObjectStoreRemoteCredential | context_names | +| `DELETE /object-store-roles` | Remove-PfbObjectStoreRole | context_names | +| `DELETE /object-store-users` | Remove-PfbObjectStoreUser | context_names | +| `DELETE /object-store-virtual-hosts` | Remove-PfbObjectStoreVirtualHost | context_names | +| `DELETE /policies` | Remove-PfbPolicy | context_names | +| `DELETE /policies/file-system-replica-links` | Remove-PfbPolicyFileSystemReplicaLink | context_names, local_file_system_ids, local_file_system_names, remote_ids, remote_names | +| `DELETE /policies/file-systems` | Remove-PfbPolicyFileSystem | context_names | +| `DELETE /presets/workload` | Remove-PfbPresetWorkload | context_names | +| `DELETE /qos-policies` | Remove-PfbQosPolicy | context_names | +| `DELETE /qos-policies/members` | Remove-PfbQosPolicyMember | context_names, member_types | +| `DELETE /s3-export-policies` | Remove-PfbS3ExportPolicy | context_names | +| `DELETE /smb-client-policies` | Remove-PfbSmbClientPolicy | context_names | +| `DELETE /smb-share-policies` | Remove-PfbSmbSharePolicy | context_names | +| `DELETE /ssh-certificate-authority-policies/admins` | Remove-PfbSshCaPolicyAdmin | context_names | +| `DELETE /ssh-certificate-authority-policies/arrays` | Remove-PfbSshCaPolicyArray | context_names | +| `DELETE /workloads` | Remove-PfbWorkload | context_names | +| `DELETE /worm-data-policies` | Remove-PfbWormPolicy | context_names | +| `GET /active-directory` | Get-PfbActiveDirectory | ids, limit, sort | +| `GET /active-directory/test` | Test-PfbActiveDirectory | allow_errors, context_names, filter, limit, sort | +| `GET /admins` | Get-PfbAdmin | allow_errors, context_names, expose_api_token | +| `GET /admins/api-tokens` | Get-PfbApiToken | admin_ids, admin_names, allow_errors, context_names, expose_api_token | +| `GET /admins/cache` | Get-PfbAdminCache | allow_errors, context_names, refresh | +| `GET /admins/management-access-policies` | Get-PfbAdminManagementAccessPolicy | allow_errors, context_names, sort | +| `GET /admins/ssh-certificate-authority-policies` | Get-PfbAdminSshCaPolicy | allow_errors, context_names, sort | +| `GET /alert-watchers/test` | Test-PfbAlertWatcher | filter, sort | +| `GET /array-connections` | Get-PfbArrayConnection | allow_errors, context_names, remote_ids, remote_names | +| `GET /array-connections/connection-key` | Get-PfbArrayConnectionKey | ids | +| `GET /array-connections/path` | Get-PfbArrayConnectionPath | allow_errors, context_names, ids, remote_ids, remote_names | +| `GET /array-connections/performance/replication` | Get-PfbArrayConnectionPerformanceReplication | ids, remote_ids, remote_names, total_only, type | +| `GET /arrays/clients/performance` | Get-PfbArrayClientPerformance | names, protocol, total_only | +| `GET /arrays/clients/s3-specific-performance` | Get-PfbArrayClientS3Performance | names, total_only | +| `GET /arrays/http-specific-performance` | Get-PfbArrayHttpPerformance | allow_errors, context_names | +| `GET /arrays/nfs-specific-performance` | Get-PfbArrayNfsPerformance | allow_errors, context_names | +| `GET /arrays/performance` | Get-PfbArrayPerformance | allow_errors, context_names | +| `GET /arrays/performance/replication` | Get-PfbArrayPerformanceReplication | allow_errors, context_names, type | +| `GET /arrays/s3-specific-performance` | Get-PfbArrayS3Performance | allow_errors, context_names | +| `GET /arrays/space` | Get-PfbArraySpace | allow_errors, context_names, end_time, resolution, start_time | +| `GET /arrays/space/storage-classes` | Get-PfbArrayStorageClass | end_time, resolution, start_time, storage_class_names, total_only | +| `GET /arrays/ssh-certificate-authority-policies` | Get-PfbArraySshCaPolicy | allow_errors, context_names, sort | +| `GET /arrays/supported-time-zones` | Get-PfbArraySupportedTimeZone | names | +| `GET /audit-file-systems-policies` | Get-PfbAuditFileSystemPolicy | allow_errors, context_names | +| `GET /audit-file-systems-policies/members` | Get-PfbAuditFileSystemPolicyMember | allow_errors, context_names | +| `GET /audit-file-systems-policy-operations` | Get-PfbAuditFileSystemPolicyOperation | allow_errors, context_names, names | +| `GET /audit-object-store-policies` | Get-PfbAuditObjectStorePolicy | allow_errors, context_names | +| `GET /audit-object-store-policies/members` | Get-PfbAuditObjectStorePolicyMember | allow_errors, context_names | +| `GET /blades` | Get-PfbBlade, Get-PfbNode | total_only | +| `GET /bucket-audit-filter-actions` | Get-PfbBucketAuditFilterAction | allow_errors, context_names, names | +| `GET /bucket-replica-links` | Get-PfbBucketReplicaLink | allow_errors, context_names, ids, local_bucket_ids, remote_ids, remote_names, total_only | +| `GET /buckets` | Get-PfbBucket | allow_errors, context_names | +| `GET /buckets/audit-filters` | Get-PfbBucketAuditFilter | allow_errors, bucket_ids, bucket_names, context_names, names | +| `GET /buckets/bucket-access-policies` | Get-PfbBucketAccessPolicy | allow_errors, bucket_ids, bucket_names, context_names | +| `GET /buckets/bucket-access-policies/rules` | Get-PfbBucketAccessPolicyRule | allow_errors, bucket_ids, bucket_names, context_names | +| `GET /buckets/cross-origin-resource-sharing-policies` | Get-PfbBucketCorsPolicy | allow_errors, bucket_ids, bucket_names, context_names | +| `GET /buckets/cross-origin-resource-sharing-policies/rules` | Get-PfbBucketCorsPolicyRule | allow_errors, bucket_ids, bucket_names, context_names | +| `GET /certificate-groups/certificates` | Get-PfbCertificateGroupCertificate | certificate_group_ids, certificate_group_names, certificate_ids, certificate_names | +| `GET /certificate-groups/uses` | Get-PfbCertificateGroupUse | ids | +| `GET /certificates/certificate-groups` | Get-PfbCertificateCertificateGroup | certificate_group_ids, certificate_ids, sort | +| `GET /certificates/uses` | Get-PfbCertificateUse | ids | +| `GET /data-eviction-policies` | Get-PfbDataEvictionPolicy | allow_errors, context_names | +| `GET /data-eviction-policies/file-systems` | Get-PfbDataEvictionPolicyFileSystem | allow_errors, context_names | +| `GET /data-eviction-policies/members` | Get-PfbDataEvictionPolicyMember | allow_errors, context_names | +| `GET /directory-services` | Get-PfbDirectoryService | ids, limit, sort | +| `GET /directory-services/local/directory-services` | Get-PfbLocalDirectoryService | allow_errors, context_names, destroyed, total_item_count | +| `GET /directory-services/local/groups` | Get-PfbLocalGroup | allow_errors, context_names, gids, sids, total_item_count | +| `GET /directory-services/local/groups/members` | Get-PfbLocalGroupMember | allow_errors, context_names, group_gids, group_sids, member_ids, member_sids, member_types, total_item_count | +| `GET /directory-services/roles` | Get-PfbDirectoryServiceRole | role_ids, role_names | +| `GET /directory-services/roles/management-access-policies` | Get-PfbDirectoryServiceRoleManagementPolicy | sort | +| `GET /drives` | Get-PfbDrive | total_only | +| `GET /file-system-exports` | Get-PfbFileSystemExport | allow_errors, context_names, workload_ids, workload_names | +| `GET /file-system-replica-links` | Get-PfbFileSystemReplicaLink | allow_errors, context_names, ids, local_file_system_ids, remote_file_system_ids, remote_ids, remote_names | +| `GET /file-system-replica-links/policies` | Get-PfbFileSystemReplicaLinkPolicy | allow_errors, context_names, local_file_system_ids, local_file_system_names, remote_file_system_ids, remote_file_system_names, remote_ids, remote_names | +| `GET /file-system-replica-links/transfer` | Get-PfbFileSystemReplicaLinkTransfer | allow_errors, context_names, names_or_owner_names, remote_ids, remote_names | +| `GET /file-system-snapshots` | Get-PfbFileSystemSnapshot | allow_errors, context_names, names_or_owner_names, owner_ids | +| `GET /file-system-snapshots/policies` | Get-PfbFileSystemSnapshotPolicy | allow_errors, context_names | +| `GET /file-system-snapshots/transfer` | Get-PfbFileSystemSnapshotTransfer | allow_errors, context_names, names_or_owner_names | +| `GET /file-systems` | Get-PfbFileSystem | allow_errors, context_names, workload_ids, workload_names | +| `GET /file-systems/audit-policies` | Get-PfbFileSystemAuditPolicy | allow_errors, context_names | +| `GET /file-systems/groups/performance` | Get-PfbFileSystemGroupPerformance | gids, group_names, names | +| `GET /file-systems/locks` | Get-PfbFileLock | allow_errors, client_names, context_names, file_system_ids, file_system_names, inodes, paths | +| `GET /file-systems/locks/clients` | Get-PfbFileLockClient | allow_errors, context_names | +| `GET /file-systems/open-files` | Get-PfbOpenFile | client_names, file_system_ids, file_system_names, paths, protocols, session_names, user_names | +| `GET /file-systems/policies` | Get-PfbFileSystemPolicy | allow_errors, context_names | +| `GET /file-systems/sessions` | Get-PfbFileSystemSession | allow_errors, client_names, context_names, protocols, user_names | +| `GET /file-systems/space/storage-classes` | Get-PfbFileSystemStorageClass | storage_class_names | +| `GET /file-systems/users/performance` | Get-PfbFileSystemUserPerformance | names, uids, user_names | +| `GET /file-systems/worm-data-policies` | Get-PfbFileSystemWormPolicy | allow_errors, context_names | +| `GET /fleets` | Get-PfbFleet | total_only | +| `GET /fleets/fleet-key` | Get-PfbFleetKey | total_only | +| `GET /fleets/members` | Get-PfbFleetMember | fleet_ids, member_ids, total_only | +| `GET /hardware-connectors/performance` | Get-PfbHardwareConnectorPerformance | ids, total_only | +| `GET /keytabs/download` | Get-PfbKeytabDownload | keytab_ids, keytab_names | +| `GET /legal-holds/held-entities` | Get-PfbLegalHoldEntity | file_system_ids, file_system_names, ids, names, paths | +| `GET /lifecycle-rules` | Get-PfbLifecycleRule | allow_errors, bucket_ids, context_names | +| `GET /log-targets/file-systems` | Get-PfbLogTargetFileSystem | allow_errors, context_names | +| `GET /log-targets/object-store` | Get-PfbLogTargetObjectStore | allow_errors, context_names | +| `GET /management-access-policies` | Get-PfbManagementAccessPolicy | allow_errors, context_names | +| `GET /management-access-policies/admins` | Get-PfbManagementAccessPolicyAdmin | allow_errors, context_names, sort | +| `GET /management-access-policies/directory-services/roles` | Get-PfbManagementAccessPolicyDirectoryRole | sort | +| `GET /management-access-policies/members` | Get-PfbManagementAccessPolicyMember | allow_errors, context_names, sort | +| `GET /network-access-policies/rules` | Get-PfbNetworkAccessRule | ids | +| `GET /network-interfaces/connectors/performance` | Get-PfbNetworkInterfaceConnectorPerformance | ids, total_only | +| `GET /network-interfaces/connectors/settings` | Get-PfbNetworkInterfaceConnectorSettings | ids | +| `GET /network-interfaces/neighbors` | Get-PfbNetworkInterfaceNeighbor | local_port_names, total_item_count | +| `GET /network-interfaces/network-connection-statistics` | Get-PfbNetworkConnectionStatistics | current_state, local_host, local_port, remote_host, remote_port | +| `GET /nfs-export-policies` | Get-PfbNfsExportPolicy | allow_errors, context_names, workload_ids, workload_names | +| `GET /nfs-export-policies/rules` | Get-PfbNfsExportRule | allow_errors, context_names, ids | +| `GET /node-groups/nodes` | Get-PfbNodeGroupNode | node_group_ids, node_group_names, node_ids, node_names | +| `GET /node-groups/uses` | Get-PfbNodeGroupUse | ids | +| `GET /nodes` | Get-PfbNode | total_only | +| `GET /object-store-access-keys` | Get-PfbObjectStoreAccessKey | allow_errors, context_names | +| `GET /object-store-access-policies` | Get-PfbObjectStoreAccessPolicy | allow_errors, context_names, exclude_rules | +| `GET /object-store-access-policies/object-store-roles` | Get-PfbObjectStoreAccessPolicyRole | allow_errors, context_names | +| `GET /object-store-access-policies/object-store-users` | Get-PfbObjectStoreAccessPolicyUser | allow_errors, context_names | +| `GET /object-store-access-policies/rules` | Get-PfbObjectStoreAccessPolicyRule | allow_errors, context_names | +| `GET /object-store-access-policy-actions` | Get-PfbObjectStoreAccessPolicyAction | allow_errors, context_names, names | +| `GET /object-store-account-exports` | Get-PfbObjectStoreAccountExport | allow_errors, context_names | +| `GET /object-store-accounts` | Get-PfbObjectStoreAccount | allow_errors, context_names | +| `GET /object-store-remote-credentials` | Get-PfbObjectStoreRemoteCredential | allow_errors, context_names | +| `GET /object-store-roles` | Get-PfbObjectStoreRole | allow_errors, context_names | +| `GET /object-store-roles/object-store-access-policies` | Get-PfbObjectStoreRoleAccessPolicy | allow_errors, context_names, policy_ids, policy_names | +| `GET /object-store-roles/object-store-trust-policies` | Get-PfbObjectStoreTrustPolicy | allow_errors, context_names, names | +| `GET /object-store-roles/object-store-trust-policies/rules` | Get-PfbObjectStoreTrustPolicyRule | allow_errors, context_names, indices, role_ids, role_names | +| `GET /object-store-users` | Get-PfbObjectStoreUser | allow_errors, context_names | +| `GET /object-store-users/object-store-access-policies` | Get-PfbObjectStoreUserAccessPolicy | allow_errors, context_names | +| `GET /object-store-virtual-hosts` | Get-PfbObjectStoreVirtualHost | allow_errors, context_names | +| `GET /policies` | Get-PfbPolicy | allow_errors, context_names, workload_ids, workload_names | +| `GET /policies-all` | Get-PfbPolicyAll | allow_errors, context_names | +| `GET /policies-all/members` | Get-PfbPolicyAllMember | allow_errors, context_names, local_file_system_ids, local_file_system_names, member_types, remote_file_system_ids, remote_file_system_names, remote_ids, remote_names, sort | +| `GET /policies/file-system-replica-links` | Get-PfbPolicyFileSystemReplicaLink | allow_errors, context_names, local_file_system_ids, local_file_system_names, remote_file_system_ids, remote_file_system_names, remote_ids, remote_names, sort | +| `GET /policies/file-system-snapshots` | Get-PfbPolicyFileSystemSnapshot | allow_errors, context_names | +| `GET /policies/file-systems` | Get-PfbPolicyFileSystem | allow_errors, context_names | +| `GET /presets/workload` | Get-PfbPresetWorkload | context_names | +| `GET /public-keys/uses` | Get-PfbPublicKeyUse | ids | +| `GET /qos-policies` | Get-PfbQosPolicy | allow_errors, context_names | +| `GET /qos-policies/buckets` | Get-PfbQosPolicyBucket | allow_errors, context_names, sort | +| `GET /qos-policies/file-systems` | Get-PfbQosPolicyFileSystem | allow_errors, context_names, sort | +| `GET /qos-policies/members` | Get-PfbQosPolicyMember | allow_errors, context_names, member_types, sort | +| `GET /quotas/groups` | Get-PfbQuotaGroup | allow_errors, context_names, file_system_ids, gids, group_names | +| `GET /quotas/users` | Get-PfbQuotaUser | allow_errors, context_names, file_system_ids, uids, user_names | +| `GET /realms` | Get-PfbRealm | allow_errors, context_names | +| `GET /realms/defaults` | Get-PfbRealmDefaults | allow_errors, context_names, realm_ids, realm_names | +| `GET /realms/space` | Get-PfbRealmSpace | end_time, ids, resolution, start_time, total_only, type | +| `GET /realms/space/storage-classes` | Get-PfbRealmStorageClass | end_time, ids, resolution, start_time, storage_class_names, total_only | +| `GET /remote-arrays` | Get-PfbRemoteArray | total_only | +| `GET /roles` | Get-PfbRole | ids | +| `GET /s3-export-policies` | Get-PfbS3ExportPolicy | allow_errors, context_names | +| `GET /s3-export-policies/rules` | Get-PfbS3ExportRule | allow_errors, context_names | +| `GET /servers` | Get-PfbServer | allow_errors, context_names | +| `GET /smb-client-policies` | Get-PfbSmbClientPolicy | allow_errors, context_names, workload_ids, workload_names | +| `GET /smb-client-policies/rules` | Get-PfbSmbClientRule | allow_errors, context_names, ids | +| `GET /smb-share-policies` | Get-PfbSmbSharePolicy | allow_errors, context_names, workload_ids, workload_names | +| `GET /smb-share-policies/rules` | Get-PfbSmbShareRule | allow_errors, context_names, ids | +| `GET /snmp-agents` | Get-PfbSnmpAgent | ids, limit, names, sort | +| `GET /snmp-managers/test` | Test-PfbSnmpManager | filter, limit, sort | +| `GET /software-check` | Get-PfbSoftwareCheck | ids, names, software_names, software_versions, total_item_count | +| `GET /ssh-certificate-authority-policies` | Get-PfbSshCaPolicy | allow_errors, context_names | +| `GET /ssh-certificate-authority-policies/admins` | Get-PfbSshCaPolicyAdmin | allow_errors, context_names, sort | +| `GET /ssh-certificate-authority-policies/arrays` | Get-PfbSshCaPolicyArray | allow_errors, context_names, sort | +| `GET /ssh-certificate-authority-policies/members` | Get-PfbSshCaPolicyMember | allow_errors, context_names, sort | +| `GET /sso/saml2/idps/test` | Test-PfbSaml2Idp | filter, limit, sort | +| `GET /storage-class-tiering-policies/members` | Get-PfbStorageClassTieringPolicyMember | allow_errors, context_names, sort | +| `GET /support` | Get-PfbSupport | ids | +| `GET /syslog-servers` | Get-PfbSyslogServer | allow_errors, context_names | +| `GET /targets` | Get-PfbTarget | allow_errors, context_names | +| `GET /targets/performance/replication` | Get-PfbTargetPerformanceReplication | ids, total_only | +| `GET /tls-policies` | Get-PfbTlsPolicy | effective, purity_defined | +| `GET /tls-policies/members` | Get-PfbTlsPolicyMember | sort | +| `GET /usage/groups` | Get-PfbUsageGroup | allow_errors, context_names, file_system_ids, gids, group_names | +| `GET /usage/users` | Get-PfbUsageUser | allow_errors, context_names, file_system_ids, uids, user_names | +| `GET /workloads` | Get-PfbWorkload | allow_errors, context_names | +| `GET /workloads/placement-recommendations` | Get-PfbWorkloadPlacementRecommendation | allow_errors, context_names | +| `GET /workloads/tags` | Get-PfbWorkloadTag | allow_errors, context_names | +| `GET /worm-data-policies` | Get-PfbWormPolicy | allow_errors, context_names | +| `GET /worm-data-policies/members` | Get-PfbWormPolicyMember | allow_errors, context_names, sort | +| `PATCH /active-directory` | Update-PfbActiveDirectory | ca_certificate, ca_certificate_group, directory_servers, encryption_types, fqdns, global_catalog_servers, join_ou, kerberos_servers, service_principal_names | +| `PATCH /admins` | Update-PfbAdmin | authorization_model, context_names, locked, management_access_policies, old_password, password, public_key, role | +| `PATCH /api-clients` | Update-PfbApiClient | access_policies, access_token_ttl_in_ms, enabled, id, issuer, key_id, max_role, name, public_key | +| `PATCH /array-connections` | Update-PfbArrayConnection | ca_certificate_group, context, context_names, encrypted, id, management_address, os, remote, remote_ids, remote_names, replication_addresses, status, throttle, type, version | +| `PATCH /buckets/audit-filters` | Update-PfbBucketAuditFilter | actions, bucket_ids, bucket_names, context_names, names, s3_prefixes | +| `PATCH /certificates` | Update-PfbCertificate | certificate, certificate_type, common_name, country, days, email, generate_new_key, id, intermediate_certificate, issued_by, issued_to, key_algorithm, key_size, locality, name, organization, organizational_unit, passphrase, private_key, realms, state, status, subject_alternative_names, valid_from, valid_to | +| `PATCH /directory-services/roles` | Update-PfbDirectoryServiceRole | group, group_base, id, management_access_policies, name, role, role_ids, role_names | +| `PATCH /dns` | Update-PfbDns | ca_certificate, ca_certificate_group, context, context_names, id, ids, name, names, realms, services, sources | +| `PATCH /file-system-exports` | Update-PfbFileSystemExport | context, context_names, enabled, export_name, id, member, name, policy, policy_type, server, share_policy, status | +| `PATCH /fleets` | Update-PfbFleet | name | +| `PATCH /hardware` | Update-PfbHardware | data_mac, details, id, identify_enabled, index, management_mac, model, name, part_number, sensor_readings, serial, slot, speed, status, temperature, type | +| `PATCH /hardware-connectors` | Update-PfbHardwareConnector | connector_type, id, lane_speed, lanes_per_port, name, port_count, port_speed, transceiver_type | +| `PATCH /kmip` | Update-PfbKmip | ca_certificate, ca_certificate_group, id, name, uris | +| `PATCH /legal-holds` | Update-PfbLegalHold | description, id, name, realms | +| `PATCH /legal-holds/held-entities` | Update-PfbLegalHoldEntity | file_system_ids, file_system_names, ids, paths, recursive, released | +| `PATCH /lifecycle-rules` | Update-PfbLifecycleRule | abort_incomplete_multipart_uploads_after, bucket_ids, bucket_names, confirm_date, context_names, enabled, keep_current_version_for, keep_current_version_until, keep_previous_version_for, prefix | +| `PATCH /link-aggregation-groups` | Update-PfbLag | add_ports, ports, remove_ports | +| `PATCH /log-targets/file-systems` | Update-PfbLogTargetFileSystem | context_names, file_system, id, keep_for, keep_size, name | +| `PATCH /log-targets/object-store` | Update-PfbLogTargetObjectStore | bucket, context_names, id, log_name_prefix, log_rotate, name | +| `PATCH /logs-async` | Update-PfbAsyncLog | available_files, end_time, hardware_components, id, last_request_time, name, processing, progress, start_time | +| `PATCH /management-access-policies` | Update-PfbManagementAccessPolicy | aggregation_strategy, context, context_names, enabled, id, is_local, location, name, policy_type, realms, rules, version | +| `PATCH /network-interfaces` | Update-PfbNetworkInterface | attached_servers, server, services | +| `PATCH /network-interfaces/connectors` | Update-PfbNetworkInterfaceConnector | connector_type, id, lane_speed, lanes_per_port, name, port_count, port_speed, transceiver_type | +| `PATCH /node-groups` | Update-PfbNodeGroup | name | +| `PATCH /nodes` | Update-PfbNode | capacity, chassis_serial_number, data_addresses, details, id, management_address, name, node_key, raw_capacity, serial_number, status, unique | +| `PATCH /object-store-account-exports` | Update-PfbObjectStoreAccountExport | context_names, export_enabled, policy | +| `PATCH /object-store-remote-credentials` | Update-PfbObjectStoreRemoteCredential | access_key_id, context, context_names, id, name, realms, remote, secret_access_key | +| `PATCH /object-store-roles` | Update-PfbObjectStoreRole | account, context, context_names, created, id, max_session_duration, name, prn, trusted_entities | +| `PATCH /object-store-virtual-hosts` | Update-PfbObjectStoreVirtualHost | add_attached_servers, attached_servers, context_names, hostname, id, name, remove_attached_servers | +| `PATCH /qos-policies` | Update-PfbQosPolicy | context, context_names, enabled, id, is_local, location, max_total_bytes_per_sec, max_total_ops_per_sec, name, policy_type, realms | +| `PATCH /realms/defaults` | Update-PfbRealmDefaults | context, context_names, object_store, realm, realm_ids, realm_names | +| `PATCH /snmp-managers` | Update-PfbSnmpManager | host, id, name, notification, v2c, v3, version | +| `PATCH /ssh-certificate-authority-policies` | Update-PfbSshCaPolicy | context, enabled, id, is_local, location, name, policy_type, realms, signing_authority, static_authorized_principals | +| `PATCH /sso/oidc/idps` | Update-PfbOidcIdp | enabled, idp, name, prn, services | +| `PATCH /sso/saml2/idps` | Update-PfbSaml2Idp | array_url, binding, enabled, id, idp, management, name, prn, services, sp | +| `PATCH /storage-class-tiering-policies` | Update-PfbStorageClassTieringPolicy | archival_rules, enabled, id, is_local, location, name, policy_type, realms, retrieval_rules | +| `PATCH /subnets` | Update-PfbSubnet | enabled, id, interfaces, link_aggregation_group, name, services, vlan | +| `PATCH /syslog-servers` | Update-PfbSyslogServer | services, sources, uri | +| `PATCH /targets` | Update-PfbTarget | address, ca_certificate_group, id, name, status, status_details | +| `PATCH /tls-policies` | Update-PfbTlsPolicy | appliance_certificate, client_certificates_required, disabled_tls_ciphers, enabled, enabled_tls_ciphers, id, is_local, location, min_tls_version, name, policy_type, realms, trusted_client_certificate_authority, verify_client_certificate_trust | +| `PATCH /worm-data-policies` | Update-PfbWormPolicy | context, context_names, default_retention, enabled, id, is_local, location, max_retention, min_retention, mode, name, policy_type, realms, retention_lock | +| `POST /admins/api-tokens` | New-PfbApiToken | admin_ids, admin_names, context_names, timeout | +| `POST /admins/management-access-policies` | New-PfbAdminManagementAccessPolicy | context_names | +| `POST /admins/ssh-certificate-authority-policies` | New-PfbAdminSshCaPolicy | context_names | +| `POST /array-connections` | New-PfbArrayConnection | ca_certificate_group, context, context_names, encrypted, id, os, remote, status, throttle, type, version | +| `POST /arrays/ssh-certificate-authority-policies` | New-PfbArraySshCaPolicy | context_names | +| `POST /audit-file-systems-policies/members` | New-PfbAuditFileSystemPolicyMember | context_names | +| `POST /audit-object-store-policies/members` | New-PfbAuditObjectStorePolicyMember | context_names | +| `POST /certificates/certificate-groups` | New-PfbCertificateCertificateGroup | certificate_group_ids, certificate_ids | +| `POST /data-eviction-policies/file-systems` | Add-PfbDataEvictionPolicyFileSystem | context_names | +| `POST /file-system-replica-links/policies` | New-PfbFileSystemReplicaLinkPolicy | context_names, local_file_system_ids, local_file_system_names, remote_ids, remote_names | +| `POST /file-systems/audit-policies` | New-PfbFileSystemAuditPolicy | context_names | +| `POST /file-systems/policies` | New-PfbFileSystemPolicy | context_names | +| `POST /fleets/members` | New-PfbFleetMember | fleet_ids, members | +| `POST /legal-holds/held-entities` | New-PfbLegalHoldEntity | file_system_ids, file_system_names, ids, names, paths, recursive | +| `POST /management-access-policies/admins` | New-PfbManagementAccessPolicyAdmin | context_names | +| `POST /network-access-policies/rules` | New-PfbNetworkAccessRule | before_rule_id, before_rule_name, client, effect, id, index, interfaces, name, versions | +| `POST /network-interfaces/tls-policies` | New-PfbNetworkInterfaceTlsPolicy | member_ids, policy_ids | +| `POST /nfs-export-policies/rules` | New-PfbNfsExportRule | access, anongid, anonuid, atime, before_rule_id, before_rule_name, client, context, context_names, fileid_32bit, id, index, name, permission, policy, policy_version, required_transport_security, secure, security, versions | +| `POST /node-groups/nodes` | New-PfbNodeGroupNode | node_group_ids, node_group_names, node_ids, node_names | +| `POST /policies/file-system-replica-links` | New-PfbPolicyFileSystemReplicaLink | context_names, local_file_system_ids, local_file_system_names, remote_ids, remote_names | +| `POST /policies/file-systems` | New-PfbPolicyFileSystem | context_names | +| `POST /qos-policies/members` | New-PfbQosPolicyMember | context_names, member_types | +| `POST /s3-export-policies/rules` | New-PfbS3ExportRule | actions, context_names, effect, names, resources | +| `POST /smb-client-policies/rules` | New-PfbSmbClientRule | before_rule_id, before_rule_name, client, context_names, encryption, id, index, name, permission, versions | +| `POST /smb-share-policies/rules` | New-PfbSmbShareRule | change, context_names, full_control, id, name, principal, read | +| `POST /ssh-certificate-authority-policies/admins` | New-PfbSshCaPolicyAdmin | context_names | +| `POST /ssh-certificate-authority-policies/arrays` | New-PfbSshCaPolicyArray | context_names | + diff --git a/Reports/PfbFieldCmdletMap.json b/Reports/PfbFieldCmdletMap.json new file mode 100644 index 0000000..ff27a8f --- /dev/null +++ b/Reports/PfbFieldCmdletMap.json @@ -0,0 +1,16237 @@ +{ + "schemaVersion": 1, + "generatedFrom": [ + "2.0", + "2.1", + "2.2", + "2.3", + "2.4", + "2.5", + "2.6", + "2.7", + "2.8", + "2.9", + "2.10", + "2.11", + "2.12", + "2.13", + "2.14", + "2.15", + "2.16", + "2.17", + "2.18", + "2.19", + "2.20", + "2.21", + "2.22", + "2.23", + "2.24", + "2.25", + "2.26", + "2.27" + ], + "entries": [ + { + "cmdlet": "Get-PfbAdmin", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdmin", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdmin", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdmin", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdmin", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminCache", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminCache", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminCache", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminCache", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminCache", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminManagementAccessPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminManagementAccessPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminManagementAccessPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminManagementAccessPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminManagementAccessPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminManagementAccessPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminSshCaPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminSshCaPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminSshCaPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminSshCaPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminSshCaPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAdminSshCaPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiClient", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiClient", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiClient", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiClient", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiClient", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiToken", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiToken", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiToken", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiToken", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbApiToken", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyAdmin", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyAdmin", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyAdmin", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyAdmin", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyAdmin", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyAdmin", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyDirectoryRole", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyDirectoryRole", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyDirectoryRole", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyDirectoryRole", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyDirectoryRole", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyDirectoryRole", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbManagementAccessPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOidcIdp", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOidcIdp", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOidcIdp", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOidcIdp", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOidcIdp", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKey", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKey", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKey", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKey", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKey", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSaml2Idp", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSaml2Idp", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSaml2Idp", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSaml2Idp", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSaml2Idp", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSession", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSession", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSession", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSession", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSession", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAdminManagementAccessPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAdminManagementAccessPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAdminManagementAccessPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAdminManagementAccessPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAdminSshCaPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAdminSshCaPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAdminSshCaPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAdminSshCaPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbApiToken", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbApiToken", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbManagementAccessPolicyAdmin", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbManagementAccessPolicyAdmin", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbManagementAccessPolicyAdmin", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbManagementAccessPolicyAdmin", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbManagementAccessPolicyDirectoryRole", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbManagementAccessPolicyDirectoryRole", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbManagementAccessPolicyDirectoryRole", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbManagementAccessPolicyDirectoryRole", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminCache", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminCache", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminManagementAccessPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminManagementAccessPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminManagementAccessPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminManagementAccessPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminSshCaPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminSshCaPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminSshCaPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAdminSshCaPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbApiClient", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbApiClient", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbApiToken", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbApiToken", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicyAdmin", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicyAdmin", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicyAdmin", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicyAdmin", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicyDirectoryRole", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicyDirectoryRole", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicyDirectoryRole", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbManagementAccessPolicyDirectoryRole", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbOidcIdp", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbOidcIdp", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPublicKey", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPublicKey", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSaml2Idp", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSaml2Idp", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbSaml2Idp", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbSaml2Idp", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAdmin", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAdmin", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbApiClient", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbApiClient", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbManagementAccessPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbManagementAccessPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbOidcIdp", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbOidcIdp", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSaml2Idp", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSaml2Idp", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlert", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlert", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlert", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlert", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlert", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlertWatcher", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlertWatcher", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlertWatcher", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlertWatcher", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAlertWatcher", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAlertWatcher", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAlertWatcher", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbAlertWatcher", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbAlertWatcher", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAlert", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAlert", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAlertWatcher", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAlertWatcher", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientPerformance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientPerformance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientPerformance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientS3Performance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientS3Performance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientS3Performance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientS3Performance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientS3Performance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayClientS3Performance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayErasure", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayErasure", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayErasure", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayHttpPerformance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayHttpPerformance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayHttpPerformance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayHttpPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayHttpPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayHttpPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayNfsPerformance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayNfsPerformance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayNfsPerformance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayNfsPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayNfsPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayNfsPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformanceReplication", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformanceReplication", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformanceReplication", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformanceReplication", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformanceReplication", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayPerformanceReplication", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayS3Performance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayS3Performance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayS3Performance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayS3Performance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayS3Performance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayS3Performance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySshCaPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySshCaPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySshCaPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySshCaPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySshCaPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySshCaPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayStorageClass", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayStorageClass", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayStorageClass", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySupportedTimeZone", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySupportedTimeZone", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArraySupportedTimeZone", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbArraySshCaPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbArraySshCaPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbArraySshCaPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbArraySshCaPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbArraySshCaPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbArraySshCaPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbArraySshCaPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbArraySshCaPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucket", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucket", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucket", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucket", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucket", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucket", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucket", + "parameter": "Destroyed", + "wireName": "destroyed", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicyRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicyRule", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicyRule", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicyRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicyRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicyRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAccessPolicyRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAuditFilter", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAuditFilter", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAuditFilter", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAuditFilter", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAuditFilter", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAuditFilterAction", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAuditFilterAction", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketAuditFilterAction", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicyRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicyRule", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicyRule", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicyRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicyRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicyRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketCorsPolicyRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketPerformance", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketS3Performance", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbBucket", + "parameter": "QuotaLimit", + "wireName": "quota_limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbBucket", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbBucket", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbBucketAuditFilter", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbBucketAuditFilter", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbBucketCorsPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbBucketCorsPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbBucketCorsPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbBucket", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbBucket", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbBucket", + "parameter": "QuotaLimit", + "wireName": "quota_limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbBucketAuditFilter", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbBucketAuditFilter", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificate", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificate", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificate", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificate", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificate", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateCertificateGroup", + "parameter": "CertificateName", + "wireName": "certificate_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateCertificateGroup", + "parameter": "CertificateGroupName", + "wireName": "certificate_group_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateCertificateGroup", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateCertificateGroup", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroup", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroup", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroup", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroup", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupCertificate", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupCertificate", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupCertificate", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupCertificate", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupCertificate", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupUse", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupUse", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupUse", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateGroupUse", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateUse", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateUse", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateUse", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbCertificateUse", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbCertificateCertificateGroup", + "parameter": "CertificateName", + "wireName": "certificate_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbCertificateCertificateGroup", + "parameter": "CertificateGroupName", + "wireName": "certificate_group_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbCertificate", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbCertificate", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbCertificateCertificateGroup", + "parameter": "CertificateName", + "wireName": "certificate_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbCertificateCertificateGroup", + "parameter": "CertificateGroupName", + "wireName": "certificate_group_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbCertificateGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbCertificateGroup", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbCertificate", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbCertificate", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Add-PfbDataEvictionPolicyFileSystem", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Add-PfbDataEvictionPolicyFileSystem", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Add-PfbDataEvictionPolicyFileSystem", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Add-PfbDataEvictionPolicyFileSystem", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyFileSystem", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyFileSystem", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyFileSystem", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyFileSystem", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyFileSystem", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyFileSystem", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyFileSystem", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyMember", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDataEvictionPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDataEvictionPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDataEvictionPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDataEvictionPolicyFileSystem", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDataEvictionPolicyFileSystem", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDataEvictionPolicyFileSystem", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDataEvictionPolicyFileSystem", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbDataEvictionPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbDataEvictionPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbDataEvictionPolicy", + "parameter": "NewName", + "wireName": "name", + "status": "not-found-in-resource", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbDataEvictionPolicy", + "parameter": "KeepSize", + "wireName": "keep_size", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbActiveDirectory", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbActiveDirectory", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryService", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryService", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRole", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRole", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRole", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRole", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRole", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalDirectoryService", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalDirectoryService", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalDirectoryService", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalDirectoryService", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalDirectoryService", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroup", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroup", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroup", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroup", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroupMember", + "parameter": "Group", + "wireName": "group_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroupMember", + "parameter": "Member", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroupMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroupMember", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLocalGroupMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbLocalDirectoryService", + "parameter": "Domain", + "wireName": "domain", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbLocalGroup", + "parameter": "Email", + "wireName": "email", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbLocalGroup", + "parameter": "Gid", + "wireName": "gid", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbLocalGroupMember", + "parameter": "LocalDirectoryService", + "wireName": "local_directory_service_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbActiveDirectory", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbActiveDirectory", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDirectoryServiceRole", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDirectoryServiceRole", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDirectoryServiceRoleManagementPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLocalGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLocalGroup", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbActiveDirectory", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbActiveDirectory", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbActiveDirectory", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbActiveDirectory", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbDirectoryServiceRole", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbDirectoryServiceRole", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLock", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLock", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLock", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLock", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLock", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLock", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLockClient", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLockClient", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLockClient", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLockClient", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLockClient", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileLockClient", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystem", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystem", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystem", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystem", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystem", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystem", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystem", + "parameter": "Destroyed", + "wireName": "destroyed", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemAuditPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemAuditPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemAuditPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemAuditPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemAuditPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemAuditPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemAuditPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemExport", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemExport", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemExport", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemExport", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemExport", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemExport", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "Name", + "wireName": "file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "Id", + "wireName": "file_system_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemGroupPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSession", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSession", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSession", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSession", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSession", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSession", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemStorageClass", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemStorageClass", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemStorageClass", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemStorageClass", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemStorageClass", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemStorageClass", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "Name", + "wireName": "file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "Id", + "wireName": "file_system_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemUserPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemWormPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemWormPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemWormPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemWormPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemWormPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemWormPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemWormPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOpenFile", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOpenFile", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOpenFile", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOpenFile", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOpenFile", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbOpenFile", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "Provisioned", + "wireName": "provisioned", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "DefaultUserQuota", + "wireName": "default_user_quota", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "DefaultGroupQuota", + "wireName": "default_group_quota", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemAuditPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemAuditPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemAuditPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemAuditPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemExport", + "parameter": "Policy", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemExport", + "parameter": "ExportName", + "wireName": "export_name", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileLock", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileLock", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystem", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystem", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystem", + "parameter": "DeleteLinkOnEradication", + "wireName": "delete_link_on_eradication", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemAuditPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemAuditPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemAuditPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemAuditPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemExport", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemExport", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSession", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSession", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbOpenFile", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbOpenFile", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "Provisioned", + "wireName": "provisioned", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "DiscardNonSnapshottedData", + "wireName": "discard_non_snapshotted_data", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbFileSystemExport", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbFileSystemExport", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshot", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshot", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshot", + "parameter": "SourceName", + "wireName": "source_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshot", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshot", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshot", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshot", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshot", + "parameter": "Destroyed", + "wireName": "destroyed", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotTransfer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotTransfer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotTransfer", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotTransfer", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotTransfer", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemSnapshotTransfer", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemSnapshot", + "parameter": "Send", + "wireName": "send", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemSnapshot", + "parameter": "Targets", + "wireName": "targets", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshot", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshot", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshotPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshotPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshotPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshotPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshotTransfer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshotTransfer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBlade", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBlade", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBlade", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBlade", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBlade", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDrive", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDrive", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDrive", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDrive", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbDrive", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardware", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardware", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardware", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardware", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardware", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnector", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnector", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnector", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnector", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnector", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnectorPerformance", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnectorPerformance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnectorPerformance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnectorPerformance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnectorPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnectorPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareConnectorPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbHardwareTemperature", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbHardware", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbHardware", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbHardwareConnector", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbHardwareConnector", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytab", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytab", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytab", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytab", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytab", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytabDownload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytabDownload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytabDownload", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytabDownload", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKeytabDownload", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKmip", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKmip", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKmip", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKmip", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbKmip", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLag", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLag", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLag", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLag", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLag", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHold", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHold", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHold", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHold", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHold", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHoldEntity", + "parameter": "HoldName", + "wireName": "hold_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHoldEntity", + "parameter": "HoldId", + "wireName": "hold_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHoldEntity", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHoldEntity", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHoldEntity", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHoldEntity", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLegalHoldEntity", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLifecycleRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLifecycleRule", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLifecycleRule", + "parameter": "BucketName", + "wireName": "bucket_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLifecycleRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLifecycleRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLifecycleRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbMaintenanceWindow", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbMaintenanceWindow", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbMaintenanceWindow", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbMaintenanceWindow", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbMaintenanceWindow", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKeyUse", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKeyUse", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKeyUse", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPublicKeyUse", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResiliencyGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResiliencyGroup", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResiliencyGroup", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResiliencyGroup", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResiliencyGroup", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResourceAccess", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResourceAccess", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResourceAccess", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResourceAccess", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbResourceAccess", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRole", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRole", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRole", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRole", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSoftwareCheck", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSoftwareCheck", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSoftwareCheck", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbUsageGroup", + "parameter": "FileSystemName", + "wireName": "file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbUsageGroup", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbUsageGroup", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbUsageGroup", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbUsageUser", + "parameter": "FileSystemName", + "wireName": "file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbUsageUser", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbUsageUser", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbUsageUser", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbLegalHoldEntity", + "parameter": "HoldName", + "wireName": "hold_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbLegalHoldEntity", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbKeytab", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbKeytab", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLag", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLag", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLegalHold", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLegalHold", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLifecycleRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLifecycleRule", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbMaintenanceWindow", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbMaintenanceWindow", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbResourceAccess", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbResourceAccess", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbKmip", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbKmip", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbKmip", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbKmip", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLag", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLag", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLegalHold", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLegalHold", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLegalHoldEntity", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLifecycleRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLifecycleRule", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAsyncLog", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAsyncLog", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAsyncLog", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAsyncLog", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAsyncLog", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAsyncLogDownload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAsyncLogDownload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLog", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLog", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLog", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLog", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLog", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetFileSystem", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetFileSystem", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetFileSystem", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetFileSystem", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetFileSystem", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetObjectStore", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetObjectStore", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetObjectStore", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetObjectStore", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbLogTargetObjectStore", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSnmpAgent", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSnmpManager", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSnmpManager", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSnmpManager", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSnmpManager", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSnmpManager", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSyslogServer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSyslogServer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSyslogServer", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSyslogServer", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSyslogServer", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLogTargetFileSystem", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLogTargetFileSystem", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLogTargetObjectStore", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbLogTargetObjectStore", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSnmpManager", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSnmpManager", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSyslogServer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSyslogServer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbSnmpManager", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbSnmpManager", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbSyslogServer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Test-PfbSyslogServer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAsyncLog", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAsyncLog", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLogTargetFileSystem", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLogTargetFileSystem", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLogTargetObjectStore", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbLogTargetObjectStore", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSmtp", + "parameter": "RelayHost", + "wireName": "relay_host", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSmtp", + "parameter": "SenderDomain", + "wireName": "sender_domain", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSnmpManager", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSnmpManager", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSyslogServer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSyslogServer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicyMember", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkConnectionStatistics", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkConnectionStatistics", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkConnectionStatistics", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkConnectionStatistics", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterface", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterface", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterface", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterface", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterface", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnector", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnector", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnector", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnector", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnector", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorPerformance", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorPerformance", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorPerformance", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorPerformance", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorPerformance", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorPerformance", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorPerformance", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorSettings", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorSettings", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorSettings", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceConnectorSettings", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceNeighbor", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceNeighbor", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceNeighbor", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceNeighbor", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceTlsPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceTlsPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceTlsPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceTlsPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceTlsPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceTlsPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkInterfaceTlsPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSubnet", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSubnet", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSubnet", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSubnet", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSubnet", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Invoke-PfbNetworkPing", + "parameter": "SourceName", + "wireName": "source.name", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Invoke-PfbNetworkPing", + "parameter": "Count", + "wireName": "count", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Invoke-PfbNetworkPing", + "parameter": "PacketSize", + "wireName": "packet_size", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Invoke-PfbNetworkTrace", + "parameter": "SourceName", + "wireName": "source.name", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNetworkInterface", + "parameter": "Address", + "wireName": "address", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNetworkInterfaceTlsPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNetworkInterfaceTlsPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSubnet", + "parameter": "Prefix", + "wireName": "prefix", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSubnet", + "parameter": "Gateway", + "wireName": "gateway", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSubnet", + "parameter": "Mtu", + "wireName": "mtu", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSubnet", + "parameter": "Vlan", + "wireName": "vlan", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDns", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbDns", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNetworkInterface", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNetworkInterface", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNetworkInterfaceTlsPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNetworkInterfaceTlsPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSubnet", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSubnet", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbDns", + "parameter": "Domain", + "wireName": "domain", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbDns", + "parameter": "Nameservers", + "wireName": "nameservers", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNetworkInterface", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNetworkInterface", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNetworkInterface", + "parameter": "Address", + "wireName": "address", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNetworkInterfaceConnector", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNetworkInterfaceConnector", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSubnet", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSubnet", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSubnet", + "parameter": "Prefix", + "wireName": "prefix", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSubnet", + "parameter": "Gateway", + "wireName": "gateway", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSubnet", + "parameter": "Mtu", + "wireName": "mtu", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNode", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNode", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNode", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNode", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNode", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroup", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroup", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroup", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroup", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupNode", + "parameter": "GroupName", + "wireName": "group_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupNode", + "parameter": "GroupId", + "wireName": "group_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupNode", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupNode", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupNode", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupNode", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupNode", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupUse", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupUse", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupUse", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNodeGroupUse", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNodeGroupNode", + "parameter": "GroupName", + "wireName": "group_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNodeGroupNode", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNodeGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNodeGroup", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNodeGroupNode", + "parameter": "GroupName", + "wireName": "group_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNodeGroupNode", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNode", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNode", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNodeGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNodeGroup", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessKey", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessKey", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessKey", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessKey", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessKey", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicy", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyAction", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyAction", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyAction", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyAction", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRole", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRole", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRole", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRole", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRole", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRole", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRole", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRole", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyRule", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyUser", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyUser", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyUser", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyUser", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyUser", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyUser", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyUser", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccessPolicyUser", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccount", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccount", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccount", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccount", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccount", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccount", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccountExport", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccountExport", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccountExport", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccountExport", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccountExport", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreAccountExport", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRemoteCredential", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRemoteCredential", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRemoteCredential", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRemoteCredential", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRemoteCredential", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRemoteCredential", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRole", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRole", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRole", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRole", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRole", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRole", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRoleAccessPolicy", + "parameter": "RoleName", + "wireName": "role_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRoleAccessPolicy", + "parameter": "RoleId", + "wireName": "role_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRoleAccessPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRoleAccessPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRoleAccessPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRoleAccessPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRoleAccessPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreRoleAccessPolicy", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicy", + "parameter": "RoleName", + "wireName": "role_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicy", + "parameter": "RoleId", + "wireName": "role_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicy", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicyRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicyRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicyRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicyRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicyRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicyRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreTrustPolicyRule", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUser", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUser", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUser", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUser", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUser", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUserAccessPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUserAccessPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUserAccessPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUserAccessPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUserAccessPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUserAccessPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUserAccessPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreUserAccessPolicy", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreVirtualHost", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreVirtualHost", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreVirtualHost", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreVirtualHost", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbObjectStoreVirtualHost", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbObjectStoreVirtualHost", + "parameter": "Hostname", + "wireName": "hostname", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessKey", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessKey", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessPolicyRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccount", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccount", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccountExport", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreAccountExport", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreRemoteCredential", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreRemoteCredential", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreRole", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreRole", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreTrustPolicyRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreUser", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreUser", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreVirtualHost", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbObjectStoreVirtualHost", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbObjectStoreAccountExport", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbObjectStoreAccountExport", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbObjectStoreRemoteCredential", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbObjectStoreRemoteCredential", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbObjectStoreRole", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbObjectStoreRole", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbObjectStoreVirtualHost", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbObjectStoreVirtualHost", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyMember", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyOperation", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyOperation", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditFileSystemPolicyOperation", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicyMember", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAuditObjectStorePolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNetworkAccessRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbNfsExportRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAll", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAll", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAll", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAll", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAll", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAllMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAllMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAllMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAllMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAllMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyAllMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystem", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystem", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystem", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystem", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystem", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystem", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystem", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemReplicaLink", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemReplicaLink", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemReplicaLink", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemReplicaLink", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemReplicaLink", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemReplicaLink", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemSnapshot", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemSnapshot", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemSnapshot", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemSnapshot", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemSnapshot", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemSnapshot", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPolicyFileSystemSnapshot", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyBucket", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyBucket", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyBucket", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyBucket", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyBucket", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyBucket", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyFileSystem", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyFileSystem", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyFileSystem", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyFileSystem", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyFileSystem", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyFileSystem", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQosPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbS3ExportRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbClientRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbSharePolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbSharePolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbSharePolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbSharePolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbSharePolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbShareRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbShareRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbShareRule", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbShareRule", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbShareRule", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSmbShareRule", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyAdmin", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyAdmin", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyAdmin", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyAdmin", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyAdmin", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyAdmin", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyArray", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyArray", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyArray", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyArray", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyArray", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyArray", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSshCaPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbStorageClassTieringPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTlsPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicyMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWormPolicyMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAuditFileSystemPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAuditFileSystemPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAuditFileSystemPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAuditFileSystemPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAuditObjectStorePolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAuditObjectStorePolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAuditObjectStorePolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbAuditObjectStorePolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNetworkAccessRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNetworkAccessRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNfsExportRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbNfsExportRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicy", + "parameter": "Rules", + "wireName": "rules", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicyFileSystem", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicyFileSystem", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicyFileSystem", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicyFileSystem", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicyFileSystemReplicaLink", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicyFileSystemReplicaLink", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicyFileSystemReplicaLink", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPolicyFileSystemReplicaLink", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbQosPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbQosPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbQosPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbQosPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbS3ExportRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbS3ExportRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSmbClientRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSmbClientRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSmbShareRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSmbShareRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSshCaPolicyAdmin", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSshCaPolicyAdmin", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSshCaPolicyAdmin", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSshCaPolicyAdmin", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSshCaPolicyArray", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSshCaPolicyArray", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSshCaPolicyArray", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbSshCaPolicyArray", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditFileSystemPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditFileSystemPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditFileSystemPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditFileSystemPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditFileSystemPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditFileSystemPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditObjectStorePolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditObjectStorePolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditObjectStorePolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditObjectStorePolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditObjectStorePolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbAuditObjectStorePolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNetworkAccessRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNetworkAccessRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNfsExportPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNfsExportPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNfsExportRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbNfsExportRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicyFileSystem", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicyFileSystem", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicyFileSystem", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicyFileSystem", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicyFileSystemReplicaLink", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicyFileSystemReplicaLink", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicyFileSystemReplicaLink", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPolicyFileSystemReplicaLink", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbQosPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbQosPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbQosPolicyMember", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbQosPolicyMember", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbQosPolicyMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbQosPolicyMember", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbS3ExportPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbS3ExportPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbS3ExportRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbS3ExportRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSmbClientPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSmbClientPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSmbClientRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSmbClientRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSmbSharePolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSmbSharePolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSmbShareRule", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSmbShareRule", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicyAdmin", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicyAdmin", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicyAdmin", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicyAdmin", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicyArray", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicyArray", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicyArray", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbSshCaPolicyArray", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbStorageClassTieringPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbStorageClassTieringPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbTlsPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbTlsPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbWormPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbWormPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAuditFileSystemPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAuditFileSystemPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAuditObjectStorePolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbAuditObjectStorePolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNetworkAccessPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNetworkAccessPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNfsExportPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbNfsExportPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbPolicy", + "parameter": "Rules", + "wireName": "rules", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbQosPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbQosPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbS3ExportPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbS3ExportPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSmbClientPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSmbClientPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSmbSharePolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSmbSharePolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSshCaPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbSshCaPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbStorageClassTieringPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbStorageClassTieringPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbTlsPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbTlsPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbWormPolicy", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbWormPolicy", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPresetWorkload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbPresetWorkload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbPresetWorkload", + "parameter": "SkipVerifyDeployable", + "wireName": "skip_verify_deployable", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPresetWorkload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbPresetWorkload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Set-PfbPresetWorkload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Set-PfbPresetWorkload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Set-PfbPresetWorkload", + "parameter": "SkipVerifyDeployable", + "wireName": "skip_verify_deployable", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbPresetWorkload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbPresetWorkload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaGroup", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaGroup", + "parameter": "FileSystemName", + "wireName": "file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaGroup", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaGroup", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaGroup", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaUser", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaUser", + "parameter": "FileSystemName", + "wireName": "file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaUser", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaUser", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbQuotaUser", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbQuotaGroup", + "parameter": "Quota", + "wireName": "quota", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbQuotaGroup", + "parameter": "Quota", + "wireName": "quota", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbQuotaUser", + "parameter": "Quota", + "wireName": "quota", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealm", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealm", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealm", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealm", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealm", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealm", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealm", + "parameter": "Destroyed", + "wireName": "destroyed", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmDefaults", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmDefaults", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmDefaults", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmDefaults", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmSpace", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmSpace", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmSpace", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmSpace", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmStorageClass", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmStorageClass", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmStorageClass", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRealmStorageClass", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbRealm", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbRealm", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbRealm", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbRealm", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbRealmDefaults", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbRealmDefaults", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnection", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnection", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnection", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnection", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnection", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionKey", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionKey", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionKey", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionKey", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPath", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPath", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPath", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPath", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPerformanceReplication", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPerformanceReplication", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPerformanceReplication", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPerformanceReplication", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPerformanceReplication", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPerformanceReplication", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbArrayConnectionPerformanceReplication", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketReplicaLink", + "parameter": "LocalBucketName", + "wireName": "local_bucket_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketReplicaLink", + "parameter": "RemoteBucketName", + "wireName": "remote_bucket_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketReplicaLink", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketReplicaLink", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbBucketReplicaLink", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLink", + "parameter": "LocalFileSystemName", + "wireName": "local_file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLink", + "parameter": "RemoteFileSystemName", + "wireName": "remote_file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLink", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLink", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLink", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkPolicy", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkPolicy", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkPolicy", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkTransfer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkTransfer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkTransfer", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkTransfer", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkTransfer", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFileSystemReplicaLinkTransfer", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleet", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleet", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleet", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleet", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleet", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetKey", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetKey", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetKey", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetKey", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetMember", + "parameter": "FleetName", + "wireName": "fleet_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetMember", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetMember", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbFleetMember", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRemoteArray", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRemoteArray", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRemoteArray", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRemoteArray", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRemoteArray", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbRemoteArray", + "parameter": "CurrentFleetOnly", + "wireName": "current_fleet_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTarget", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTarget", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTarget", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTarget", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTarget", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTargetPerformanceReplication", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTargetPerformanceReplication", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTargetPerformanceReplication", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTargetPerformanceReplication", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTargetPerformanceReplication", + "parameter": "StartTime", + "wireName": "start_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTargetPerformanceReplication", + "parameter": "EndTime", + "wireName": "end_time", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbTargetPerformanceReplication", + "parameter": "Resolution", + "wireName": "resolution", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbArrayConnection", + "parameter": "ManagementAddress", + "wireName": "management_address", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbArrayConnection", + "parameter": "ReplicationAddress", + "wireName": "replication_addresses", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbArrayConnection", + "parameter": "ConnectionKey", + "wireName": "connection_key", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemReplicaLink", + "parameter": "RemoteFileSystemName", + "wireName": "remote_file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemReplicaLink", + "parameter": "RemoteDefaultExports", + "wireName": "remote_default_exports", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemReplicaLinkPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemReplicaLinkPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemReplicaLinkPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFileSystemReplicaLinkPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFleetMember", + "parameter": "FleetName", + "wireName": "fleet_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbFleetMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbArrayConnection", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbArrayConnection", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLink", + "parameter": "LocalFileSystemName", + "wireName": "local_file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLink", + "parameter": "RemoteArrayName", + "wireName": "remote_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLink", + "parameter": "RemoteFileSystemName", + "wireName": "remote_file_system_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLink", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLink", + "parameter": "CancelInProgressTransfers", + "wireName": "cancel_in_progress_transfers", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLinkPolicy", + "parameter": "PolicyName", + "wireName": "policy_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLinkPolicy", + "parameter": "PolicyId", + "wireName": "policy_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLinkPolicy", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFileSystemReplicaLinkPolicy", + "parameter": "MemberId", + "wireName": "member_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFleet", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFleet", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFleetMember", + "parameter": "FleetName", + "wireName": "fleet_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbFleetMember", + "parameter": "MemberName", + "wireName": "member_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbTarget", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbTarget", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbArrayConnection", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbArrayConnection", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbFleet", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbFleet", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbTarget", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbTarget", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbServer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbServer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbServer", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbServer", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbServer", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbServer", + "parameter": "TotalOnly", + "wireName": "total_only", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbServer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbServer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbServer", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbServer", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAudit", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAudit", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAudit", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAudit", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbAudit", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupport", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupport", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupport", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupport", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnostics", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnostics", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnostics", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnostics", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnostics", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnosticsDetails", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnosticsDetails", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnosticsDetails", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnosticsDetails", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportDiagnosticsDetails", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportVerificationKey", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportVerificationKey", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbSupportVerificationKey", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkload", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkload", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkload", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkload", + "parameter": "Destroyed", + "wireName": "destroyed", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkloadPlacementRecommendation", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkloadPlacementRecommendation", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkloadPlacementRecommendation", + "parameter": "Filter", + "wireName": "filter", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkloadPlacementRecommendation", + "parameter": "Sort", + "wireName": "sort", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkloadPlacementRecommendation", + "parameter": "Limit", + "wireName": "limit", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkloadTag", + "parameter": "ResourceName", + "wireName": "resource_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkloadTag", + "parameter": "ResourceId", + "wireName": "resource_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Get-PfbWorkloadTag", + "parameter": "Namespace", + "wireName": "namespaces", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbWorkload", + "parameter": "PresetName", + "wireName": "preset_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbWorkload", + "parameter": "PresetId", + "wireName": "preset_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbWorkload", + "parameter": "Parameters", + "wireName": "parameters", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbWorkloadPlacementRecommendation", + "parameter": "PlacementName", + "wireName": "placement_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbWorkloadPlacementRecommendation", + "parameter": "PresetName", + "wireName": "preset_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "New-PfbWorkloadPlacementRecommendation", + "parameter": "PresetId", + "wireName": "preset_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbWorkload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbWorkload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbWorkloadTag", + "parameter": "ResourceName", + "wireName": "resource_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbWorkloadTag", + "parameter": "ResourceId", + "wireName": "resource_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Remove-PfbWorkloadTag", + "parameter": "Namespace", + "wireName": "namespaces", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Set-PfbWorkloadTag", + "parameter": "ResourceName", + "wireName": "resource_names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Set-PfbWorkloadTag", + "parameter": "ResourceId", + "wireName": "resource_ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbWorkload", + "parameter": "Name", + "wireName": "names", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbWorkload", + "parameter": "Id", + "wireName": "ids", + "status": "no-spec-enum-found", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + }, + { + "cmdlet": "Update-PfbWorkload", + "parameter": "NewName", + "wireName": "name", + "status": "not-found-in-resource", + "matchedKey": null, + "specValues": null, + "stableSinceOldestVersion": null, + "recommendation": null + } + ], + "attributesOnly": [ + { + "cmdlet": "New-PfbApiClient", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbManagementAccessPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbOidcIdp", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbPublicKey", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbSaml2Idp", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbAlertWatcher", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbAlert", + "parameter": "Flagged" + }, + { + "cmdlet": "Update-PfbAlertWatcher", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbBucket", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbBucket", + "parameter": "Account" + }, + { + "cmdlet": "New-PfbBucketAccessPolicyRule", + "parameter": "MemberName" + }, + { + "cmdlet": "New-PfbBucketAccessPolicyRule", + "parameter": "PolicyName" + }, + { + "cmdlet": "New-PfbBucketAuditFilter", + "parameter": "MemberName" + }, + { + "cmdlet": "Update-PfbBucket", + "parameter": "Destroyed" + }, + { + "cmdlet": "New-PfbCertificate", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbCertificateGroup", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbCertificateSigningRequest", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbActiveDirectory", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbDirectoryServiceRole", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbLocalDirectoryService", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbLocalGroup", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbDirectoryService", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "HardLimit" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "Nfs" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "NfsV3" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "NfsV41" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "NfsRules" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "NfsExportPolicy" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "Smb" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "SmbSharePolicy" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "SmbClientPolicy" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "Http" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "MultiProtocolAccessControlStyle" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "SafeguardAcls" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "SnapshotDirectoryEnabled" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "FastRemoveDirectoryEnabled" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "EradicationMode" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "Writable" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "SourceSnapshot" + }, + { + "cmdlet": "New-PfbFileSystem", + "parameter": "QosPolicy" + }, + { + "cmdlet": "New-PfbFileSystemExport", + "parameter": "FileSystem" + }, + { + "cmdlet": "New-PfbFileSystemExport", + "parameter": "Server" + }, + { + "cmdlet": "New-PfbFileSystemExport", + "parameter": "SharePolicy" + }, + { + "cmdlet": "New-PfbNlmReclamation", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "HardLimitEnabled" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "NfsEnabled" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "NfsRules" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "NfsExportPolicy" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "SmbEnabled" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "SmbSharePolicy" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "SmbClientPolicy" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "HttpEnabled" + }, + { + "cmdlet": "Update-PfbFileSystem", + "parameter": "Destroyed" + }, + { + "cmdlet": "New-PfbLag", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbLegalHold", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbLifecycleRule", + "parameter": "BucketName" + }, + { + "cmdlet": "New-PfbLogTargetFileSystem", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbLogTargetObjectStore", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbSnmpManager", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbSyslogServer", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbDns", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbNetworkInterface", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbNetworkInterface", + "parameter": "AttachedServers" + }, + { + "cmdlet": "New-PfbSubnet", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbSubnet", + "parameter": "LinkAggregationGroupName" + }, + { + "cmdlet": "New-PfbNodeGroup", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbObjectStoreAccessPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbObjectStoreAccessPolicyRule", + "parameter": "PolicyName" + }, + { + "cmdlet": "New-PfbObjectStoreAccountExport", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbObjectStoreRemoteCredential", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbObjectStoreRole", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbObjectStoreTrustPolicyRule", + "parameter": "PolicyName" + }, + { + "cmdlet": "New-PfbObjectStoreVirtualHost", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbObjectStoreAccessPolicyRule", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbObjectStoreTrustPolicyRule", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbAuditFileSystemPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbAuditFileSystemPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbAuditObjectStorePolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbAuditObjectStorePolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbNfsExportPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbNfsExportPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbQosPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbS3ExportPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbS3ExportPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbSmbClientPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbSmbClientPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbSmbSharePolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbSmbSharePolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbSshCaPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbStorageClassTieringPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbTlsPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbWormPolicy", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbAuditFileSystemPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "Update-PfbAuditObjectStorePolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "Update-PfbNetworkAccessPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "Update-PfbNetworkAccessRule", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbNfsExportPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "Update-PfbNfsExportRule", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "Update-PfbS3ExportPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "Update-PfbS3ExportRule", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbSmbClientPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "Update-PfbSmbClientRule", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbSmbSharePolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "Update-PfbSmbShareRule", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbPresetWorkload", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbQuotaGroup", + "parameter": "FileSystemName" + }, + { + "cmdlet": "New-PfbQuotaGroup", + "parameter": "GroupName" + }, + { + "cmdlet": "New-PfbQuotaUser", + "parameter": "FileSystemName" + }, + { + "cmdlet": "New-PfbQuotaUser", + "parameter": "UserName" + }, + { + "cmdlet": "New-PfbQuotaUser", + "parameter": "UserId" + }, + { + "cmdlet": "New-PfbQuotaUser", + "parameter": "Quota" + }, + { + "cmdlet": "Update-PfbQuotaGroup", + "parameter": "FileSystemName" + }, + { + "cmdlet": "Update-PfbQuotaGroup", + "parameter": "GroupName" + }, + { + "cmdlet": "Update-PfbQuotaUser", + "parameter": "FileSystemName" + }, + { + "cmdlet": "Update-PfbQuotaUser", + "parameter": "UserName" + }, + { + "cmdlet": "New-PfbRealm", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbRealm", + "parameter": "Destroyed" + }, + { + "cmdlet": "New-PfbFleet", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbTarget", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbServer", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbServer", + "parameter": "DnsName" + }, + { + "cmdlet": "New-PfbServer", + "parameter": "LocalDirectoryService" + }, + { + "cmdlet": "New-PfbServer", + "parameter": "CreateDirectoryService" + }, + { + "cmdlet": "Update-PfbServer", + "parameter": "DnsName" + }, + { + "cmdlet": "Update-PfbServer", + "parameter": "LocalDirectoryService" + } + ], + "typedUnresolved": [ + { + "cmdlet": "Get-PfbAlert", + "parameter": "Flagged" + }, + { + "cmdlet": "Get-PfbApiVersion", + "parameter": "Endpoint" + }, + { + "cmdlet": "Get-PfbApiVersion", + "parameter": "IgnoreCertificateError" + }, + { + "cmdlet": "New-PfbBucketAccessPolicy", + "parameter": "MemberName" + }, + { + "cmdlet": "New-PfbBucketAccessPolicy", + "parameter": "PolicyName" + }, + { + "cmdlet": "New-PfbBucketCorsPolicy", + "parameter": "MemberName" + }, + { + "cmdlet": "New-PfbBucketCorsPolicy", + "parameter": "PolicyName" + }, + { + "cmdlet": "Remove-PfbBucket", + "parameter": "Eradicate" + }, + { + "cmdlet": "Remove-PfbBucketAccessPolicy", + "parameter": "MemberName" + }, + { + "cmdlet": "Remove-PfbBucketAccessPolicy", + "parameter": "PolicyName" + }, + { + "cmdlet": "Remove-PfbBucketAccessPolicyRule", + "parameter": "Name" + }, + { + "cmdlet": "Remove-PfbBucketCorsPolicyRule", + "parameter": "Name" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "Endpoint" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "ApiToken" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "Username" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "Password" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "Credential" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "ClientId" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "Issuer" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "KeyId" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "PrivateKeyFile" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "PrivateKeyPassword" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "ApiVersion" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "IgnoreCertificateError" + }, + { + "cmdlet": "Connect-PfbArray", + "parameter": "HttpTimeout" + }, + { + "cmdlet": "Get-PfbConnection", + "parameter": "Endpoint" + }, + { + "cmdlet": "Set-PfbCredential", + "parameter": "Credential" + }, + { + "cmdlet": "Test-PfbConnection", + "parameter": "Endpoint" + }, + { + "cmdlet": "New-PfbDataEvictionPolicy", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbDataEvictionPolicy", + "parameter": "KeepSize" + }, + { + "cmdlet": "New-PfbDataEvictionPolicy", + "parameter": "Disabled" + }, + { + "cmdlet": "Update-PfbDataEvictionPolicy", + "parameter": "Enabled" + }, + { + "cmdlet": "New-PfbLocalGroupMember", + "parameter": "Group" + }, + { + "cmdlet": "New-PfbLocalGroupMember", + "parameter": "Member" + }, + { + "cmdlet": "Remove-PfbLocalGroupMember", + "parameter": "Group" + }, + { + "cmdlet": "Remove-PfbLocalGroupMember", + "parameter": "Member" + }, + { + "cmdlet": "Remove-PfbFileSystem", + "parameter": "Eradicate" + }, + { + "cmdlet": "New-PfbFileSystemSnapshot", + "parameter": "SourceName" + }, + { + "cmdlet": "New-PfbFileSystemSnapshot", + "parameter": "Suffix" + }, + { + "cmdlet": "Remove-PfbFileSystemSnapshot", + "parameter": "Eradicate" + }, + { + "cmdlet": "Get-PfbHardwareTemperature", + "parameter": "Limit" + }, + { + "cmdlet": "Invoke-PfbNetworkPing", + "parameter": "Destination" + }, + { + "cmdlet": "Invoke-PfbNetworkTrace", + "parameter": "Destination" + }, + { + "cmdlet": "New-PfbObjectStoreAccessKey", + "parameter": "UserName" + }, + { + "cmdlet": "New-PfbObjectStoreAccessPolicyRole", + "parameter": "PolicyName" + }, + { + "cmdlet": "New-PfbObjectStoreAccessPolicyRole", + "parameter": "MemberName" + }, + { + "cmdlet": "New-PfbObjectStoreAccessPolicyUser", + "parameter": "PolicyName" + }, + { + "cmdlet": "New-PfbObjectStoreAccessPolicyUser", + "parameter": "MemberName" + }, + { + "cmdlet": "New-PfbObjectStoreAccount", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbObjectStoreRoleAccessPolicy", + "parameter": "RoleName" + }, + { + "cmdlet": "New-PfbObjectStoreRoleAccessPolicy", + "parameter": "MemberName" + }, + { + "cmdlet": "New-PfbObjectStoreUser", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbObjectStoreUserAccessPolicy", + "parameter": "MemberName" + }, + { + "cmdlet": "New-PfbObjectStoreUserAccessPolicy", + "parameter": "PolicyName" + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessPolicyRole", + "parameter": "PolicyName" + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessPolicyRole", + "parameter": "MemberName" + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessPolicyRule", + "parameter": "Name" + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessPolicyUser", + "parameter": "PolicyName" + }, + { + "cmdlet": "Remove-PfbObjectStoreAccessPolicyUser", + "parameter": "MemberName" + }, + { + "cmdlet": "Remove-PfbObjectStoreRoleAccessPolicy", + "parameter": "RoleName" + }, + { + "cmdlet": "Remove-PfbObjectStoreRoleAccessPolicy", + "parameter": "MemberName" + }, + { + "cmdlet": "Remove-PfbObjectStoreTrustPolicyRule", + "parameter": "Name" + }, + { + "cmdlet": "Remove-PfbObjectStoreUserAccessPolicy", + "parameter": "MemberName" + }, + { + "cmdlet": "Remove-PfbObjectStoreUserAccessPolicy", + "parameter": "PolicyName" + }, + { + "cmdlet": "Remove-PfbNetworkAccessRule", + "parameter": "Name" + }, + { + "cmdlet": "Remove-PfbNfsExportRule", + "parameter": "Name" + }, + { + "cmdlet": "Remove-PfbS3ExportRule", + "parameter": "Name" + }, + { + "cmdlet": "Remove-PfbSmbClientRule", + "parameter": "Name" + }, + { + "cmdlet": "Remove-PfbSmbShareRule", + "parameter": "Name" + }, + { + "cmdlet": "Update-PfbPresetWorkload", + "parameter": "NewName" + }, + { + "cmdlet": "Remove-PfbQuotaGroup", + "parameter": "FileSystemName" + }, + { + "cmdlet": "Remove-PfbQuotaGroup", + "parameter": "GroupName" + }, + { + "cmdlet": "Remove-PfbQuotaUser", + "parameter": "FileSystemName" + }, + { + "cmdlet": "Remove-PfbQuotaUser", + "parameter": "UserName" + }, + { + "cmdlet": "Remove-PfbRealm", + "parameter": "Eradicate" + }, + { + "cmdlet": "New-PfbFileSystemReplicaLink", + "parameter": "LocalFileSystemName" + }, + { + "cmdlet": "New-PfbFileSystemReplicaLink", + "parameter": "RemoteArrayName" + }, + { + "cmdlet": "Remove-PfbServer", + "parameter": "Eradicate" + }, + { + "cmdlet": "New-PfbWorkload", + "parameter": "Name" + }, + { + "cmdlet": "New-PfbWorkloadPlacementRecommendation", + "parameter": "Inputs" + }, + { + "cmdlet": "Remove-PfbWorkloadTag", + "parameter": "Key" + }, + { + "cmdlet": "Set-PfbWorkloadTag", + "parameter": "Tags" + }, + { + "cmdlet": "Update-PfbWorkload", + "parameter": "Destroyed" + } + ] +} diff --git a/Reports/PfbFieldCmdletMapping.md b/Reports/PfbFieldCmdletMapping.md new file mode 100644 index 0000000..7e3d8c2 --- /dev/null +++ b/Reports/PfbFieldCmdletMapping.md @@ -0,0 +1,238 @@ +# Field-to-Cmdlet Mapping Report + +Generated by `tools/Build-PfbFieldCmdletMap.ps1` (28 REST versions). + +Reporting only -- no `Public/` cmdlet is edited by this script. Every `matched` row below is a candidate for a follow-up decision, not an action already taken. + +## Summary + +- matched: 0 +- collision: 0 +- not-found-in-resource: 2 +- no-spec-enum-found: 1533 + +No `matched` candidates this run -- this can be a genuinely correct result (most typed parameters without a `ValidateSet` are generic non-enum fields like filter/sort/limit/names/ids, not spec-documented enums) rather than a sign the tool found nothing useful. See the `collision`/`not-found-in-resource` rows below for what *is* actionable. + +| Cmdlet | Parameter | Wire name | Status | Spec values | Recommendation | +|---|---|---|---|---|---| +| `Update-PfbDataEvictionPolicy` | `-NewName` | name | not-found-in-resource | | | +| `Update-PfbWorkload` | `-NewName` | name | not-found-in-resource | | | + +## Attributes-only parameters (no typed field to attach either mechanism to): 129 + +- `New-PfbApiClient -Name` +- `New-PfbManagementAccessPolicy -Name` +- `New-PfbOidcIdp -Name` +- `New-PfbPublicKey -Name` +- `New-PfbSaml2Idp -Name` +- `New-PfbAlertWatcher -Name` +- `Update-PfbAlert -Flagged` +- `Update-PfbAlertWatcher -Enabled` +- `New-PfbBucket -Name` +- `New-PfbBucket -Account` +- `New-PfbBucketAccessPolicyRule -MemberName` +- `New-PfbBucketAccessPolicyRule -PolicyName` +- `New-PfbBucketAuditFilter -MemberName` +- `Update-PfbBucket -Destroyed` +- `New-PfbCertificate -Name` +- `New-PfbCertificateGroup -Name` +- `New-PfbCertificateSigningRequest -Name` +- `New-PfbActiveDirectory -Name` +- `New-PfbDirectoryServiceRole -Name` +- `New-PfbLocalDirectoryService -Name` +- `New-PfbLocalGroup -Name` +- `Update-PfbDirectoryService -Name` +- `New-PfbFileSystem -Name` +- `New-PfbFileSystem -HardLimit` +- `New-PfbFileSystem -Nfs` +- `New-PfbFileSystem -NfsV3` +- `New-PfbFileSystem -NfsV41` +- `New-PfbFileSystem -NfsRules` +- `New-PfbFileSystem -NfsExportPolicy` +- `New-PfbFileSystem -Smb` +- `New-PfbFileSystem -SmbSharePolicy` +- `New-PfbFileSystem -SmbClientPolicy` +- `New-PfbFileSystem -Http` +- `New-PfbFileSystem -MultiProtocolAccessControlStyle` +- `New-PfbFileSystem -SafeguardAcls` +- `New-PfbFileSystem -SnapshotDirectoryEnabled` +- `New-PfbFileSystem -FastRemoveDirectoryEnabled` +- `New-PfbFileSystem -EradicationMode` +- `New-PfbFileSystem -Writable` +- `New-PfbFileSystem -SourceSnapshot` +- `New-PfbFileSystem -QosPolicy` +- `New-PfbFileSystemExport -FileSystem` +- `New-PfbFileSystemExport -Server` +- `New-PfbFileSystemExport -SharePolicy` +- `New-PfbNlmReclamation -Name` +- `Update-PfbFileSystem -HardLimitEnabled` +- `Update-PfbFileSystem -NfsEnabled` +- `Update-PfbFileSystem -NfsRules` +- `Update-PfbFileSystem -NfsExportPolicy` +- `Update-PfbFileSystem -SmbEnabled` +- `Update-PfbFileSystem -SmbSharePolicy` +- `Update-PfbFileSystem -SmbClientPolicy` +- `Update-PfbFileSystem -HttpEnabled` +- `Update-PfbFileSystem -Destroyed` +- `New-PfbLag -Name` +- `New-PfbLegalHold -Name` +- `New-PfbLifecycleRule -BucketName` +- `New-PfbLogTargetFileSystem -Name` +- `New-PfbLogTargetObjectStore -Name` +- `New-PfbSnmpManager -Name` +- `New-PfbSyslogServer -Name` +- `New-PfbDns -Name` +- `New-PfbNetworkInterface -Name` +- `New-PfbNetworkInterface -AttachedServers` +- `New-PfbSubnet -Name` +- `New-PfbSubnet -LinkAggregationGroupName` +- `New-PfbNodeGroup -Name` +- `New-PfbObjectStoreAccessPolicy -Name` +- `New-PfbObjectStoreAccessPolicyRule -PolicyName` +- `New-PfbObjectStoreAccountExport -Name` +- `New-PfbObjectStoreRemoteCredential -Name` +- `New-PfbObjectStoreRole -Name` +- `New-PfbObjectStoreTrustPolicyRule -PolicyName` +- `New-PfbObjectStoreVirtualHost -Name` +- `Update-PfbObjectStoreAccessPolicyRule -Name` +- `Update-PfbObjectStoreTrustPolicyRule -Name` +- `New-PfbAuditFileSystemPolicy -Name` +- `New-PfbAuditFileSystemPolicy -Enabled` +- `New-PfbAuditObjectStorePolicy -Name` +- `New-PfbAuditObjectStorePolicy -Enabled` +- `New-PfbNfsExportPolicy -Name` +- `New-PfbNfsExportPolicy -Enabled` +- `New-PfbPolicy -Name` +- `New-PfbPolicy -Enabled` +- `New-PfbQosPolicy -Name` +- `New-PfbS3ExportPolicy -Name` +- `New-PfbS3ExportPolicy -Enabled` +- `New-PfbSmbClientPolicy -Name` +- `New-PfbSmbClientPolicy -Enabled` +- `New-PfbSmbSharePolicy -Name` +- `New-PfbSmbSharePolicy -Enabled` +- `New-PfbSshCaPolicy -Name` +- `New-PfbStorageClassTieringPolicy -Name` +- `New-PfbTlsPolicy -Name` +- `New-PfbWormPolicy -Name` +- `Update-PfbAuditFileSystemPolicy -Enabled` +- `Update-PfbAuditObjectStorePolicy -Enabled` +- `Update-PfbNetworkAccessPolicy -Enabled` +- `Update-PfbNetworkAccessRule -Name` +- `Update-PfbNfsExportPolicy -Enabled` +- `Update-PfbNfsExportRule -Name` +- `Update-PfbPolicy -Enabled` +- `Update-PfbS3ExportPolicy -Enabled` +- `Update-PfbS3ExportRule -Name` +- `Update-PfbSmbClientPolicy -Enabled` +- `Update-PfbSmbClientRule -Name` +- `Update-PfbSmbSharePolicy -Enabled` +- `Update-PfbSmbShareRule -Name` +- `New-PfbPresetWorkload -Name` +- `New-PfbQuotaGroup -FileSystemName` +- `New-PfbQuotaGroup -GroupName` +- `New-PfbQuotaUser -FileSystemName` +- `New-PfbQuotaUser -UserName` +- `New-PfbQuotaUser -UserId` +- `New-PfbQuotaUser -Quota` +- `Update-PfbQuotaGroup -FileSystemName` +- `Update-PfbQuotaGroup -GroupName` +- `Update-PfbQuotaUser -FileSystemName` +- `Update-PfbQuotaUser -UserName` +- `New-PfbRealm -Name` +- `Update-PfbRealm -Destroyed` +- `New-PfbFleet -Name` +- `New-PfbTarget -Name` +- `New-PfbServer -Name` +- `New-PfbServer -DnsName` +- `New-PfbServer -LocalDirectoryService` +- `New-PfbServer -CreateDirectoryService` +- `Update-PfbServer -DnsName` +- `Update-PfbServer -LocalDirectoryService` + +## Typed but unresolved wire name (needs manual inspection): 83 + +- `Get-PfbAlert -Flagged` +- `Get-PfbApiVersion -Endpoint` +- `Get-PfbApiVersion -IgnoreCertificateError` +- `New-PfbBucketAccessPolicy -MemberName` +- `New-PfbBucketAccessPolicy -PolicyName` +- `New-PfbBucketCorsPolicy -MemberName` +- `New-PfbBucketCorsPolicy -PolicyName` +- `Remove-PfbBucket -Eradicate` +- `Remove-PfbBucketAccessPolicy -MemberName` +- `Remove-PfbBucketAccessPolicy -PolicyName` +- `Remove-PfbBucketAccessPolicyRule -Name` +- `Remove-PfbBucketCorsPolicyRule -Name` +- `Connect-PfbArray -Endpoint` +- `Connect-PfbArray -ApiToken` +- `Connect-PfbArray -Username` +- `Connect-PfbArray -Password` +- `Connect-PfbArray -Credential` +- `Connect-PfbArray -ClientId` +- `Connect-PfbArray -Issuer` +- `Connect-PfbArray -KeyId` +- `Connect-PfbArray -PrivateKeyFile` +- `Connect-PfbArray -PrivateKeyPassword` +- `Connect-PfbArray -ApiVersion` +- `Connect-PfbArray -IgnoreCertificateError` +- `Connect-PfbArray -HttpTimeout` +- `Get-PfbConnection -Endpoint` +- `Set-PfbCredential -Credential` +- `Test-PfbConnection -Endpoint` +- `New-PfbDataEvictionPolicy -Name` +- `New-PfbDataEvictionPolicy -KeepSize` +- `New-PfbDataEvictionPolicy -Disabled` +- `Update-PfbDataEvictionPolicy -Enabled` +- `New-PfbLocalGroupMember -Group` +- `New-PfbLocalGroupMember -Member` +- `Remove-PfbLocalGroupMember -Group` +- `Remove-PfbLocalGroupMember -Member` +- `Remove-PfbFileSystem -Eradicate` +- `New-PfbFileSystemSnapshot -SourceName` +- `New-PfbFileSystemSnapshot -Suffix` +- `Remove-PfbFileSystemSnapshot -Eradicate` +- `Get-PfbHardwareTemperature -Limit` +- `Invoke-PfbNetworkPing -Destination` +- `Invoke-PfbNetworkTrace -Destination` +- `New-PfbObjectStoreAccessKey -UserName` +- `New-PfbObjectStoreAccessPolicyRole -PolicyName` +- `New-PfbObjectStoreAccessPolicyRole -MemberName` +- `New-PfbObjectStoreAccessPolicyUser -PolicyName` +- `New-PfbObjectStoreAccessPolicyUser -MemberName` +- `New-PfbObjectStoreAccount -Name` +- `New-PfbObjectStoreRoleAccessPolicy -RoleName` +- `New-PfbObjectStoreRoleAccessPolicy -MemberName` +- `New-PfbObjectStoreUser -Name` +- `New-PfbObjectStoreUserAccessPolicy -MemberName` +- `New-PfbObjectStoreUserAccessPolicy -PolicyName` +- `Remove-PfbObjectStoreAccessPolicyRole -PolicyName` +- `Remove-PfbObjectStoreAccessPolicyRole -MemberName` +- `Remove-PfbObjectStoreAccessPolicyRule -Name` +- `Remove-PfbObjectStoreAccessPolicyUser -PolicyName` +- `Remove-PfbObjectStoreAccessPolicyUser -MemberName` +- `Remove-PfbObjectStoreRoleAccessPolicy -RoleName` +- `Remove-PfbObjectStoreRoleAccessPolicy -MemberName` +- `Remove-PfbObjectStoreTrustPolicyRule -Name` +- `Remove-PfbObjectStoreUserAccessPolicy -MemberName` +- `Remove-PfbObjectStoreUserAccessPolicy -PolicyName` +- `Remove-PfbNetworkAccessRule -Name` +- `Remove-PfbNfsExportRule -Name` +- `Remove-PfbS3ExportRule -Name` +- `Remove-PfbSmbClientRule -Name` +- `Remove-PfbSmbShareRule -Name` +- `Update-PfbPresetWorkload -NewName` +- `Remove-PfbQuotaGroup -FileSystemName` +- `Remove-PfbQuotaGroup -GroupName` +- `Remove-PfbQuotaUser -FileSystemName` +- `Remove-PfbQuotaUser -UserName` +- `Remove-PfbRealm -Eradicate` +- `New-PfbFileSystemReplicaLink -LocalFileSystemName` +- `New-PfbFileSystemReplicaLink -RemoteArrayName` +- `Remove-PfbServer -Eradicate` +- `New-PfbWorkload -Name` +- `New-PfbWorkloadPlacementRecommendation -Inputs` +- `Remove-PfbWorkloadTag -Key` +- `Set-PfbWorkloadTag -Tags` +- `Update-PfbWorkload -Destroyed` + diff --git a/Reports/PfbValueEnumMap.json b/Reports/PfbValueEnumMap.json new file mode 100644 index 0000000..9565c73 --- /dev/null +++ b/Reports/PfbValueEnumMap.json @@ -0,0 +1,3885 @@ +{ + "schemaVersion": 1, + "generatedFrom": [ + "2.0", + "2.1", + "2.2", + "2.3", + "2.4", + "2.5", + "2.6", + "2.7", + "2.8", + "2.9", + "2.10", + "2.11", + "2.12", + "2.13", + "2.14", + "2.15", + "2.16", + "2.17", + "2.18", + "2.19", + "2.20", + "2.21", + "2.22", + "2.23", + "2.24", + "2.25", + "2.26", + "2.27" + ], + "entryCount": 256, + "unparsedCount": 171, + "entries": { + "Alert.severity": { + "values": [ + "info", + "warning", + "critical" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "severity" + }, + "Alert.state": { + "values": [ + "open", + "closing", + "closed", + "waiting to downgrade" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "state" + }, + "AlertWatcher.minimum_notification_severity": { + "values": [ + "info", + "warning", + "critical" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "minimum_notification_severity" + }, + "Array.os": { + "values": [ + "Purity//FA", + "Purity//FB" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "os" + }, + "ArrayConnection.status": { + "values": [ + "connected", + "partially_connected", + "connecting", + "incompatible" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "status" + }, + "ArrayConnectionPath.status": { + "values": [ + "connected", + "connecting" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "status" + }, + "Audit.user_interface": { + "values": [ + "CLI", + "GUI", + "REST" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "user_interface" + }, + "Blade.status": { + "values": [ + "critical", + "evacuated", + "evacuating", + "healthy", + "identifying", + "unhealthy", + "unknown", + "unused" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "status" + }, + "Bucket.versioning": { + "values": [ + "none", + "enabled", + "suspended" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "versioning" + }, + "BucketReplicaLink.direction": { + "values": [ + "inbound", + "outbound" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "direction" + }, + "Certificate.certificate_type": { + "values": [ + "appliance", + "external" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "certificate_type" + }, + "Certificate.status": { + "values": [ + "self-signed", + "imported" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "status" + }, + "FileSystem.promotion_status": { + "values": [ + "promoted", + "demoted", + "promoting" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "promotion_status" + }, + "FileSystem.requested_promotion_state": { + "values": [ + "promoted", + "demoted" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "requested_promotion_state" + }, + "FileSystemReplicaLink.direction": { + "values": [ + "inbound", + "outbound" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "direction" + }, + "FileSystemSnapshotTransfer.direction": { + "values": [ + "inbound", + "outbound" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "direction" + }, + "FileSystemSnapshotTransfer.status": { + "values": [ + "completed", + "in-progress", + "queued" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "status" + }, + "Hardware.status": { + "values": [ + "critical", + "healthy", + "identifying", + "unhealthy", + "unknown", + "unused" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "status" + }, + "Hardware.type": { + "values": [ + "bay", + "ch", + "eth", + "fan", + "fb", + "fm", + "pwr", + "xfm" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "type" + }, + "HardwareConnector.connector_type": { + "values": [ + "QSFP", + "QSFP+", + "QSFP28", + "QSFP56", + "QSFP-DD", + "RJ-45", + "-" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "connector_type" + }, + "LinkAggregationGroup.status": { + "values": [ + "critical", + "healthy", + "identifying", + "unclaimed", + "unhealthy", + "unrecognized", + "unused" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "status" + }, + "SnmpAgent.version": { + "values": [ + "v2c", + "v3" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "version" + }, + "SnmpManager.notification": { + "values": [ + "inform", + "trap" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "notification" + }, + "SnmpManager.version": { + "values": [ + "v2c", + "v3" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "version" + }, + "Support.remote_assist_status": { + "values": [ + "connected", + "partially_connected", + "reconnecting", + "disconnected" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "remote_assist_status" + }, + "Target.status": { + "values": [ + "connected", + "connecting" + ], + "minVersion": "2.0", + "kind": "schema", + "name": "status" + }, + "GET array-connections/performance/replication#type": { + "values": [ + "all", + "file-system", + "object-store" + ], + "minVersion": "2.0", + "kind": "inline-parameter", + "name": "type" + }, + "GET arrays/performance#protocol": { + "values": [ + "all", + "HTTP", + "SMB", + "NFS", + "S3" + ], + "minVersion": "2.0", + "kind": "inline-parameter", + "name": "protocol" + }, + "GET arrays/performance/replication#type": { + "values": [ + "all", + "file-system", + "object-store" + ], + "minVersion": "2.0", + "kind": "inline-parameter", + "name": "type" + }, + "GET arrays/space#type": { + "values": [ + "array", + "file-system", + "object-store" + ], + "minVersion": "2.0", + "kind": "inline-parameter", + "name": "type" + }, + "GET file-systems/performance#protocol": { + "values": [ + "all", + "HTTP", + "SMB", + "NFS", + "S3" + ], + "minVersion": "2.0", + "kind": "inline-parameter", + "name": "protocol" + }, + "GET support/test#test_type": { + "values": [ + "all", + "phonehome", + "remote-assist" + ], + "minVersion": "2.0", + "kind": "inline-parameter", + "name": "test_type" + }, + "Array.smb_mode": { + "values": [ + "ad-auto", + "ad-rfc2307", + "guest", + "native" + ], + "minVersion": "2.2", + "kind": "schema", + "name": "smb_mode" + }, + "ObjectStoreAccessPolicyRule.effect": { + "values": [ + "allow" + ], + "minVersion": "2.2", + "kind": "schema", + "name": "effect" + }, + "GET policies/members#member_types": { + "values": [ + "file-systems", + "file-system-snapshots", + "file-system-replica-links", + "object-store-users" + ], + "minVersion": "2.2", + "kind": "inline-parameter", + "name": "member_types" + }, + "GET policies-all/members#member_types": { + "values": [ + "file-systems", + "file-system-snapshots", + "file-system-replica-links", + "object-store-users" + ], + "minVersion": "2.2", + "kind": "inline-parameter", + "name": "member_types" + }, + "NfsExportPolicyRule.access": { + "values": [ + "root-squash", + "all-squash", + "no-squash" + ], + "minVersion": "2.3", + "kind": "schema", + "name": "access" + }, + "NfsExportPolicyRule.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.3", + "kind": "schema", + "name": "permission" + }, + "Session.event": { + "values": [ + "failed authentication", + "user session", + "login", + "logout", + "API token obtained", + "request without session" + ], + "minVersion": "2.3", + "kind": "schema", + "name": "event" + }, + "Session.method": { + "values": [ + "API token", + "password", + "ssh certificate", + "public key" + ], + "minVersion": "2.3", + "kind": "schema", + "name": "method" + }, + "Session.user_interface": { + "values": [ + "CLI", + "GUI", + "REST" + ], + "minVersion": "2.3", + "kind": "schema", + "name": "user_interface" + }, + "Drive.status": { + "values": [ + "evacuated", + "evacuating", + "healthy", + "unhealthy", + "unused", + "updating" + ], + "minVersion": "2.4", + "kind": "schema", + "name": "status" + }, + "Policy.retention_lock": { + "values": [ + "locked", + "unlocked" + ], + "minVersion": "2.5", + "kind": "schema", + "name": "retention_lock" + }, + "Array.product_type": { + "values": [ + "FlashBlade", + "FlashBlade//S", + "FlashBlade//S200", + "FlashBladeS500" + ], + "minVersion": "2.6", + "kind": "schema", + "name": "product_type" + }, + "GET network-interfaces/trace#method": { + "values": [ + "icmp", + "tcp", + "udp" + ], + "minVersion": "2.6", + "kind": "inline-parameter", + "name": "method" + }, + "VerificationKey.name": { + "values": [ + "access" + ], + "minVersion": "2.7", + "kind": "schema", + "name": "name" + }, + "Bucket.retention_lock": { + "values": [ + "unlocked", + "ratcheted" + ], + "minVersion": "2.8", + "kind": "schema", + "name": "retention_lock" + }, + "Drive.type": { + "values": [ + "DFM", + "DFMe" + ], + "minVersion": "2.9", + "kind": "schema", + "name": "type" + }, + "FileLock.access_type": { + "values": [ + "shared", + "exclusive", + "no-access" + ], + "minVersion": "2.10", + "kind": "schema", + "name": "access_type" + }, + "FileSession.authentication": { + "values": [ + "KRB", + "NTLMv2" + ], + "minVersion": "2.10", + "kind": "schema", + "name": "authentication" + }, + "FileSession.protocol": { + "values": [ + "nfs", + "smb" + ], + "minVersion": "2.10", + "kind": "schema", + "name": "protocol" + }, + "SmbClientPolicyRule.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.10", + "kind": "schema", + "name": "permission" + }, + "SmbSharePolicyRule.change": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.10", + "kind": "schema", + "name": "change" + }, + "SmbSharePolicyRule.full_control": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.10", + "kind": "schema", + "name": "full_control" + }, + "SmbSharePolicyRule.read": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.10", + "kind": "schema", + "name": "read" + }, + "GET file-systems/sessions#protocols": { + "values": [ + "nfs", + "smb" + ], + "minVersion": "2.10", + "kind": "inline-parameter", + "name": "protocols" + }, + "DELETE file-systems/sessions#protocols": { + "values": [ + "nfs", + "smb" + ], + "minVersion": "2.10", + "kind": "inline-parameter", + "name": "protocols" + }, + "SmbClientPolicyRule.encryption": { + "values": [ + "required", + "disabled", + "optional" + ], + "minVersion": "2.11", + "kind": "schema", + "name": "encryption" + }, + "Bucket.public_status": { + "values": [ + "bucket-and-objects-not-public", + "only-authorized-users-of-this-account", + "public" + ], + "minVersion": "2.12", + "kind": "schema", + "name": "public_status" + }, + "FileSystem.group_ownership": { + "values": [ + "creator", + "parent-directory" + ], + "minVersion": "2.13", + "kind": "schema", + "name": "group_ownership" + }, + "NetworkAccessPolicyRule.effect": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.13", + "kind": "schema", + "name": "effect" + }, + "NetworkAccessPolicyRule.interfaces": { + "values": [ + "management-ssh", + "management-rest-api", + "management-web-ui", + "snmp", + "local-network-superuser-password-access" + ], + "minVersion": "2.13", + "kind": "schema", + "name": "interfaces" + }, + "AuditFileSystemsPolicies.policy_type": { + "values": [ + "nfs", + "object-access", + "smb-client", + "smb-share", + "snapshot" + ], + "minVersion": "2.14", + "kind": "schema", + "name": "policy_type" + }, + "PublicKey.algorithm": { + "values": [ + "rsa", + "rsassa-pss", + "dsa", + "ec", + "ed25519" + ], + "minVersion": "2.14", + "kind": "schema", + "name": "algorithm" + }, + "SyslogServer.services": { + "values": [ + "data-audit", + "management" + ], + "minVersion": "2.14", + "kind": "schema", + "name": "services" + }, + "SMTP.encryption_mode": { + "values": [ + "starttls" + ], + "minVersion": "2.15", + "kind": "schema", + "name": "encryption_mode" + }, + "WormDataPolicy.policy_type": { + "values": [ + "snapshot", + "worm-data" + ], + "minVersion": "2.15", + "kind": "schema", + "name": "policy_type" + }, + "WormDataPolicy.retention_lock": { + "values": [ + "unlocked", + "locked" + ], + "minVersion": "2.15", + "kind": "schema", + "name": "retention_lock" + }, + "FileSystemExport.status": { + "values": [ + "policy_disabled", + "protocol_disabled" + ], + "minVersion": "2.16", + "kind": "schema", + "name": "status" + }, + "SoftwareChecks.status": { + "values": [ + "queued", + "running", + "passed", + "failed" + ], + "minVersion": "2.16", + "kind": "schema", + "name": "status" + }, + "SupportDiagnosticsDetails.severity": { + "values": [ + "info", + "warning", + "critical" + ], + "minVersion": "2.16", + "kind": "schema", + "name": "severity" + }, + "DELETE servers#cascade_delete": { + "values": [ + "directory-services" + ], + "minVersion": "2.16", + "kind": "inline-parameter", + "name": "cascade_delete" + }, + "SyslogServerPatch.services": { + "values": [ + "data-audit", + "management" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "services" + }, + "TrustPolicyRulePost.effect": { + "values": [ + "allow" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "NfsExportPolicyRuleInPolicy.access": { + "values": [ + "root-squash", + "all-squash", + "no-squash" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "access" + }, + "NfsExportPolicyRuleInPolicy.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "permission" + }, + "NfsExportPolicyRuleBase.access": { + "values": [ + "root-squash", + "all-squash", + "no-squash" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "access" + }, + "NfsExportPolicyRuleBase.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "permission" + }, + "TrustPolicyRuleWithContext.effect": { + "values": [ + "allow" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "NetworkAccessPolicyRulePostBase.interfaces": { + "values": [ + "management-ssh", + "management-rest-api", + "management-web-ui", + "snmp", + "local-network-superuser-password-access" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "interfaces" + }, + "NetworkAccessPolicyRulePostBase.effect": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "NetworkAccessPolicyRuleBase.interfaces": { + "values": [ + "management-ssh", + "management-rest-api", + "management-web-ui", + "snmp", + "local-network-superuser-password-access" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "interfaces" + }, + "NetworkAccessPolicyRuleBase.effect": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "_replicaLinkBuiltIn.direction": { + "values": [ + "inbound", + "outbound" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "direction" + }, + "_referenceWritable.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "resource_type" + }, + "_softwareChecksChecks.status": { + "values": [ + "running", + "failed", + "passed" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "status" + }, + "BucketPost.bucket_type": { + "values": [ + "classic", + "multi-site-writable" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "bucket_type" + }, + "BucketPost.retention_lock": { + "values": [ + "unlocked", + "ratcheted" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "retention_lock" + }, + "FleetMember.status": { + "values": [ + "joining", + "joined", + "removing" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "status" + }, + "_support_remote_assist_paths.status": { + "values": [ + "reconnecting", + "connected", + "disconnected", + "unknown" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "status" + }, + "PolicyRuleObjectAccessPost.effect": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "SnmpManagerPost.notification": { + "values": [ + "inform", + "trap" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "notification" + }, + "SnmpManagerPost.version": { + "values": [ + "v2c", + "v3" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "version" + }, + "SmbSharePolicyRulePost.full_control": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "full_control" + }, + "SmbSharePolicyRulePost.read": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "read" + }, + "SmbSharePolicyRulePost.change": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "change" + }, + "SyslogServerContext.services": { + "values": [ + "data-audit", + "management" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "services" + }, + "PolicyRuleObjectAccessBulkManage.effect": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "FileSystemPatch.promotion_status": { + "values": [ + "promoted", + "demoted" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "promotion_status" + }, + "FileSystemPatch.requested_promotion_state": { + "values": [ + "promoted", + "demoted" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "requested_promotion_state" + }, + "FileSystemPatch.group_ownership": { + "values": [ + "creator", + "parent-directory" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "group_ownership" + }, + "SmbClientPolicyRuleBase.encryption": { + "values": [ + "required", + "disabled", + "optional" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "encryption" + }, + "SmbClientPolicyRuleBase.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "permission" + }, + "ActiveDirectoryPatch.encryption_types": { + "values": [ + "aes256-cts-hmac-sha1-96", + "aes128-cts-hmac-sha1-96", + "arcfour-hmac" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "encryption_types" + }, + "NetworkAccessPolicyRuleInPolicy.interfaces": { + "values": [ + "management-ssh", + "management-rest-api", + "management-web-ui", + "snmp", + "local-network-superuser-password-access" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "interfaces" + }, + "NetworkAccessPolicyRuleInPolicy.effect": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "PolicyPatch.retention_lock": { + "values": [ + "locked", + "unlocked" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "retention_lock" + }, + "_reference.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "resource_type" + }, + "SmbClientPolicyRulePostBase.encryption": { + "values": [ + "required", + "disabled", + "optional" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "encryption" + }, + "SmbClientPolicyRulePostBase.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "permission" + }, + "_snmp_v3.auth_protocol": { + "values": [ + "MD5", + "SHA" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "auth_protocol" + }, + "_snmp_v3.privacy_protocol": { + "values": [ + "AES", + "DES" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "privacy_protocol" + }, + "_supportDiagnosticsSeverityCount.severity": { + "values": [ + "info", + "warning", + "critical" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "severity" + }, + "NetworkAccessPolicyRulePost.interfaces": { + "values": [ + "management-ssh", + "management-rest-api", + "management-web-ui", + "snmp", + "local-network-superuser-password-access" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "interfaces" + }, + "NetworkAccessPolicyRulePost.effect": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "SmtpServer.encryption_mode": { + "values": [ + "starttls" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "encryption_mode" + }, + "SoftwareCheck.status": { + "values": [ + "queued", + "running", + "passed", + "failed" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "status" + }, + "_bucketEradicationConfig.eradication_mode": { + "values": [ + "permission-based", + "retention-based" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "eradication_mode" + }, + "_bucketEradicationConfig.manual_eradication": { + "values": [ + "disabled", + "enabled" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "manual_eradication" + }, + "ActiveDirectoryPost.encryption_types": { + "values": [ + "aes256-cts-hmac-sha1-96", + "aes128-cts-hmac-sha1-96", + "arcfour-hmac" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "encryption_types" + }, + "FileSystemPost.requested_promotion_state": { + "values": [ + "promoted", + "demoted" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "requested_promotion_state" + }, + "FileSystemPost.group_ownership": { + "values": [ + "creator", + "parent-directory" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "group_ownership" + }, + "NetworkInterfacesConnectorsSettingRoce.network_congestion_mode": { + "values": [ + "lossy", + "lossless" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "network_congestion_mode" + }, + "NetworkInterfacesConnectorsSettingRoce.trust_mode": { + "values": [ + "pcp", + "dscp" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "trust_mode" + }, + "_multiProtocolPost.access_control_style": { + "values": [ + "nfs", + "smb", + "shared", + "independent", + "mode-bits" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "access_control_style" + }, + "ArrayConnectionPost.type": { + "values": [ + "async-replication", + "fleet-management" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "type" + }, + "ArrayConnectionPost.status": { + "values": [ + "connected", + "partially_connected", + "connecting", + "incompatible" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "status" + }, + "PolicyRuleObjectAccess.effect": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "_multiProtocol.access_control_style": { + "values": [ + "nfs", + "smb", + "shared", + "independent", + "mode-bits" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "access_control_style" + }, + "_objectLockConfigBase.default_retention_mode": { + "values": [ + "compliance", + "governance" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "default_retention_mode" + }, + "_snmp_v3_post.auth_protocol": { + "values": [ + "MD5", + "SHA" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "auth_protocol" + }, + "_snmp_v3_post.privacy_protocol": { + "values": [ + "AES", + "DES" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "privacy_protocol" + }, + "_objectLockConfigResponse.default_retention_mode": { + "values": [ + "compliance", + "governance" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "default_retention_mode" + }, + "_objectLockConfigResponse.default_retention": { + "values": [ + "86400000", + "3153600000000" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "default_retention" + }, + "ArrayConnection.type": { + "values": [ + "async-replication", + "fleet-management" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "type" + }, + "BucketPatch.versioning": { + "values": [ + "none", + "enabled", + "suspended" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "versioning" + }, + "BucketPatch.retention_lock": { + "values": [ + "unlocked", + "ratcheted" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "retention_lock" + }, + "AlertWatcherPost.minimum_notification_severity": { + "values": [ + "info", + "warning", + "critical" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "minimum_notification_severity" + }, + "CertificatePost.certificate_type": { + "values": [ + "appliance", + "external" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "certificate_type" + }, + "CertificatePost.status": { + "values": [ + "self-signed", + "imported" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "status" + }, + "SmbClientPolicyRulePostInPolicy.encryption": { + "values": [ + "required", + "disabled", + "optional" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "encryption" + }, + "SmbClientPolicyRulePostInPolicy.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "permission" + }, + "ArrayConnectionPath.type": { + "values": [ + "async-replication", + "fleet-management" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "type" + }, + "TrustPolicyRule.effect": { + "values": [ + "allow" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "effect" + }, + "_wormDataPolicyRetentionConfig.retention_lock": { + "values": [ + "unlocked", + "locked" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "retention_lock" + }, + "SmbSharePolicyRuleWithContext.full_control": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "full_control" + }, + "SmbSharePolicyRuleWithContext.read": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "read" + }, + "SmbSharePolicyRuleWithContext.change": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "change" + }, + "_arrayEradicationConfig.eradication_delay": { + "values": [ + "86400000", + "86400000", + "86400000", + "2592000000" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "eradication_delay" + }, + "_locationReference.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "resource_type" + }, + "_fileSystemEradicationConfig.eradication_mode": { + "values": [ + "permission-based", + "retention-based" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "eradication_mode" + }, + "_fileSystemEradicationConfig.manual_eradication": { + "values": [ + "disabled", + "enabled" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "manual_eradication" + }, + "SyslogServerPost.services": { + "values": [ + "data-audit", + "management" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "services" + }, + "_objectLockConfigRequestBody.default_retention_mode": { + "values": [ + "compliance", + "governance" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "default_retention_mode" + }, + "_objectLockConfigRequestBody.default_retention": { + "values": [ + "86400000", + "3153600000000" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "default_retention" + }, + "SmbClientPolicyRulePost.encryption": { + "values": [ + "required", + "disabled", + "optional" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "encryption" + }, + "SmbClientPolicyRulePost.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "permission" + }, + "RemoteArray.os": { + "values": [ + "Purity", + "Purity//FA", + "Purity//FB" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "os" + }, + "TargetWithContext.status": { + "values": [ + "connected", + "connecting" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "status" + }, + "LegalHoldHeldEntity.status": { + "values": [ + "applied", + "applying", + "releasing" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "status" + }, + "SmbClientPolicyRuleInPolicy.encryption": { + "values": [ + "required", + "disabled", + "optional" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "encryption" + }, + "SmbClientPolicyRuleInPolicy.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.17", + "kind": "schema", + "name": "permission" + }, + "Protocols": { + "values": [ + "nfs", + "smb" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "protocols" + }, + "Protocol": { + "values": [ + "all", + "HTTP", + "SMB", + "NFS", + "S3" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "protocol" + }, + "Type": { + "values": [ + "array", + "file-system", + "object-store" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "type" + }, + "Member_types": { + "values": [ + "file-systems", + "file-system-snapshots", + "file-system-replica-links", + "object-store-users", + "object-store-accounts" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "member_types" + }, + "Protocols_required": { + "values": [ + "nfs", + "smb" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "protocols" + }, + "StorageClassNames": { + "values": [ + "S500X-S", + "flashblade-s500x-s", + "S500X-A", + "flashblade-s500x-a" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "storage_class_names" + }, + "Cascade_delete": { + "values": [ + "directory-services" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "cascade_delete" + }, + "Test_type": { + "values": [ + "all", + "phonehome", + "remote-assist" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "test_type" + }, + "Type_for_performance": { + "values": [ + "all", + "file-system", + "object-store" + ], + "minVersion": "2.17", + "kind": "parameter", + "name": "type" + }, + "AuditFileSystemsPolicy.control_type": { + "values": [ + "policy", + "sacl" + ], + "minVersion": "2.18", + "kind": "schema", + "name": "control_type" + }, + "AuditFileSystemsPoliciesPost.control_type": { + "values": [ + "policy", + "sacl" + ], + "minVersion": "2.18", + "kind": "schema", + "name": "control_type" + }, + "TieringPolicyArchivalRule.type": { + "values": [ + "LATEST_ACCESS", + "LATEST_MODIFICATION" + ], + "minVersion": "2.18", + "kind": "schema", + "name": "type" + }, + "TieringPolicyRetrievalRule.type": { + "values": [ + "ON_READ", + "ONLY_ON_WRITE" + ], + "minVersion": "2.18", + "kind": "schema", + "name": "type" + }, + "AuditFileSystemsPolicyNoContext.control_type": { + "values": [ + "policy", + "sacl" + ], + "minVersion": "2.18", + "kind": "schema", + "name": "control_type" + }, + "HardwareTemperatures.status": { + "values": [ + "HEALTHY", + "NON_CRITICAL", + "CRITICAL", + "UNRECOVERABLE", + "UNKNOWN" + ], + "minVersion": "2.18", + "kind": "schema", + "name": "status" + }, + "Protocol_clients": { + "values": [ + "NFS", + "S3" + ], + "minVersion": "2.18", + "kind": "parameter", + "name": "protocol" + }, + "CertificatePatch.certificate_type": { + "values": [ + "appliance", + "external" + ], + "minVersion": "2.20", + "kind": "schema", + "name": "certificate_type" + }, + "CertificatePatch.status": { + "values": [ + "self-signed", + "imported" + ], + "minVersion": "2.20", + "kind": "schema", + "name": "status" + }, + "_certificateBase.certificate_type": { + "values": [ + "appliance", + "external" + ], + "minVersion": "2.20", + "kind": "schema", + "name": "certificate_type" + }, + "_certificateBase.status": { + "values": [ + "self-signed", + "imported" + ], + "minVersion": "2.20", + "kind": "schema", + "name": "status" + }, + "_networkInterfaceNeighborNeighborChassisId.type": { + "values": [ + "ifname", + "ifalias", + "local", + "mac", + "ip", + "unhandled" + ], + "minVersion": "2.20", + "kind": "schema", + "name": "type" + }, + "_networkInterfaceNeighborNeighborPortId.type": { + "values": [ + "ifname", + "ifalias", + "local", + "mac", + "ip", + "unhandled" + ], + "minVersion": "2.20", + "kind": "schema", + "name": "type" + }, + "NfsExportPolicyRulePatch.access": { + "values": [ + "root-squash", + "all-squash", + "no-squash" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "access" + }, + "NfsExportPolicyRulePatch.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "permission" + }, + "PolicyPost.retention_lock": { + "values": [ + "locked", + "unlocked" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "retention_lock" + }, + "SnapshotPolicyPatch.policy_type": { + "values": [ + "snapshot", + "worm-data" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "policy_type" + }, + "SnapshotPolicyPatch.retention_lock": { + "values": [ + "locked", + "unlocked" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "retention_lock" + }, + "NfsExportPolicyPatchRuleInPolicy.access": { + "values": [ + "root-squash", + "all-squash", + "no-squash" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "access" + }, + "NfsExportPolicyPatchRuleInPolicy.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "permission" + }, + "NfsExportPolicyRuleBasePatchRequest.access": { + "values": [ + "root-squash", + "all-squash", + "no-squash" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "access" + }, + "NfsExportPolicyRuleBasePatchRequest.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "permission" + }, + "SnapshotWormDataPolicyBase.policy_type": { + "values": [ + "snapshot", + "worm-data" + ], + "minVersion": "2.22", + "kind": "schema", + "name": "policy_type" + }, + "Management_access_policies_member_types": { + "values": [ + "admins", + "arrays" + ], + "minVersion": "2.22", + "kind": "parameter", + "name": "member_types" + }, + "FileSystemExportPatch.status": { + "values": [ + "policy_disabled", + "protocol_disabled" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "status" + }, + "PresetWorkload.platform_features": { + "values": [ + "fa_block", + "fa_file", + "fb_file" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "platform_features" + }, + "PresetWorkload.workload_type": { + "values": [ + "Clarity", + "Epic", + "Exchange", + "File", + "MsSQL", + "MySQL", + "Oracle", + "PostgreSQL", + "SAP-Hana", + "SAP", + "VDI", + "VSI", + "Wfs", + "Zerto", + "Custom" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "workload_type" + }, + "PresetWorkloadPost.platform_features": { + "values": [ + "fa_block", + "fa_file", + "fb_file" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "platform_features" + }, + "PresetWorkloadPost.workload_type": { + "values": [ + "Clarity", + "Epic", + "Exchange", + "File", + "MsSQL", + "MySQL", + "Oracle", + "PostgreSQL", + "SAP-Hana", + "SAP", + "VDI", + "VSI", + "Wfs", + "Zerto", + "Custom" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "workload_type" + }, + "WorkloadPlacementRecommendation.recommendation_engine": { + "values": [ + "pure1", + "local", + "best-available" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "recommendation_engine" + }, + "WorkloadPlacementRecommendation.status": { + "values": [ + "processing", + "completed", + "failed" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "status" + }, + "_workloadConfigurationReferencePost.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "resource_type" + }, + "_workloadConfigurationReferencePatch.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "resource_type" + }, + "_fileSystemExportBase.status": { + "values": [ + "policy_disabled", + "protocol_disabled" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "status" + }, + "_presetWorkloadBase.platform_features": { + "values": [ + "fa_block", + "fa_file", + "fb_file" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "platform_features" + }, + "_presetWorkloadBase.workload_type": { + "values": [ + "Clarity", + "Epic", + "Exchange", + "File", + "MsSQL", + "MySQL", + "Oracle", + "PostgreSQL", + "SAP-Hana", + "SAP", + "VDI", + "VSI", + "Wfs", + "Zerto", + "Custom" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "workload_type" + }, + "_workloadPlacementRecommendationResult.score": { + "values": [ + "optimal", + "optimal-with-warnings", + "acceptable" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "score" + }, + "_workloadConfigurationReference.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "resource_type" + }, + "_presetWorkloadParameter.type": { + "values": [ + "string", + "integer", + "boolean", + "resource_reference" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "type" + }, + "_presetWorkloadQuotaConfiguration.policy_action": { + "values": [ + "always_create", + "create_or_reuse" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "policy_action" + }, + "_presetWorkloadSnapshotConfiguration.policy_action": { + "values": [ + "always_create", + "create_or_reuse" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "policy_action" + }, + "ResiliencyGroup.status": { + "values": [ + "critical", + "healthy", + "unhealthy" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "status" + }, + "_workloadPlacementRecommendationGenericTarget.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "resource_type" + }, + "_presetWorkloadDirectoryConfigurationMultiProtocol.access_control_style": { + "values": [ + "nfs", + "smb", + "shared", + "independent", + "mode-bits" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "access_control_style" + }, + "_presetWorkloadExportConfigurationNfs.policy_action": { + "values": [ + "always_create", + "create_or_reuse" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "policy_action" + }, + "_presetWorkloadExportConfigurationSmb.policy_action": { + "values": [ + "always_create", + "create_or_reuse" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "policy_action" + }, + "_presetWorkloadExportConfigurationSmbShare.policy_action": { + "values": [ + "always_create", + "create_or_reuse" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "policy_action" + }, + "_presetWorkloadMetadata.subtype": { + "values": [ + "size", + "iops", + "bandwidth", + "time", + "duration" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "subtype" + }, + "_presetWorkloadPolicyAction.policy_action": { + "values": [ + "always_create", + "create_or_reuse" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "policy_action" + }, + "_workloadPlacementRecommendationTarget.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "resource_type" + }, + "_workloadPlacementRecommendationWarning.code": { + "values": [ + "limit_volumes_count", + "limit_pods_count" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "code" + }, + "_workloadPlacementRecommendationWarning.message": { + "values": [ + "Adding the workload on the array would exceed the limit on volumes", + "Adding the workload on the array would exceed the limit on pods" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "message" + }, + "_presetWorkloadExportConfigurationNfsRule.access": { + "values": [ + "root-squash", + "all-squash", + "no-root-squash" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "access" + }, + "_presetWorkloadExportConfigurationNfsRule.nfs_version": { + "values": [ + "nfsv3", + "nfsv4" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "nfs_version" + }, + "_presetWorkloadExportConfigurationNfsRule.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "permission" + }, + "_presetWorkloadExportConfigurationSmbRule.encryption": { + "values": [ + "required", + "disabled", + "optional" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "encryption" + }, + "_presetWorkloadExportConfigurationSmbRule.permission": { + "values": [ + "rw", + "ro" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "permission" + }, + "_presetWorkloadExportConfigurationSmbShareRule.change": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "change" + }, + "_presetWorkloadExportConfigurationSmbShareRule.full_control": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "full_control" + }, + "_presetWorkloadExportConfigurationSmbShareRule.read": { + "values": [ + "allow", + "deny" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "read" + }, + "_presetWorkloadConstraintsResourceReferenceAllowedValues.resource_type": { + "values": [ + "servers", + "storage-classes", + "remote-arrays" + ], + "minVersion": "2.23", + "kind": "schema", + "name": "resource_type" + }, + "Admin.admin_type": { + "values": [ + "local-user", + "remote-user", + "service-account" + ], + "minVersion": "2.24", + "kind": "schema", + "name": "admin_type" + }, + "SoftwareBundle.status": { + "values": [ + "downloading", + "failed", + "ready", + "verifying" + ], + "minVersion": "2.24", + "kind": "schema", + "name": "status" + }, + "SoftwarePatch.status": { + "values": [ + "available", + "downloaded", + "downloading", + "download_failed", + "installing", + "installed", + "failed", + "not_applicable" + ], + "minVersion": "2.24", + "kind": "schema", + "name": "status" + }, + "LocalMemberTypes": { + "values": [ + "User", + "Group" + ], + "minVersion": "2.24", + "kind": "parameter", + "name": "member_types" + }, + "AuditFileSystemsPoliciesPatch.control_type": { + "values": [ + "policy", + "sacl" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "control_type" + }, + "UserGroupQuotaPolicyRulePost.notifications": { + "values": [ + "None", + "Account" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "notifications" + }, + "UserGroupQuotaPolicyRulePost.quota_type": { + "values": [ + "user", + "group", + "user-default", + "group-default" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "quota_type" + }, + "UserGroupQuotaPolicyRulePatch.notifications": { + "values": [ + "None", + "Account" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "notifications" + }, + "AuditFileSystemsPolicyPatchBase.control_type": { + "values": [ + "policy", + "sacl" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "control_type" + }, + "UserGroupQuotaPolicyRuleInPolicy.notifications": { + "values": [ + "None", + "Account" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "notifications" + }, + "UserGroupQuotaPolicyRuleInPolicy.quota_type": { + "values": [ + "user", + "group", + "user-default", + "group-default" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "quota_type" + }, + "UserGroupQuotaPolicyRule.notifications": { + "values": [ + "None", + "Account" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "notifications" + }, + "UserGroupQuotaPolicyRule.quota_type": { + "values": [ + "user", + "group", + "user-default", + "group-default" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "quota_type" + }, + "UserGroupQuotaPolicyRuleBase.notifications": { + "values": [ + "None", + "Account" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "notifications" + }, + "UserGroupQuotaPolicyRuleBase.quota_type": { + "values": [ + "user", + "group", + "user-default", + "group-default" + ], + "minVersion": "2.25", + "kind": "schema", + "name": "quota_type" + }, + "ManagementAccessPolicyRolePermissionPost.actions": { + "values": [ + "get", + "post", + "patch", + "delete", + "all" + ], + "minVersion": "2.26", + "kind": "schema", + "name": "actions" + }, + "ManagementAccessPolicyRolePermissionPatch.actions": { + "values": [ + "get", + "post", + "patch", + "delete", + "all" + ], + "minVersion": "2.26", + "kind": "schema", + "name": "actions" + }, + "_policyManagementAccessRolePermissionPost.actions": { + "values": [ + "get", + "post", + "patch", + "delete", + "all" + ], + "minVersion": "2.26", + "kind": "schema", + "name": "actions" + }, + "_policyManagementAccessRolePermissionPatch.actions": { + "values": [ + "get", + "post", + "patch", + "delete", + "all" + ], + "minVersion": "2.26", + "kind": "schema", + "name": "actions" + }, + "ManagementAccessPolicyRolePermission.actions": { + "values": [ + "get", + "post", + "patch", + "delete", + "all" + ], + "minVersion": "2.26", + "kind": "schema", + "name": "actions" + }, + "TgroupMember.status": { + "values": [ + "joining", + "joined", + "removing" + ], + "minVersion": "2.26", + "kind": "schema", + "name": "status" + }, + "_policyManagementAccessRolePermission.actions": { + "values": [ + "get", + "post", + "patch", + "delete", + "all" + ], + "minVersion": "2.26", + "kind": "schema", + "name": "actions" + }, + "FleetMemberBatchResult.status": { + "values": [ + "joining", + "joined", + "failed" + ], + "minVersion": "2.27", + "kind": "schema", + "name": "status" + }, + "_fixedReferenceWithoutId.resource_type": { + "values": [ + "hosts", + "host-groups", + "network-interfaces", + "pods", + "ports", + "pod-replica-links", + "subnets", + "volumes", + "volume-snapshots", + "volume-groups", + "directories", + "policies/nfs", + "policies/smb", + "policies/snapshot", + "topology-groups/arrays" + ], + "minVersion": "2.27", + "kind": "schema", + "name": "resource_type" + } + }, + "unparsed": [ + { + "key": "Array.idle_timeout", + "kind": "schema", + "name": "idle_timeout", + "version": "2.0", + "triggerText": "Valid values are\nin the range of 300000 and 10800000." + }, + { + "key": "ObjectStoreAccessPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.2", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "Policy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.2", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "PolicyBase.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.2", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "NfsExportPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.3", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "GET network-interfaces/ping#component_name", + "kind": "inline-parameter", + "name": "component_name", + "version": "2.6", + "triggerText": "Valid values are controllers and blades from hardware list." + }, + { + "key": "GET network-interfaces/trace#component_name", + "kind": "inline-parameter", + "name": "component_name", + "version": "2.6", + "triggerText": "Valid values are controllers and blades from hardware list." + }, + { + "key": "FileLock.protocol", + "kind": "schema", + "name": "protocol", + "version": "2.10", + "triggerText": "Valid values include `NLM`, `NFSv4." + }, + { + "key": "SmbClientPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.10", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "SmbSharePolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.10", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "BucketAccessPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.12", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "CrossOriginResourceSharingPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.12", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "NetworkAccessPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.13", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "SshCertificateAuthorityPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.14", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "PasswordPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.16", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "GET arrays/space/storage-classes#storage_class_names", + "kind": "inline-parameter", + "name": "storage_class_names", + "version": "2.16", + "triggerText": "Valid values include 'S500X-S' and 'S500X-A'." + }, + { + "key": "AuditFileSystemsPolicyNoContext.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "PolicyBaseContext.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "PolicyBaseContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "AuditFileSystemsPoliciesPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "_fixedReferenceWithIsLocal.resource_type", + "kind": "schema", + "name": "resource_type", + "version": "2.17", + "triggerText": "Valid values are the unique part of the resource's REST endpoint." + }, + { + "key": "NfsExportPolicyRule.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ObjectStoreVirtualHost.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "WormDataPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_fixedLocationReference.resource_type", + "kind": "schema", + "name": "resource_type", + "version": "2.17", + "triggerText": "Valid values are the unique part of the resource's REST endpoint." + }, + { + "key": "ArrayPerformance.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "TrustPolicyRuleWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "BucketAccessPolicyRuleWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystem.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "SmbClientPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "LifecycleRule.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ObjectStoreAccessPolicyAction.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "SmbClientPolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "FileSystemReplicaLink.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ArrayS3SpecificPerformance.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "QosPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "GroupQuota.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "CrossOriginResourceSharingPolicyRuleWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemSnapshot.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "Bucket.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_context.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemSnapshotTransfer.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_fixedReference.resource_type", + "kind": "schema", + "name": "resource_type", + "version": "2.17", + "triggerText": "Valid values are the unique part of the resource's REST endpoint." + }, + { + "key": "SyslogServerContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ObjectStoreUser.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "BucketReplicaLink.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ArrayHttpSpecificPerformance.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "SshCertificateAuthorityPolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "SmbSharePolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "PolicyPatch.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `snapshot`, `ssh-certificate-authority`,\nand `worm-data`." + }, + { + "key": "PolicyPatch.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet." + }, + { + "key": "RelationshipPerformanceReplication.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "AuditFileSystemsPoliciesPatch.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "PolicyBaseRenameable.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "AuditFileSystemsPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "AuditFileSystemsPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "NfsExportPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "SmbClientPolicyRule.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ObjectStoreAccessPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "TlsPolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "TlsPolicyPost.min_tls_version", + "kind": "schema", + "name": "min_tls_version", + "version": "2.17", + "triggerText": "Valid values include `default`, `TLSv1." + }, + { + "key": "PolicyMemberContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "TlsPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "TlsPolicy.min_tls_version", + "kind": "schema", + "name": "min_tls_version", + "version": "2.17", + "triggerText": "Valid values include `default`, `TLSv1." + }, + { + "key": "NfsExportPolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "ObjectStoreTrustPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.17", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "ObjectStoreTrustPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ObjectStoreAccount.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ObjectStoreRemoteCredentials.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ObjectStoreRole.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ServerContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ArrayNfsSpecificPerformance.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_fixedReferenceWithType.resource_type", + "kind": "schema", + "name": "resource_type", + "version": "2.17", + "triggerText": "Valid values are the unique part of the resource's REST endpoint." + }, + { + "key": "ArrayConnectionPost.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "PolicyRuleObjectAccess.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "CrossOriginResourceSharingPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "SmbSharePolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ArrayConnection.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemExport.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ObjectStoreAccessKey.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "PolicyMemberWithRemote.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ArrayConnectionPath.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "BucketAccessPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "Policy.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "PolicyFileSystemSnapshot.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "SmbSharePolicyRuleWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_fixedReferenceNoId.resource_type", + "kind": "schema", + "name": "resource_type", + "version": "2.17", + "triggerText": "Valid values are the unique part of the resource's REST endpoint." + }, + { + "key": "_fixedReferenceWithRemote.resource_type", + "kind": "schema", + "name": "resource_type", + "version": "2.17", + "triggerText": "Valid values are the unique part of the resource's REST endpoint." + }, + { + "key": "CrossOriginResourceSharingPolicyRule.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "UserQuota.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ArraySpace.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "TargetWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.17", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "Ping_trace_component", + "kind": "parameter", + "name": "component_name", + "version": "2.17", + "triggerText": "Valid values are controllers\nand blades from hardware list." + }, + { + "key": "StorageClassTieringPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.18", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "AuditFileSystemsPolicyRuleInPolicy.op_status", + "kind": "schema", + "name": "op_status", + "version": "2.18", + "triggerText": "Valid values include 'success' or failure'." + }, + { + "key": "AuditFileSystemsPolicyPatchBase.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.18", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "AuditFileSystemsPolicyRuleBase.op_status", + "kind": "schema", + "name": "op_status", + "version": "2.18", + "triggerText": "Valid values include 'success' or failure'." + }, + { + "key": "ManagementAccessPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.19", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "ManagementAccessPolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.19", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "ObjectStoreAccountExport.context", + "kind": "schema", + "name": "context", + "version": "2.20", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "RealmDefaults.context", + "kind": "schema", + "name": "context", + "version": "2.20", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "S3ExportPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.20", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "S3ExportPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.20", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "S3ExportPolicyRule.context", + "kind": "schema", + "name": "context", + "version": "2.20", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "AuditObjectStorePoliciesPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.20", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "AuditObjectStorePoliciesPatch.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.20", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "LogTargetsObjectStoreWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.20", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "AuditObjectStorePolicyWithWritableReference.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.20", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "AuditObjectStorePolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.20", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "AuditObjectStorePolicyWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.20", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "AuditObjectStorePolicyWithContext.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.20", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "BucketAuditFilterWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.20", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "BucketAuditFilterActionWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.20", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "DataEvictionPolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.21", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "DataEvictionPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.21", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "DataEvictionPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.21", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "Array.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "PolicyMemberWithRemoteGetResponse.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "PolicyMemberWithRemoteResponse.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ManagementAuthenticationPolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.22", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "ManagementAuthenticationPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.22", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "ManagementAuthenticationPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "NfsExportPolicyPatch.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.22", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "PolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.22", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "SmbClientPolicyPatch.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.22", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "SmbSharePolicyPatch.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.22", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "Admin.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemLockNlmReclamation.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileLock.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemClient.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSession.context", + "kind": "schema", + "name": "context", + "version": "2.22", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemExportPatch.context", + "kind": "schema", + "name": "context", + "version": "2.23", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "QosPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.23", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "PresetWorkload.context", + "kind": "schema", + "name": "context", + "version": "2.23", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "WorkloadPlacementRecommendation.context", + "kind": "schema", + "name": "context", + "version": "2.23", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "TestResultWithContext.context", + "kind": "schema", + "name": "context", + "version": "2.23", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_fileSystemExportBase.context", + "kind": "schema", + "name": "context", + "version": "2.23", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "Workload.context", + "kind": "schema", + "name": "context", + "version": "2.23", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "Tag.context", + "kind": "schema", + "name": "context", + "version": "2.23", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_workloadConfigurationFixedReference.resource_type", + "kind": "schema", + "name": "resource_type", + "version": "2.23", + "triggerText": "Valid values are the unique part of the resource's REST endpoint." + }, + { + "key": "_workloadPreset.resource_type", + "kind": "schema", + "name": "resource_type", + "version": "2.23", + "triggerText": "Valid values are the unique part of the resource's REST endpoint." + }, + { + "key": "LocalDirectoryService.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "LocalGroupPatch.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ManagementAccessPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "RealmGetResponse.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "SshCertificateAuthorityPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "AdminApiToken.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "AdminCache.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "LocalGroup.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "LocalMember.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "LocalUser.context", + "kind": "schema", + "name": "context", + "version": "2.24", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "Dns.context", + "kind": "schema", + "name": "context", + "version": "2.25", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemJunction.context", + "kind": "schema", + "name": "context", + "version": "2.25", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "UserGroupQuotaPolicyPost.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.25", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "UserGroupQuotaPolicy.policy_type", + "kind": "schema", + "name": "policy_type", + "version": "2.25", + "triggerText": "Valid values include `alert`, `audit`, `bucket-access`,\n`cross-origin-resource-sharing`, `network-access`, `nfs`, `object-access`,\n`s3-export`, smb-client`, `smb-share`, `ssh-certificate-authority`, and\n`telemetry-metrics`." + }, + { + "key": "UserGroupQuotaPolicy.context", + "kind": "schema", + "name": "context", + "version": "2.25", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "UserGroupQuotaPolicyRule.context", + "kind": "schema", + "name": "context", + "version": "2.25", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemGroupQuota.context", + "kind": "schema", + "name": "context", + "version": "2.25", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemGroup.context", + "kind": "schema", + "name": "context", + "version": "2.25", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemUserQuota.context", + "kind": "schema", + "name": "context", + "version": "2.25", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "FileSystemUser.context", + "kind": "schema", + "name": "context", + "version": "2.25", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ManagementAccessPolicyRule.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ManagementAccessPolicyRole.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ManagementAccessPolicyRolePermission.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "SupportSystemManifest.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "Tgroup.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "TgroupMember.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_policyManagementAccessRole.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_policyManagementAccessRolePermission.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "ManagementAccessPolicyRolePermissionSupportedResource.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + }, + { + "key": "_policyManagementAccessRolePermissionSupportedResource.context", + "kind": "schema", + "name": "context", + "version": "2.26", + "triggerText": "Valid values include a reference to any array which is a member of the same fleet\nor to the fleet itself." + } + ] +} diff --git a/Reports/PfbValueEnumReconciliation.md b/Reports/PfbValueEnumReconciliation.md new file mode 100644 index 0000000..3c452a0 --- /dev/null +++ b/Reports/PfbValueEnumReconciliation.md @@ -0,0 +1,20 @@ +# Value-Enum Reconciliation Report + +Generated by `tools/Build-PfbValueEnumMap.ps1` against `Reports/PfbValueEnumMap.json` (28 REST versions, 256 entries). + +Compares every hand-written `ValidateSet` in `Public/` that encodes a spec-documented value enum against the newly extracted prose data. Report only — no `Public/` cmdlet is edited by this script. See `Value-Enum-Extraction-Work.md` for the full non-goal list. + +| File:Line | Parameter | Hand-written values | Spec values | Status | Note | +|---|---|---|---|---|---| +| `Public/Alert/New-PfbAlertWatcher.ps1:22` | `-MinimumSeverity` | info, warning, error, critical | info, warning, critical | **stale** | hand-written set has but spec does not list: error | +| `Public/Alert/Update-PfbAlertWatcher.ps1:29` | `-MinimumSeverity` | info, warning, critical | info, warning, critical | **exact-match** | | +| `Public/Bucket/New-PfbBucket.ps1:29` | `-Versioning` | enabled, suspended, none | none, enabled, suspended | **exact-match** | | +| `Public/Bucket/Update-PfbBucket.ps1:31` | `-Versioning` | enabled, suspended, none | none, enabled, suspended | **exact-match** | | +| `Public/FileSystem/New-PfbFileSystem.ps1:130` | `-MultiProtocolAccessControlStyle` | nfs, smb, shared, independent, mode-bits | nfs, smb, shared, independent, mode-bits | **exact-match** | | +| `Public/FileSystem/New-PfbFileSystem.ps1:143` | `-GroupOwnership` | creator, parent-directory | creator, parent-directory | **exact-match** | | +| `Public/FileSystem/New-PfbFileSystem.ps1:147` | `-EradicationMode` | permission-based, retention-based | permission-based, retention-based | **exact-match** | | +| `Public/FileSystem/Update-PfbFileSystem.ps1:97` | `-RequestedPromotionState` | promoted, demoted | promoted, demoted | **exact-match** | | +| `Public/Array/Get-PfbArrayPerformance.ps1:28` | `-Protocol` | nfs, smb, http, s3 | | **collision** | matches 5 distinct (schema, property) entries with different value sets: GET arrays/performance#protocol; GET file-systems/performance#protocol; FileSession.protocol; Protocol; Protocol_clients | +| `Public/Network/New-PfbNetworkInterface.ps1:52` | `-Services` | data, egress-only, management, replication, support | | **not-found-in-resource** | field 'services' not found under any of [NetworkInterface]-hinted schemas; found elsewhere: SyslogServer.services; SyslogServerPatch.services; SyslogServerContext.services; SyslogServerPost.services | +| `Public/Network/New-PfbNetworkInterface.ps1:59` | `-Type` | vip | | **not-found-in-resource** | field 'type' not found under any of [NetworkInterface]-hinted schemas; found elsewhere: Hardware.type; GET array-connections/performance/replication#type; GET arrays/performance/replication#type; GET arrays/space#type; Drive.type; ArrayConnectionPost.type; ArrayConnection.type; ArrayConnectionPath.type; Type; Type_for_performance; TieringPolicyArchivalRule.type; TieringPolicyRetrievalRule.type; _networkInterfaceNeighborNeighborChassisId.type; _networkInterfaceNeighborNeighborPortId.type; _presetWorkloadParameter.type | + diff --git a/Reports/README.md b/Reports/README.md new file mode 100644 index 0000000..bf236d2 --- /dev/null +++ b/Reports/README.md @@ -0,0 +1,28 @@ +# Reports/ + +Human/agent-facing advisory output from the `tools/` generator scripts. Nothing under +this directory is read by the shipped module at runtime — see `Data/` for that (`Data/PfbCapabilityMap.json`, `Data/PfbVersionMap.json`). + +Regenerate everything here by running, in order (each requires `tools/specs/` cached +locally first — see `tools/README.md`'s `Update-PfbApiSpecs.ps1` step): + +```powershell +./tools/Build-PfbValueEnumMap.ps1 +./tools/Build-PfbFieldCmdletMap.ps1 +./tools/Build-PfbApiDriftReport.ps1 +``` + +| File | Answers | Generated by | +|---|---|---| +| `PfbValueEnumMap.json` | "What legal values does the spec document for this field?" | `tools/Build-PfbValueEnumMap.ps1` | +| `PfbValueEnumReconciliation.md` | "Does an existing hand-written `ValidateSet` match the spec?" | `tools/Build-PfbValueEnumMap.ps1` | +| `PfbFieldCmdletMap.json` | "Which typed `Public/` parameters lacking a `ValidateSet` today should get one?" | `tools/Build-PfbFieldCmdletMap.ps1` | +| `PfbFieldCmdletMapping.md` | Same, as a readable table. | `tools/Build-PfbFieldCmdletMap.ps1` | +| `PfbApiDriftReport.json` / `.md` | "What's changed in the API that this module hasn't caught up to yet?" — new endpoints with no cmdlet, new parameters on endpoints we already call, drift on existing `ValidateSet`s, and new `ValidateSet` candidates. Pass `-SinceVersion ''` to isolate just the newest release's additions (uncovered endpoints + parameter gaps only) instead of the full backlog. | `tools/Build-PfbApiDriftReport.ps1` | + +All of the above are **reporting only** — none of them edit any `Public/` cmdlet. A human +(or an agent, on request) reads a report and decides what, if anything, to build next. + +**Orienting yourself cold:** if you've been handed this repo and told "something changed +in the API," start at `PfbApiDriftReport.md` — it's the newest, most targeted summary and +links back to the other three reports for detail. diff --git a/Tests/Assert-PfbApiCapability.Tests.ps1 b/Tests/Assert-PfbApiCapability.Tests.ps1 new file mode 100644 index 0000000..904c763 --- /dev/null +++ b/Tests/Assert-PfbApiCapability.Tests.ps1 @@ -0,0 +1,133 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Unit tests for the Private Assert-PfbApiCapability capability-check gate. +.DESCRIPTION + Injects a small synthetic capability/version map into module state rather than relying + on the real committed Data/PfbCapabilityMap.json, so these tests are independent of + what the real map currently contains. +#> + +BeforeAll { + $moduleRoot = Split-Path -Parent $PSScriptRoot + $manifest = Join-Path $moduleRoot 'PureStorageFlashBladePowerShell.psd1' + Import-Module $manifest -Force + + $script:originalModuleRoot = InModuleScope PureStorageFlashBladePowerShell { $script:PfbModuleRoot } + + function New-TestArray { + param([string]$ApiVersion) + [PSCustomObject]@{ ApiVersion = $ApiVersion } + } +} + +Describe 'Assert-PfbApiCapability' { + BeforeEach { + InModuleScope PureStorageFlashBladePowerShell { + $script:PfbCapabilityMap = [PSCustomObject]@{ + endpoints = [PSCustomObject]@{ + 'GET /widgets' = [PSCustomObject]@{ + minVersion = '9.0' + parameters = [PSCustomObject]@{ sort = '9.1' } + bodyProperties = [PSCustomObject]@{} + } + 'POST /widgets' = [PSCustomObject]@{ + minVersion = '9.1' + parameters = [PSCustomObject]@{} + bodyProperties = [PSCustomObject]@{ name = '9.0'; color = '9.2' } + } + } + } + $script:PfbVersionMap = [PSCustomObject]@{ + '9.0' = [PSCustomObject]@{ purity = '5.0.0' } + '9.1' = [PSCustomObject]@{ purity = '5.1.0' } + } + } + } + + AfterEach { + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = $script:originalModuleRoot } { + $script:PfbCapabilityMap = $null + $script:PfbVersionMap = $null + $script:PfbModuleRoot = $root + } + } + + It 'does not throw when the endpoint and its query parameter are both supported by the connected version' { + $array = New-TestArray -ApiVersion '9.1' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + { Assert-PfbApiCapability -Array $array -Method GET -Endpoint 'widgets' -QueryParams @{ sort = 'name' } } | + Should -Not -Throw + } + } + + It 'throws when the endpoint itself requires a newer version than the connected array' { + $array = New-TestArray -ApiVersion '9.0' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + { Assert-PfbApiCapability -Array $array -Method POST -Endpoint 'widgets' } | + Should -Throw -ExpectedMessage '*POST /widgets requires REST 9.1*' + } + } + + It 'throws naming the specific query parameter that requires a newer version' { + $array = New-TestArray -ApiVersion '9.0' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + { Assert-PfbApiCapability -Array $array -Method GET -Endpoint 'widgets' -QueryParams @{ sort = 'newest' } } | + Should -Throw -ExpectedMessage "*parameter 'sort'*requires REST 9.1*" + } + } + + It 'ignores a query parameter whose value is null or empty (never sent, so never a violation)' { + $array = New-TestArray -ApiVersion '9.0' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + { Assert-PfbApiCapability -Array $array -Method GET -Endpoint 'widgets' -QueryParams @{ sort = '' } } | + Should -Not -Throw + } + } + + It 'throws naming the specific request-body field that requires a newer version' { + $array = New-TestArray -ApiVersion '9.1' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + { Assert-PfbApiCapability -Array $array -Method POST -Endpoint 'widgets' -Body @{ name = 'x'; color = 'red' } } | + Should -Throw -ExpectedMessage "*request-body field 'color'*requires REST 9.2*" + } + } + + It 'does not throw for an endpoint absent from the capability map (safety valve for stale/uncovered maps)' { + $array = New-TestArray -ApiVersion '1.0' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + { Assert-PfbApiCapability -Array $array -Method GET -Endpoint 'not-in-map' } | Should -Not -Throw + } + } + + It 'includes the Purity//FB version in the message when the version map has an entry for both sides' { + $array = New-TestArray -ApiVersion '9.0' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + { Assert-PfbApiCapability -Array $array -Method POST -Endpoint 'widgets' } | + Should -Throw -ExpectedMessage '*Purity//FB 5.1.0*Purity//FB 5.0.0*' + } + } + + It 'omits the Purity//FB parenthetical cleanly when no version map is available' { + InModuleScope PureStorageFlashBladePowerShell { $script:PfbVersionMap = $null } + $array = New-TestArray -ApiVersion '9.0' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + $errorMessage = $null + try { Assert-PfbApiCapability -Array $array -Method POST -Endpoint 'widgets' } + catch { $errorMessage = $_.Exception.Message } + $errorMessage | Should -BeLike '*requires REST 9.1*' + $errorMessage | Should -Not -BeLike '*Purity*' + } + } + + It 'no-ops entirely when the capability map itself is unavailable' { + InModuleScope PureStorageFlashBladePowerShell { + $script:PfbCapabilityMap = $null + $script:PfbModuleRoot = 'TestDrive:\nonexistent' + } + $array = New-TestArray -ApiVersion '1.0' + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + { Assert-PfbApiCapability -Array $array -Method GET -Endpoint 'widgets' } | Should -Not -Throw + } + } +} diff --git a/Tests/Build-PfbApiDriftReport.Tests.ps1 b/Tests/Build-PfbApiDriftReport.Tests.ps1 new file mode 100644 index 0000000..9738b2c --- /dev/null +++ b/Tests/Build-PfbApiDriftReport.Tests.ps1 @@ -0,0 +1,193 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Integration tests for tools/Build-PfbApiDriftReport.ps1 against small synthetic + fixtures (capability map, field-cmdlet map, Public/Private trees, spec files) -- no + dependency on the real cached specs in tools/specs/, plus one real-artifact check. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + $script:builderScript = Join-Path $repoRoot 'tools/Build-PfbApiDriftReport.ps1' + + $script:fixtureRoot = Join-Path $TestDrive 'fixture' + $publicDir = Join-Path $fixtureRoot 'Public/Fixture' + $privateDir = Join-Path $fixtureRoot 'Private' + $specsDir = Join-Path $fixtureRoot 'specs' + New-Item -ItemType Directory -Path $publicDir, $privateDir, $specsDir -Force | Out-Null + + Set-Content -Path (Join-Path $publicDir 'Get-PfbFixtureArrayPerformance.ps1') -Value @' +function Get-PfbFixtureArrayPerformance { + [CmdletBinding()] + param( + [Parameter()] [PSCustomObject]$Array, + [Parameter()] + [ValidateSet('nfs', 'smb', 'http', 's3')] + [string]$Protocol + ) + $queryParams = @{} + if ($Protocol) { $queryParams['protocol'] = $Protocol } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'arrays/performance' -QueryParams $queryParams -AutoPaginate +} +'@ + + # v1: Protocol has 4 values, matching the fixture cmdlet's ValidateSet exactly. + $specV1 = [ordered]@{ + openapi = '3.0.1'; info = @{ version = '9.0' } + paths = [ordered]@{ + '/arrays/performance' = [ordered]@{ + get = [ordered]@{ + parameters = @( + [ordered]@{ name = 'protocol'; 'in' = 'query'; schema = [ordered]@{ type = 'string' }; description = 'Valid values are `nfs`, `smb`, `http`, and `s3`.' } + ) + } + } + } + components = [ordered]@{ schemas = [ordered]@{} } + } + # v2: spec adds 'all' -- the real Get-PfbArrayPerformance -Protocol bug shape. + $specV2 = [ordered]@{ + openapi = '3.0.1'; info = @{ version = '9.1' } + paths = [ordered]@{ + '/arrays/performance' = [ordered]@{ + get = [ordered]@{ + parameters = @( + [ordered]@{ name = 'protocol'; 'in' = 'query'; schema = [ordered]@{ type = 'string' }; description = 'Valid values are `all`, `nfs`, `smb`, `http`, and `s3`.' } + ) + } + } + '/gadgets' = [ordered]@{ get = [ordered]@{ parameters = @() } } + } + components = [ordered]@{ schemas = [ordered]@{} } + } + $specV1 | ConvertTo-Json -Depth 20 | Set-Content -Path (Join-Path $specsDir 'fb9.0.json') + $specV2 | ConvertTo-Json -Depth 20 | Set-Content -Path (Join-Path $specsDir 'fb9.1.json') + + $script:capabilityMapPath = Join-Path $fixtureRoot 'PfbCapabilityMap.json' + [ordered]@{ + schemaVersion = 1 + generatedFrom = @('9.0', '9.1') + endpoints = [ordered]@{ + 'GET /arrays/performance' = [ordered]@{ minVersion = '9.0'; parameters = [ordered]@{ protocol = '9.0'; region = '9.0'; timezone = '9.1'; 'X-Request-ID' = '9.0'; continuation_token = '9.0'; offset = '9.0' }; bodyProperties = [ordered]@{} } + 'GET /gadgets' = [ordered]@{ minVersion = '9.1'; parameters = [ordered]@{}; bodyProperties = [ordered]@{} } + 'GET /widgets' = [ordered]@{ minVersion = '9.0'; parameters = [ordered]@{}; bodyProperties = [ordered]@{} } + } + } | ConvertTo-Json -Depth 20 | Set-Content -Path $capabilityMapPath + + $script:fieldCmdletMapPath = Join-Path $fixtureRoot 'PfbFieldCmdletMap.json' + [ordered]@{ + schemaVersion = 1 + generatedFrom = @('9.0', '9.1') + entries = @( + [ordered]@{ cmdlet = 'New-PfbFixtureWidget'; parameter = 'Color'; wireName = 'color'; status = 'matched'; matchedKey = 'Widget.color'; specValues = @('red', 'blue'); stableSinceOldestVersion = $true; recommendation = 'ValidateSet' } + ) + attributesOnly = @() + typedUnresolved = @() + } | ConvertTo-Json -Depth 20 | Set-Content -Path $fieldCmdletMapPath + + $script:outputPath = Join-Path $TestDrive 'output/PfbApiDriftReport.json' + $script:reportPath = Join-Path $TestDrive 'output/PfbApiDriftReport.md' + + & $builderScript -SpecsDirectory $specsDir -PublicDirectory $publicDir -PrivateDirectory $privateDir ` + -CapabilityMapPath $capabilityMapPath -FieldCmdletMapPath $fieldCmdletMapPath ` + -OutputPath $outputPath -ReportPath $reportPath + + $script:manifest = Get-Content -Path $outputPath -Raw | ConvertFrom-Json -Depth 20 +} + +Describe 'Build-PfbApiDriftReport' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + It 'category 1: flags GET /gadgets as an uncovered endpoint' { + ($manifest.uncoveredEndpoints | Where-Object { $_.endpoint -eq 'GET /gadgets' }) | Should -Not -BeNullOrEmpty + } + + It 'category 3: flags the Protocol ValidateSet missing the spec''s newly-added "all" value' { + $rec = $manifest.validateSetDrift | Where-Object { $_.cmdlet -eq 'Get-PfbFixtureArrayPerformance' -and $_.parameter -eq 'Protocol' } + $rec.missingValues | Should -Contain 'all' + } + + It 'category 4: passes Build-PfbFieldCmdletMap.ps1''s matched entries through unchanged' { + $rec = $manifest.newValidateSetCandidates | Where-Object { $_.cmdlet -eq 'New-PfbFixtureWidget' } + $rec.parameter | Should -Be 'Color' + } + + It 'writes both a JSON manifest and a Markdown report' { + Test-Path $outputPath | Should -BeTrue + Test-Path $reportPath | Should -BeTrue + } + + It 'the JSON manifest contains no non-deterministic content (no timestamp fields)' { + $manifest.PSObject.Properties.Name | Should -Not -Contain 'generatedAt' + $manifest.PSObject.Properties.Name | Should -Not -Contain 'timestamp' + } + + It 'without -SinceVersion, sinceVersion is not set and older gaps are present' { + $manifest.sinceVersion | Should -BeNullOrEmpty + ($manifest.uncoveredEndpoints | Where-Object { $_.endpoint -eq 'GET /widgets' }) | Should -Not -BeNullOrEmpty + } + + It 'never reports X-Request-ID as a missing parameter, even though the fixture endpoint has it' { + $gap = $manifest.parameterGaps | Where-Object { $_.endpoint -eq 'GET /arrays/performance' } + $gap.missingParameters | Should -Not -Contain 'X-Request-ID' + $gap.missingParameters | Should -Contain 'region' + } + + It 'never reports continuation_token or offset as a missing parameter, even though the fixture endpoint has both' { + $gap = $manifest.parameterGaps | Where-Object { $_.endpoint -eq 'GET /arrays/performance' } + $gap.missingParameters | Should -Not -Contain 'continuation_token' + $gap.missingParameters | Should -Not -Contain 'offset' + $gap.missingParameters | Should -Contain 'region' + } +} + +Describe 'Build-PfbApiDriftReport -SinceVersion filter' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + BeforeAll { + $script:filteredOutputPath = Join-Path $TestDrive 'output/PfbApiDriftReportSince.json' + $script:filteredReportPath = Join-Path $TestDrive 'output/PfbApiDriftReportSince.md' + & $builderScript -SpecsDirectory $specsDir -PublicDirectory $publicDir -PrivateDirectory $privateDir ` + -CapabilityMapPath $capabilityMapPath -FieldCmdletMapPath $fieldCmdletMapPath ` + -OutputPath $filteredOutputPath -ReportPath $filteredReportPath -SinceVersion '9.0' + $script:filteredManifest = Get-Content -Path $filteredOutputPath -Raw | ConvertFrom-Json -Depth 20 + $script:filteredReportText = Get-Content -Path $filteredReportPath -Raw + } + + It 'records the requested SinceVersion in the manifest' { + $filteredManifest.sinceVersion | Should -Be '9.0' + } + + It 'excludes an uncovered endpoint introduced at or before -SinceVersion' { + ($filteredManifest.uncoveredEndpoints | Where-Object { $_.endpoint -eq 'GET /widgets' }) | Should -BeNullOrEmpty + } + + It 'keeps an uncovered endpoint introduced after -SinceVersion' { + ($filteredManifest.uncoveredEndpoints | Where-Object { $_.endpoint -eq 'GET /gadgets' }) | Should -Not -BeNullOrEmpty + } + + It 'filters a parameter gap down to only fields introduced after -SinceVersion' { + $gap = $filteredManifest.parameterGaps | Where-Object { $_.endpoint -eq 'GET /arrays/performance' } + $gap.missingParameters | Should -Be @('timezone') + } + + It 'notes the SinceVersion filter in the Markdown report' { + $filteredReportText | Should -Match 'introduced after REST 9\.0' + } +} + +Describe 'Build-PfbApiDriftReport (real generated artifacts, skips gracefully if absent)' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + It 'produces a manifest against the real Public/Private tree and Reports/ + Data/ inputs' { + $realCapabilityMapPath = Join-Path $repoRoot 'Data/PfbCapabilityMap.json' + $realFieldCmdletMapPath = Join-Path $repoRoot 'Reports/PfbFieldCmdletMap.json' + $realSpecsDir = Join-Path $repoRoot 'tools/specs' + if (-not (Test-Path $realCapabilityMapPath) -or -not (Test-Path $realFieldCmdletMapPath) -or + -not (Test-Path $realSpecsDir) -or -not (Get-ChildItem $realSpecsDir -Filter 'fb*.json' -ErrorAction SilentlyContinue)) { + Set-ItResult -Skipped -Because 'Data/PfbCapabilityMap.json, Reports/PfbFieldCmdletMap.json, or tools/specs/ not present locally' + return + } + + $realOutput = Join-Path $TestDrive 'realOutput/report.json' + $realReport = Join-Path $TestDrive 'realOutput/report.md' + & $builderScript -SpecsDirectory $realSpecsDir -PublicDirectory (Join-Path $repoRoot 'Public') -PrivateDirectory (Join-Path $repoRoot 'Private') ` + -CapabilityMapPath $realCapabilityMapPath -FieldCmdletMapPath $realFieldCmdletMapPath ` + -OutputPath $realOutput -ReportPath $realReport + Test-Path $realOutput | Should -BeTrue + } +} diff --git a/Tests/Build-PfbCapabilityMap.Tests.ps1 b/Tests/Build-PfbCapabilityMap.Tests.ps1 new file mode 100644 index 0000000..a6dd8f6 --- /dev/null +++ b/Tests/Build-PfbCapabilityMap.Tests.ps1 @@ -0,0 +1,185 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Integration tests for tools/Build-PfbCapabilityMap.ps1 against small synthetic + spec fixtures (no dependency on the real cached specs in tools/specs/), plus a + shape/sanity check of the real committed manifest when present. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + $script:builderScript = Join-Path $repoRoot 'tools/Build-PfbCapabilityMap.ps1' +} + +Describe 'Build-PfbCapabilityMap: introduced-in diffing' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + BeforeAll { + New-Item -ItemType Directory -Path 'TestDrive:\specs' -Force | Out-Null + + # v9.0: baseline — GET /widgets (param: filter), POST /widgets (body: name) + $specV1 = [ordered]@{ + openapi = '3.0.1' + info = @{ version = '9.0' } + paths = [ordered]@{ + '/api/9.0/widgets' = [ordered]@{ + get = @{ + parameters = @(@{ name = 'filter'; 'in' = 'query'; schema = @{ type = 'string' } }) + } + post = @{ + requestBody = @{ + content = @{ + 'application/json' = @{ + schema = @{ + type = 'object' + properties = @{ name = @{ type = 'string' } } + } + } + } + } + } + } + } + } + + # v9.1: adds a 'sort' param to the existing GET, and a brand-new endpoint. + $specV2 = [ordered]@{ + openapi = '3.0.1' + info = @{ version = '9.1' } + paths = [ordered]@{ + '/api/9.1/widgets' = [ordered]@{ + get = @{ + parameters = @( + @{ name = 'filter'; 'in' = 'query'; schema = @{ type = 'string' } } + @{ name = 'sort'; 'in' = 'query'; schema = @{ type = 'string' } } + ) + } + post = @{ + requestBody = @{ + content = @{ + 'application/json' = @{ + schema = @{ + type = 'object' + properties = @{ name = @{ type = 'string' } } + } + } + } + } + } + } + '/api/9.1/gadgets' = [ordered]@{ + get = @{ + parameters = @(@{ name = 'id'; 'in' = 'query'; schema = @{ type = 'string' } }) + } + } + } + } + + $specV1 | ConvertTo-Json -Depth 20 | Set-Content -Path 'TestDrive:\specs\fb9.0.json' + $specV2 | ConvertTo-Json -Depth 20 | Set-Content -Path 'TestDrive:\specs\fb9.1.json' + + & $builderScript -SpecsDirectory 'TestDrive:\specs' -OutputPath 'TestDrive:\output\manifest.json' + $script:manifest = Get-Content -Path 'TestDrive:\output\manifest.json' -Raw | ConvertFrom-Json -Depth 20 + } + + It 'records generatedFrom in ascending version order' { + $manifest.generatedFrom | Should -Be @('9.0', '9.1') + } + + It 'attributes an endpoint present since the earliest version to that version' { + $manifest.endpoints.'GET /widgets'.minVersion | Should -Be '9.0' + $manifest.endpoints.'POST /widgets'.minVersion | Should -Be '9.0' + } + + It 'attributes a brand-new endpoint to the version it first appears in' { + $manifest.endpoints.'GET /gadgets'.minVersion | Should -Be '9.1' + } + + It 'attributes a pre-existing parameter to the endpoint''s earliest version' { + $manifest.endpoints.'GET /widgets'.parameters.filter | Should -Be '9.0' + } + + It 'attributes a parameter added later to the version it first appears in, not the endpoint''s' { + $manifest.endpoints.'GET /widgets'.parameters.sort | Should -Be '9.1' + } + + It 'attributes request-body properties correctly' { + $manifest.endpoints.'POST /widgets'.bodyProperties.name | Should -Be '9.0' + } + + It 'normalizes the version-prefixed path consistently across versions (does not create duplicate endpoints)' { + ($manifest.endpoints.PSObject.Properties.Name | Where-Object { $_ -like '*widgets*' }).Count | Should -Be 2 + } +} + +Describe 'Build-PfbCapabilityMap: manifest shape' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + BeforeAll { + New-Item -ItemType Directory -Path 'TestDrive:\shapeSpecs' -Force | Out-Null + $spec = [ordered]@{ + openapi = '3.0.1' + info = @{ version = '9.0' } + paths = [ordered]@{ + '/api/9.0/widgets' = [ordered]@{ get = @{} } + } + } + $spec | ConvertTo-Json -Depth 20 | Set-Content -Path 'TestDrive:\shapeSpecs\fb9.0.json' + + & $builderScript -SpecsDirectory 'TestDrive:\shapeSpecs' -OutputPath 'TestDrive:\shapeOutput\manifest.json' + $script:shapeManifest = Get-Content -Path 'TestDrive:\shapeOutput\manifest.json' -Raw | ConvertFrom-Json -Depth 20 + } + + It 'has the required top-level keys' { + $shapeManifest.PSObject.Properties.Name | Should -Contain 'schemaVersion' + $shapeManifest.PSObject.Properties.Name | Should -Contain 'generatedFrom' + $shapeManifest.PSObject.Properties.Name | Should -Contain 'endpointCount' + $shapeManifest.PSObject.Properties.Name | Should -Contain 'endpoints' + } + + It 'reports an endpointCount matching the actual number of endpoint entries' { + $shapeManifest.endpointCount | Should -Be $shapeManifest.endpoints.PSObject.Properties.Name.Count + } + + It 'does NOT include an enums key (no structural enum data exists in the source specs)' { + $shapeManifest.endpoints.'GET /widgets'.PSObject.Properties.Name | Should -Not -Contain 'enums' + } + + It 'throws a clear error when no cached specs are present' { + New-Item -ItemType Directory -Path 'TestDrive:\emptySpecs' -Force | Out-Null + { & $builderScript -SpecsDirectory 'TestDrive:\emptySpecs' -OutputPath 'TestDrive:\emptyOutput\manifest.json' } | + Should -Throw '*No cached specs found*' + } +} + +Describe 'Real committed capability map (skips gracefully if not yet generated)' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + $script:realManifestPath = Join-Path $repoRoot 'Data/PfbCapabilityMap.json' + $script:realSpecsDir = Join-Path $repoRoot 'tools/specs' + } + + It 'every (method, path) in the newest cached spec is represented in the manifest' { + if (-not (Test-Path $realManifestPath) -or -not (Test-Path $realSpecsDir)) { + Set-ItResult -Skipped -Because 'Data/PfbCapabilityMap.json or tools/specs/ not present (run Update-PfbApiSpecs.ps1 and Build-PfbCapabilityMap.ps1 first)' + return + } + + . (Join-Path $repoRoot 'tools/lib/PfbSpecTools.ps1') + + $specFiles = Get-ChildItem -Path $realSpecsDir -Filter 'fb*.json' | Where-Object { $_.BaseName -match '^fb(\d+)\.(\d+)$' } + if (-not $specFiles) { + Set-ItResult -Skipped -Because 'No cached spec files found under tools/specs/' + return + } + $newest = $specFiles | ForEach-Object { + $null = $_.BaseName -match '^fb(\d+)\.(\d+)$' + [PSCustomObject]@{ File = $_; Major = [int]$Matches[1]; Minor = [int]$Matches[2] } + } | Sort-Object Major, Minor | Select-Object -Last 1 + + $spec = Get-Content -Path $newest.File.FullName -Raw | ConvertFrom-Json -Depth 64 + $capabilities = Get-PfbSpecCapabilities -Spec $spec + $manifest = Get-Content -Path $realManifestPath -Raw | ConvertFrom-Json -Depth 20 + $manifestKeys = [System.Collections.Generic.HashSet[string]]::new([string[]]$manifest.endpoints.PSObject.Properties.Name) + + $missing = $capabilities | ForEach-Object { "$($_.Method) $($_.Path)" } | Where-Object { -not $manifestKeys.Contains($_) } + + $missing | Should -BeNullOrEmpty -Because "these endpoints exist in the newest spec but are missing from the manifest: $($missing -join ', ')" + } +} diff --git a/Tests/Build-PfbFieldCmdletMap.Tests.ps1 b/Tests/Build-PfbFieldCmdletMap.Tests.ps1 new file mode 100644 index 0000000..e56c625 --- /dev/null +++ b/Tests/Build-PfbFieldCmdletMap.Tests.ps1 @@ -0,0 +1,299 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Unit tests for tools/Build-PfbFieldCmdletMap.ps1's classification logic, against + small synthetic inventory + spec fixtures. Also includes one real-artifact check that + skips gracefully if tools/specs/ isn't present, matching + Tests/Build-PfbValueEnumMap.Tests.ps1's convention. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + . (Join-Path $repoRoot 'tools/lib/PfbSpecTools.ps1') + . (Join-Path $repoRoot 'tools/lib/PfbValueEnumTools.ps1') + . (Join-Path $repoRoot 'tools/lib/PfbCmdletParamTools.ps1') + $script:buildScript = Join-Path $repoRoot 'tools/Build-PfbFieldCmdletMap.ps1' + + $script:specsDir = Join-Path $TestDrive 'specs' + New-Item -ItemType Directory -Path $specsDir -Force | Out-Null + + # Two versions: v1 introduces both a stable field (present unchanged in both versions) + # and a field whose value set changes between versions (must NOT be recommended + # ValidateSet even though it has full history). v-only-in-2 exists only in the newer + # version (short history) and must also fall back to ArgumentCompleter. + $specV1 = @{ + components = @{ + schemas = @{ + Widget = @{ + properties = @{ + stable_field = @{ description = 'Valid values are `a`, `b`.' } + changing_field = @{ description = 'Valid values are `x`, `y`.' } + collision_field = @{ description = 'Valid values are `m`, `n`.' } + } + } + WidgetSpecial = @{ + properties = @{ + # Same wire name as Widget.collision_field, different value set, + # and "WidgetSpecial" still prefix-matches the "Widget" resource + # hint -- must produce 'collision', not a guessed pick. + collision_field = @{ description = 'Valid values are `m`, `o`.' } + } + } + OtherThing = @{ + properties = @{ + # Real field, but under a schema the "Widget" hint never matches -- + # must produce 'not-found-in-resource', not a false match. + elsewhere_field = @{ description = 'Valid values are `q`, `r`.' } + } + } + } + # Reproduces the real Get-PfbArraySpace -Type bug pattern: Kind='parameter' + # records are keyed by an OpenAPI components.parameters dictionary name with + # NO relationship to the owning resource/cmdlet, so the resource-hint filter + # (built for schema keys) can never match them. Two distinct + # components.parameters definitions can share the same wire "name" -- if + # they disagree on value set, the field is genuinely ambiguous (collision); + # if they agree, it's safe to resolve regardless of which definition this + # cmdlet's endpoint actually references (matched). + parameters = @{ + ParamKindAmbiguousA = @{ name = 'param_kind_ambiguous'; description = 'Valid values are `t1`, `t2`.' } + ParamKindAmbiguousB = @{ name = 'param_kind_ambiguous'; description = 'Valid values are `t1`, `t3`.' } + ParamKindConsistentA = @{ name = 'param_kind_consistent'; description = 'Valid values are `k1`, `k2`.' } + ParamKindConsistentB = @{ name = 'param_kind_consistent'; description = 'Valid values are `k1`, `k2`.' } + # Reproduces the real Get-PfbArraySpace -Type bug exactly: two + # components.parameters definitions share wire name 'endpoint_field' with + # DIFFERENT value sets (ambiguous on their own), but one specific endpoint + # (GET /widgets/endpoint below) inline-defines the SAME field with a value + # set matching EndpointFieldA -- an inline-parameter record keyed to that + # exact endpoint, which must resolve the field despite the param-kind + # ambiguity, not report 'collision'. + EndpointFieldA = @{ name = 'endpoint_field'; description = 'Valid values are `e1`, `e2`.' } + EndpointFieldB = @{ name = 'endpoint_field'; description = 'Valid values are `e1`, `e3`.' } + } + } + paths = @{ + '/api/1.0/widgets/endpoint' = @{ + get = @{ + parameters = @( + @{ name = 'endpoint_field'; 'in' = 'query'; description = 'Valid values are `e1`, `e2`.' } + ) + } + } + } + } + $specV2 = @{ + components = @{ + schemas = @{ + Widget = @{ + properties = @{ + stable_field = @{ description = 'Valid values are `a`, `b`.' } + changing_field = @{ description = 'Valid values are `x`, `y`, `z`.' } + new_in_v2 = @{ description = 'Valid values are `p`, `q`.' } + collision_field = @{ description = 'Valid values are `m`, `n`.' } + } + } + WidgetSpecial = @{ + properties = @{ + collision_field = @{ description = 'Valid values are `m`, `o`.' } + } + } + OtherThing = @{ + properties = @{ + elsewhere_field = @{ description = 'Valid values are `q`, `r`.' } + } + } + } + parameters = @{ + ParamKindAmbiguousA = @{ name = 'param_kind_ambiguous'; description = 'Valid values are `t1`, `t2`.' } + ParamKindAmbiguousB = @{ name = 'param_kind_ambiguous'; description = 'Valid values are `t1`, `t3`.' } + ParamKindConsistentA = @{ name = 'param_kind_consistent'; description = 'Valid values are `k1`, `k2`.' } + ParamKindConsistentB = @{ name = 'param_kind_consistent'; description = 'Valid values are `k1`, `k2`.' } + # Reproduces the real Get-PfbArraySpace -Type bug exactly: two + # components.parameters definitions share wire name 'endpoint_field' with + # DIFFERENT value sets (ambiguous on their own), but one specific endpoint + # (GET /widgets/endpoint below) inline-defines the SAME field with a value + # set matching EndpointFieldA -- an inline-parameter record keyed to that + # exact endpoint, which must resolve the field despite the param-kind + # ambiguity, not report 'collision'. + EndpointFieldA = @{ name = 'endpoint_field'; description = 'Valid values are `e1`, `e2`.' } + EndpointFieldB = @{ name = 'endpoint_field'; description = 'Valid values are `e1`, `e3`.' } + } + } + paths = @{ + '/api/1.1/widgets/endpoint' = @{ + get = @{ + parameters = @( + @{ name = 'endpoint_field'; 'in' = 'query'; description = 'Valid values are `e1`, `e2`.' } + ) + } + } + } + } + $specV1 | ConvertTo-Json -Depth 20 | Set-Content -Path (Join-Path $specsDir 'fb1.0.json') + $specV2 | ConvertTo-Json -Depth 20 | Set-Content -Path (Join-Path $specsDir 'fb1.1.json') + + $script:publicDir = Join-Path $TestDrive 'Public' + New-Item -ItemType Directory -Path $publicDir -Force | Out-Null + # Cmdlet is named "New-PfbWidget" (not "New-PfbFixtureWidget") deliberately: the + # resource-hint resolver strips the "New-Pfb" verb prefix to get "Widget", which must + # prefix-match the fixture spec's "Widget.stable_field" etc. schema keys below. + Set-Content -Path (Join-Path $publicDir 'New-PfbWidget.ps1') -Value @' +function New-PfbWidget { + param( + [Parameter()] [string]$StableField, + [Parameter()] [string]$ChangingField, + [Parameter()] [string]$NewInV2, + [Parameter()] [string]$CollisionField, + [Parameter()] [string]$ElsewhereField, + [Parameter()] [string]$NoSpecField, + [Parameter()] [string]$ParamKindField, + [Parameter()] [string]$ParamKindConsistentField, + [Parameter()] [string]$EndpointField, + [Parameter()] [PSCustomObject]$Array + ) + $body = @{} + if ($StableField) { $body["stable_field"] = $StableField } + if ($ChangingField) { $body["changing_field"] = $ChangingField } + if ($NewInV2) { $body["new_in_v2"] = $NewInV2 } + if ($CollisionField) { $body["collision_field"] = $CollisionField } + if ($ElsewhereField) { $body["elsewhere_field"] = $ElsewhereField } + if ($NoSpecField) { $body["totally_unknown_field"] = $NoSpecField } + if ($ParamKindField) { $body["param_kind_ambiguous"] = $ParamKindField } + if ($ParamKindConsistentField) { $body["param_kind_consistent"] = $ParamKindConsistentField } + $queryParams = @{} + if ($EndpointField) { $queryParams["endpoint_field"] = $EndpointField } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'widgets/endpoint' -Body $body -QueryParams $queryParams +} +'@ + + $script:outputDir = Join-Path $TestDrive 'output' + $script:manifestPath = Join-Path $outputDir 'map.json' + $script:reportPath = Join-Path $outputDir 'report.md' + + & $buildScript -SpecsDirectory $specsDir -PublicDirectory $publicDir -OutputPath $manifestPath -ReportPath $reportPath + $script:manifest = Get-Content -Path $manifestPath -Raw | ConvertFrom-Json -Depth 20 +} + +Describe 'Build-PfbFieldCmdletMap' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + It 'recommends ValidateSet only for a field with full version history and no value-set changes' { + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'StableField' } + $rec.status | Should -Be 'matched' + $rec.stableSinceOldestVersion | Should -BeTrue + $rec.recommendation | Should -Be 'ValidateSet' + } + + It 'recommends ArgumentCompleter for a field with full history but a value-set change' { + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'ChangingField' } + $rec.status | Should -Be 'matched' + $rec.stableSinceOldestVersion | Should -BeFalse + $rec.recommendation | Should -Be 'ArgumentCompleter' + } + + It 'recommends ArgumentCompleter for a field introduced only in the newest version' { + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'NewInV2' } + $rec.status | Should -Be 'matched' + $rec.stableSinceOldestVersion | Should -BeFalse + $rec.recommendation | Should -Be 'ArgumentCompleter' + } + + It 'writes the reconciliation-style Markdown report' { + Test-Path $reportPath | Should -BeTrue + (Get-Content $reportPath -Raw) | Should -Match 'ValidateSet' + } + + It 'includes a Summary section with correct per-status counts for the fixture set' { + $reportText = Get-Content $reportPath -Raw + $reportText | Should -Match '## Summary' + # Fixture distribution: matched = StableField, ChangingField, NewInV2, + # ParamKindConsistentField, EndpointField (5); collision = CollisionField, + # ParamKindField (2); not-found-in-resource = ElsewhereField (1); + # no-spec-enum-found = NoSpecField (1). + $reportText | Should -Match '- matched: 5' + $reportText | Should -Match '- collision: 2' + $reportText | Should -Match '- not-found-in-resource: 1' + $reportText | Should -Match '- no-spec-enum-found: 1' + } + + It 'does not emit the zero-matched note when matched candidates exist' { + (Get-Content $reportPath -Raw) | Should -Not -Match 'No `matched` candidates this run' + } + + It 'omits no-spec-enum-found rows from the detailed table but keeps matched/collision/not-found-in-resource rows' { + $reportText = Get-Content $reportPath -Raw + $reportText | Should -Not -Match '\| `New-PfbWidget` \| `-NoSpecField` \|' + $reportText | Should -Match '\| `New-PfbWidget` \| `-StableField` \|' + $reportText | Should -Match '\| `New-PfbWidget` \| `-CollisionField` \|' + $reportText | Should -Match '\| `New-PfbWidget` \| `-ElsewhereField` \|' + } + + It 'classifies a wire name matching multiple hinted schemas with different value sets as collision, not a guess' { + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'CollisionField' } + $rec.status | Should -Be 'collision' + $rec.recommendation | Should -BeNullOrEmpty + $rec.matchedKey | Should -BeNullOrEmpty + } + + It 'classifies a wire name found only under an unrelated schema as not-found-in-resource, not a false match' { + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'ElsewhereField' } + $rec.status | Should -Be 'not-found-in-resource' + $rec.recommendation | Should -BeNullOrEmpty + } + + It 'classifies a wire name absent from the spec entirely as no-spec-enum-found' { + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'NoSpecField' } + $rec.status | Should -Be 'no-spec-enum-found' + $rec.recommendation | Should -BeNullOrEmpty + } + + It 'classifies a parameter-kind wire name with disagreeing value sets across components.parameters definitions as collision, not not-found-in-resource' { + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'ParamKindField' } + $rec.status | Should -Be 'collision' + $rec.recommendation | Should -BeNullOrEmpty + $rec.matchedKey | Should -BeNullOrEmpty + } + + It 'resolves a parameter-kind wire name to matched when every components.parameters definition sharing it agrees on the same value set' { + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'ParamKindConsistentField' } + $rec.status | Should -Be 'matched' + $rec.specValues | Should -Be @('k1', 'k2') + } + + It 'resolves the real Get-PfbArraySpace -Type shape: an exact inline-parameter endpoint match overrides an otherwise-ambiguous parameter-kind wire name' { + # EndpointFieldA/EndpointFieldB disagree on value set (like Type/Type_for_performance) + # -- would be 'collision' on their own -- but New-PfbWidget's -EndpointField resolves + # to exactly one Invoke-PfbApiRequest call (GET widgets/endpoint), matching an + # inline-parameter record keyed to that exact endpoint, which settles it. + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'EndpointField' } + $rec.status | Should -Be 'matched' + $rec.specValues | Should -Be @('e1', 'e2') + $rec.stableSinceOldestVersion | Should -BeTrue + $rec.recommendation | Should -Be 'ValidateSet' + } + + It 'still reports collision for an ambiguous parameter-kind wire name when no inline-parameter record matches this cmdlet''s own endpoint' { + # ParamKindField's cmdlet (New-PfbWidget) DOES now resolve an Endpoint/Method (GET + # widgets/endpoint, shared with -EndpointField above) -- but no inline-parameter + # record exists keyed "GET widgets/endpoint#param_kind_ambiguous", so the exact-match + # override never applies here and the pre-existing ambiguous-collision behavior for + # parameter-kind records must still hold. + $rec = $manifest.entries | Where-Object { $_.parameter -eq 'ParamKindField' } + $rec.status | Should -Be 'collision' + $rec.recommendation | Should -BeNullOrEmpty + } +} + +Describe 'Build-PfbFieldCmdletMap (real generated artifacts, skips gracefully if absent)' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + It 'produces a manifest against the real Public/ tree and tools/specs/ cache' { + $realSpecsDir = Join-Path $repoRoot 'tools/specs' + $realPublicDir = Join-Path $repoRoot 'Public' + if (-not (Test-Path $realSpecsDir) -or -not (Get-ChildItem $realSpecsDir -Filter 'fb*.json' -ErrorAction SilentlyContinue)) { + Set-ItResult -Skipped -Because 'tools/specs/ not present locally (gitignored, run Update-PfbApiSpecs.ps1 first)' + return + } + + $realOutput = Join-Path $TestDrive 'realOutput/map.json' + $realReport = Join-Path $TestDrive 'realOutput/report.md' + & $buildScript -SpecsDirectory $realSpecsDir -PublicDirectory $realPublicDir -OutputPath $realOutput -ReportPath $realReport + Test-Path $realOutput | Should -BeTrue + } +} diff --git a/Tests/Build-PfbValueEnumMap.Tests.ps1 b/Tests/Build-PfbValueEnumMap.Tests.ps1 new file mode 100644 index 0000000..eea8491 --- /dev/null +++ b/Tests/Build-PfbValueEnumMap.Tests.ps1 @@ -0,0 +1,256 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Integration tests for tools/Build-PfbValueEnumMap.ps1 against small synthetic spec + fixtures (no dependency on the real cached specs in tools/specs/), plus a shape/ + regression check of the real committed manifest when present. +.DESCRIPTION + Every invocation below passes explicit -OutputPath AND -ReconciliationPath under + TestDrive: — never let the script fall back to its real-repo defaults, or running + these tests would overwrite Reports/PfbValueEnumMap.json and + Reports/PfbValueEnumReconciliation.md as a side effect. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + $script:builderScript = Join-Path $repoRoot 'tools/Build-PfbValueEnumMap.ps1' +} + +Describe 'Build-PfbValueEnumMap: introduced-in diffing and value tracking' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + BeforeAll { + New-Item -ItemType Directory -Path 'TestDrive:\specs' -Force | Out-Null + + # v9.0: Widget.color has a two-value enum; a squash-mode-style pair of schemas + # (WidgetA/WidgetB) share a property name with different value lists. + $specV1 = [ordered]@{ + openapi = '3.0.1' + info = @{ version = '9.0' } + paths = [ordered]@{} + components = [ordered]@{ + schemas = [ordered]@{ + Widget = [ordered]@{ + type = 'object' + properties = [ordered]@{ + color = @{ type = 'string'; description = 'The widget color. Valid values are `red`, `blue`.' } + } + } + WidgetA = [ordered]@{ + type = 'object' + properties = [ordered]@{ + mode = @{ type = 'string'; description = 'Valid values are `on`, `off`.' } + } + } + WidgetB = [ordered]@{ + type = 'object' + properties = [ordered]@{ + mode = @{ type = 'string'; description = 'Valid values are `enabled`, `disabled`.' } + } + } + } + parameters = [ordered]@{} + } + } + + # v9.1: Widget.color gains a third value (green); a brand-new Gadget.kind enum + # appears; a numeric-range description that matches the trigger phrase but is + # not a real enum is introduced (must land in "unparsed", not silently dropped). + $specV2 = [ordered]@{ + openapi = '3.0.1' + info = @{ version = '9.1' } + paths = [ordered]@{} + components = [ordered]@{ + schemas = [ordered]@{ + Widget = [ordered]@{ + type = 'object' + properties = [ordered]@{ + color = @{ type = 'string'; description = 'The widget color. Valid values are `red`, `blue`, and `green`.' } + } + } + WidgetA = [ordered]@{ + type = 'object' + properties = [ordered]@{ + mode = @{ type = 'string'; description = 'Valid values are `on`, `off`.' } + } + } + WidgetB = [ordered]@{ + type = 'object' + properties = [ordered]@{ + mode = @{ type = 'string'; description = 'Valid values are `enabled`, `disabled`.' } + } + } + Gadget = [ordered]@{ + type = 'object' + properties = [ordered]@{ + kind = @{ type = 'string'; description = 'Valid values are `small`, `large`.' } + timeout = @{ type = 'integer'; description = "Valid values are`nin the range of 1000 and 60000." } + } + } + } + parameters = [ordered]@{} + } + } + + $specV1 | ConvertTo-Json -Depth 20 | Set-Content -Path 'TestDrive:\specs\fb9.0.json' + $specV2 | ConvertTo-Json -Depth 20 | Set-Content -Path 'TestDrive:\specs\fb9.1.json' + + & $builderScript -SpecsDirectory 'TestDrive:\specs' -OutputPath 'TestDrive:\output\map.json' -ReconciliationPath 'TestDrive:\output\reconciliation.md' + $script:manifest = Get-Content -Path 'TestDrive:\output\map.json' -Raw | ConvertFrom-Json -Depth 20 + } + + It 'records generatedFrom in ascending version order' { + $manifest.generatedFrom | Should -Be @('9.0', '9.1') + } + + It 'attributes an entry present since the earliest version to that version, but reports the newest values' { + $manifest.entries.'Widget.color'.minVersion | Should -Be '9.0' + $manifest.entries.'Widget.color'.values | Should -Be @('red', 'blue', 'green') + } + + It 'attributes a brand-new entry to the version it first appears in' { + $manifest.entries.'Gadget.kind'.minVersion | Should -Be '9.1' + $manifest.entries.'Gadget.kind'.values | Should -Be @('small', 'large') + } + + It 'never collapses two schemas sharing a property name into one entry (squash-mode gotcha)' { + $manifest.entries.'WidgetA.mode'.values | Should -Be @('on', 'off') + $manifest.entries.'WidgetB.mode'.values | Should -Be @('enabled', 'disabled') + } + + It 'tracks a trigger-matching but non-enumerable description as unparsed rather than dropping it' { + $manifest.unparsedCount | Should -BeGreaterThan 0 + $unparsedKeys = $manifest.unparsed | ForEach-Object { $_.key } + $unparsedKeys | Should -Contain 'Gadget.timeout' + } + + It 'reports entryCount matching the actual number of entries' { + $manifest.entryCount | Should -Be $manifest.entries.PSObject.Properties.Name.Count + } + + It 'reports unparsedCount matching the actual number of unparsed records' { + $manifest.unparsedCount | Should -Be @($manifest.unparsed).Count + } +} + +Describe 'Build-PfbValueEnumMap: manifest shape' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + BeforeAll { + New-Item -ItemType Directory -Path 'TestDrive:\shapeSpecs' -Force | Out-Null + $spec = [ordered]@{ + openapi = '3.0.1' + info = @{ version = '9.0' } + paths = [ordered]@{} + components = [ordered]@{ + schemas = [ordered]@{ + Widget = [ordered]@{ + type = 'object' + properties = [ordered]@{ + color = @{ type = 'string'; description = 'Valid values are `red`, `blue`.' } + } + } + } + parameters = [ordered]@{} + } + } + $spec | ConvertTo-Json -Depth 20 | Set-Content -Path 'TestDrive:\shapeSpecs\fb9.0.json' + + & $builderScript -SpecsDirectory 'TestDrive:\shapeSpecs' -OutputPath 'TestDrive:\shapeOutput\map.json' -ReconciliationPath 'TestDrive:\shapeOutput\reconciliation.md' + $script:shapeManifest = Get-Content -Path 'TestDrive:\shapeOutput\map.json' -Raw | ConvertFrom-Json -Depth 20 + } + + It 'has the required top-level keys' { + $shapeManifest.PSObject.Properties.Name | Should -Contain 'schemaVersion' + $shapeManifest.PSObject.Properties.Name | Should -Contain 'generatedFrom' + $shapeManifest.PSObject.Properties.Name | Should -Contain 'entryCount' + $shapeManifest.PSObject.Properties.Name | Should -Contain 'unparsedCount' + $shapeManifest.PSObject.Properties.Name | Should -Contain 'entries' + $shapeManifest.PSObject.Properties.Name | Should -Contain 'unparsed' + } + + It 'writes a reconciliation report file' { + Test-Path 'TestDrive:\shapeOutput\reconciliation.md' | Should -BeTrue + (Get-Content 'TestDrive:\shapeOutput\reconciliation.md' -Raw) | Should -Match 'Value-Enum Reconciliation Report' + } + + It 'throws a clear error when no cached specs are present' { + New-Item -ItemType Directory -Path 'TestDrive:\emptySpecs' -Force | Out-Null + { & $builderScript -SpecsDirectory 'TestDrive:\emptySpecs' -OutputPath 'TestDrive:\emptyOutput\map.json' -ReconciliationPath 'TestDrive:\emptyOutput\reconciliation.md' } | + Should -Throw '*No cached specs found*' + } +} + +Describe 'Real committed value-enum map (skips gracefully if not yet generated)' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + $script:realManifestPath = Join-Path $repoRoot 'Reports/PfbValueEnumMap.json' + $script:realSpecsDir = Join-Path $repoRoot 'tools/specs' + } + + It 'Bucket.versioning regression: extracts exactly [none, enabled, suspended] with no per-value version claim' { + if (-not (Test-Path $realManifestPath)) { + Set-ItResult -Skipped -Because 'Reports/PfbValueEnumMap.json not present (run Build-PfbValueEnumMap.ps1 first)' + return + } + + $manifest = Get-Content -Path $realManifestPath -Raw | ConvertFrom-Json -Depth 20 + $manifest.entries.'Bucket.versioning' | Should -Not -BeNullOrEmpty + $manifest.entries.'Bucket.versioning'.values | Should -Be @('none', 'enabled', 'suspended') + } + + It 'never collapses NfsExportPolicyRuleBase.access and the presets-only variant into one entry (squash-mode gotcha)' { + if (-not (Test-Path $realManifestPath)) { + Set-ItResult -Skipped -Because 'Reports/PfbValueEnumMap.json not present (run Build-PfbValueEnumMap.ps1 first)' + return + } + + $manifest = Get-Content -Path $realManifestPath -Raw | ConvertFrom-Json -Depth 20 + $base = $manifest.entries.'NfsExportPolicyRuleBase.access' + $preset = $manifest.entries.'_presetWorkloadExportConfigurationNfsRule.access' + + $base | Should -Not -BeNullOrEmpty + $preset | Should -Not -BeNullOrEmpty + $base.values | Should -Contain 'no-squash' + $preset.values | Should -Contain 'no-root-squash' + ($base.values -join ',') | Should -Not -Be ($preset.values -join ',') + } + + It 'meets the acceptance-criteria entry-count floor and reports unparsedCount as a first-class field' { + if (-not (Test-Path $realManifestPath)) { + Set-ItResult -Skipped -Because 'Reports/PfbValueEnumMap.json not present (run Build-PfbValueEnumMap.ps1 first)' + return + } + + $manifest = Get-Content -Path $realManifestPath -Raw | ConvertFrom-Json -Depth 20 + $manifest.entryCount | Should -BeGreaterOrEqual 100 + $manifest.PSObject.Properties.Name | Should -Contain 'unparsedCount' + @($manifest.unparsed).Count | Should -Be $manifest.unparsedCount + } + + It 'every (schema, property) value-enum extractable from the newest cached spec is represented in the manifest' { + if (-not (Test-Path $realManifestPath) -or -not (Test-Path $realSpecsDir)) { + Set-ItResult -Skipped -Because 'Reports/PfbValueEnumMap.json or tools/specs/ not present (run Update-PfbApiSpecs.ps1 and Build-PfbValueEnumMap.ps1 first)' + return + } + + . (Join-Path $repoRoot 'tools/lib/PfbSpecTools.ps1') + . (Join-Path $repoRoot 'tools/lib/PfbValueEnumTools.ps1') + + $specFiles = Get-ChildItem -Path $realSpecsDir -Filter 'fb*.json' | Where-Object { $_.BaseName -match '^fb(\d+)\.(\d+)$' } + if (-not $specFiles) { + Set-ItResult -Skipped -Because 'No cached spec files found under tools/specs/' + return + } + $newest = $specFiles | ForEach-Object { + $null = $_.BaseName -match '^fb(\d+)\.(\d+)$' + [PSCustomObject]@{ File = $_; Major = [int]$Matches[1]; Minor = [int]$Matches[2] } + } | Sort-Object Major, Minor | Select-Object -Last 1 + + $spec = Get-Content -Path $newest.File.FullName -Raw | ConvertFrom-Json -Depth 64 + $valueEnums = Get-PfbSpecValueEnums -Spec $spec + $manifest = Get-Content -Path $realManifestPath -Raw | ConvertFrom-Json -Depth 20 + $entryKeys = [System.Collections.Generic.HashSet[string]]::new([string[]]$manifest.entries.PSObject.Properties.Name) + $unparsedKeys = [System.Collections.Generic.HashSet[string]]::new([string[]]($manifest.unparsed | ForEach-Object { $_.key })) + + $missing = $valueEnums | ForEach-Object { $_.Key } | Where-Object { -not $entryKeys.Contains($_) -and -not $unparsedKeys.Contains($_) } + + $missing | Should -BeNullOrEmpty -Because "these value enums exist in the newest spec but are represented in neither entries nor unparsed: $($missing -join ', ')" + } +} diff --git a/Tests/Fixtures/sample-redoc-page.html b/Tests/Fixtures/sample-redoc-page.html new file mode 100644 index 0000000..c34d000 --- /dev/null +++ b/Tests/Fixtures/sample-redoc-page.html @@ -0,0 +1,14 @@ + + +FlashBlade REST API Reference (fixture) + +
+ + + diff --git a/Tests/Get-PfbArrayConnectionPerformanceReplication.Tests.ps1 b/Tests/Get-PfbArrayConnectionPerformanceReplication.Tests.ps1 new file mode 100644 index 0000000..bb88497 --- /dev/null +++ b/Tests/Get-PfbArrayConnectionPerformanceReplication.Tests.ps1 @@ -0,0 +1,39 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + Import-Module "$PSScriptRoot/../PureStorageFlashBladePowerShell.psd1" -Force + $script:fakeArray = [PSCustomObject]@{ Endpoint = 'fb.example.test'; ApiVersion = '2.0'; AuthToken = 'x' } +} + +Describe 'Get-PfbArrayConnectionPerformanceReplication' { + BeforeEach { + Mock -ModuleName PureStorageFlashBladePowerShell Assert-PfbConnection { } + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-PfbApiRequest { } + } + + It 'restricts -Type to the three real spec-documented values' { + $attr = (Get-Command Get-PfbArrayConnectionPerformanceReplication).Parameters['Type'].Attributes | + Where-Object { $_ -is [System.Management.Automation.ValidateSetAttribute] } + $attr | Should -Not -BeNullOrEmpty + $attr.ValidValues | Should -Be @('all', 'file-system', 'object-store') + } + + It 'rejects an invalid -Type value before making any API call' { + { Get-PfbArrayConnectionPerformanceReplication -Type 'bogus' -Array $fakeArray } | Should -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'passes a valid -Type through to the query string' { + Get-PfbArrayConnectionPerformanceReplication -Type 'file-system' -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $Method -eq 'GET' -and $Endpoint -eq 'array-connections/performance/replication' -and $QueryParams['type'] -eq 'file-system' + } + } + + It 'omits -Type from the query string when not specified' { + Get-PfbArrayConnectionPerformanceReplication -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + -not $QueryParams.ContainsKey('type') + } + } +} diff --git a/Tests/Get-PfbArrayPerformanceReplication.Tests.ps1 b/Tests/Get-PfbArrayPerformanceReplication.Tests.ps1 new file mode 100644 index 0000000..494a33d --- /dev/null +++ b/Tests/Get-PfbArrayPerformanceReplication.Tests.ps1 @@ -0,0 +1,39 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + Import-Module "$PSScriptRoot/../PureStorageFlashBladePowerShell.psd1" -Force + $script:fakeArray = [PSCustomObject]@{ Endpoint = 'fb.example.test'; ApiVersion = '2.0'; AuthToken = 'x' } +} + +Describe 'Get-PfbArrayPerformanceReplication' { + BeforeEach { + Mock -ModuleName PureStorageFlashBladePowerShell Assert-PfbConnection { } + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-PfbApiRequest { } + } + + It 'restricts -Type to the three real spec-documented values' { + $attr = (Get-Command Get-PfbArrayPerformanceReplication).Parameters['Type'].Attributes | + Where-Object { $_ -is [System.Management.Automation.ValidateSetAttribute] } + $attr | Should -Not -BeNullOrEmpty + $attr.ValidValues | Should -Be @('all', 'file-system', 'object-store') + } + + It 'rejects an invalid -Type value before making any API call' { + { Get-PfbArrayPerformanceReplication -Type 'bogus' -Array $fakeArray } | Should -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'passes a valid -Type through to the query string' { + Get-PfbArrayPerformanceReplication -Type 'file-system' -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $Method -eq 'GET' -and $Endpoint -eq 'arrays/performance/replication' -and $QueryParams['type'] -eq 'file-system' + } + } + + It 'omits -Type from the query string when not specified' { + Get-PfbArrayPerformanceReplication -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + -not $QueryParams.ContainsKey('type') + } + } +} diff --git a/Tests/Get-PfbCapabilityMap.Tests.ps1 b/Tests/Get-PfbCapabilityMap.Tests.ps1 new file mode 100644 index 0000000..c4aa9eb --- /dev/null +++ b/Tests/Get-PfbCapabilityMap.Tests.ps1 @@ -0,0 +1,53 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + $moduleRoot = Split-Path -Parent $PSScriptRoot + $manifest = Join-Path $moduleRoot 'PureStorageFlashBladePowerShell.psd1' + Import-Module $manifest -Force + + $script:originalModuleRoot = InModuleScope PureStorageFlashBladePowerShell { $script:PfbModuleRoot } +} + +Describe 'Get-PfbCapabilityMap' { + AfterEach { + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = $script:originalModuleRoot } { + $script:PfbCapabilityMap = $null + $script:PfbModuleRoot = $root + } + } + + It 'loads and returns the manifest from Data/PfbCapabilityMap.json under the module root' { + New-Item -ItemType Directory -Path 'TestDrive:\Data' -Force | Out-Null + [PSCustomObject]@{ + schemaVersion = 1 + endpoints = [PSCustomObject]@{ 'GET /widgets' = [PSCustomObject]@{ minVersion = '9.0' } } + } | ConvertTo-Json -Depth 10 | Set-Content -Path 'TestDrive:\Data\PfbCapabilityMap.json' + + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = 'TestDrive:\' } { + $script:PfbModuleRoot = $root + $result = Get-PfbCapabilityMap + $result.endpoints.'GET /widgets'.minVersion | Should -Be '9.0' + } + } + + It 'caches the loaded manifest -- a second call does not re-read the file' { + New-Item -ItemType Directory -Path 'TestDrive:\Data' -Force | Out-Null + [PSCustomObject]@{ schemaVersion = 1; endpoints = [PSCustomObject]@{} } | + ConvertTo-Json -Depth 10 | Set-Content -Path 'TestDrive:\Data\PfbCapabilityMap.json' + + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = 'TestDrive:\' } { + $script:PfbModuleRoot = $root + $first = Get-PfbCapabilityMap + Remove-Item -Path (Join-Path $root 'Data/PfbCapabilityMap.json') -Force + $second = Get-PfbCapabilityMap + [object]::ReferenceEquals($first, $second) | Should -BeTrue + } + } + + It 'returns $null gracefully when Data/PfbCapabilityMap.json does not exist' { + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = 'TestDrive:\empty' } { + $script:PfbModuleRoot = $root + Get-PfbCapabilityMap | Should -BeNullOrEmpty + } + } +} diff --git a/Tests/Get-PfbFileSystemSession.Tests.ps1 b/Tests/Get-PfbFileSystemSession.Tests.ps1 new file mode 100644 index 0000000..a0e0237 --- /dev/null +++ b/Tests/Get-PfbFileSystemSession.Tests.ps1 @@ -0,0 +1,50 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + Import-Module "$PSScriptRoot/../PureStorageFlashBladePowerShell.psd1" -Force + $script:fakeArray = [PSCustomObject]@{ Endpoint = 'fb.example.test'; ApiVersion = '2.0'; AuthToken = 'x' } +} + +Describe 'Get-PfbFileSystemSession' { + BeforeEach { + Mock -ModuleName PureStorageFlashBladePowerShell Assert-PfbConnection { } + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-PfbApiRequest { } + } + + It 'restricts -Protocol to the two real spec-documented values' { + $attr = (Get-Command Get-PfbFileSystemSession).Parameters['Protocol'].Attributes | + Where-Object { $_ -is [System.Management.Automation.ValidateSetAttribute] } + $attr | Should -Not -BeNullOrEmpty + $attr.ValidValues | Should -Be @('nfs', 'smb') + } + + It 'rejects an invalid -Protocol value before making any API call' { + { Get-PfbFileSystemSession -Protocol 'bogus' -Array $fakeArray } | Should -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'passes valid -Protocol values through to the query string, comma-joined' { + Get-PfbFileSystemSession -Protocol 'nfs', 'smb' -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $Method -eq 'GET' -and $Endpoint -eq 'file-systems/sessions' -and $QueryParams['protocols'] -eq 'nfs,smb' + } + } + + It 'omits -Protocol from the query string when not specified' { + Get-PfbFileSystemSession -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + -not $QueryParams.ContainsKey('protocols') + } + } + + It 'has no -Id parameter (the endpoint has no ids query parameter in any spec version)' { + (Get-Command Get-PfbFileSystemSession).Parameters.ContainsKey('Id') | Should -BeFalse + } + + It 'passes -Name through to the query string as the session''s own name filter' { + Get-PfbFileSystemSession -Name '22517998136858346-smb' -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $QueryParams['names'] -eq '22517998136858346-smb' + } + } +} diff --git a/Tests/Get-PfbPolicyAllMember.Tests.ps1 b/Tests/Get-PfbPolicyAllMember.Tests.ps1 new file mode 100644 index 0000000..a421935 --- /dev/null +++ b/Tests/Get-PfbPolicyAllMember.Tests.ps1 @@ -0,0 +1,50 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + Import-Module "$PSScriptRoot/../PureStorageFlashBladePowerShell.psd1" -Force + $script:fakeArray = [PSCustomObject]@{ Endpoint = 'fb.example.test'; ApiVersion = '2.0'; AuthToken = 'x' } +} + +Describe 'Get-PfbPolicyAllMember' { + BeforeEach { + Mock -ModuleName PureStorageFlashBladePowerShell Assert-PfbConnection { } + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-PfbApiRequest { } + } + + It '-MemberType offers tab-completion for all five known spec-documented values (not a hard ValidateSet, since the spec value set has grown over time)' { + $attr = (Get-Command Get-PfbPolicyAllMember).Parameters['MemberType'].Attributes | + Where-Object { $_ -is [System.Management.Automation.ArgumentCompleterAttribute] } + $attr | Should -Not -BeNullOrEmpty + + $validateSetAttr = (Get-Command Get-PfbPolicyAllMember).Parameters['MemberType'].Attributes | + Where-Object { $_ -is [System.Management.Automation.ValidateSetAttribute] } + $validateSetAttr | Should -BeNullOrEmpty + + $completions = & $attr.ScriptBlock 'Get-PfbPolicyAllMember' 'MemberType' '' $null @{} + ($completions | Sort-Object) | Should -Be (@( + 'file-systems', 'file-system-snapshots', 'file-system-replica-links', + 'object-store-users', 'object-store-accounts' + ) | Sort-Object) + } + + It 'does NOT reject a value outside the known completion list (non-exhaustive, no hard validation)' { + { Get-PfbPolicyAllMember -MemberType 'some-future-member-type' -Array $fakeArray } | Should -Not -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $QueryParams['member_types'] -eq 'some-future-member-type' + } + } + + It 'passes valid -MemberType values through to the query string, comma-joined' { + Get-PfbPolicyAllMember -MemberType 'file-systems', 'object-store-accounts' -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $Method -eq 'GET' -and $Endpoint -eq 'policies-all/members' -and $QueryParams['member_types'] -eq 'file-systems,object-store-accounts' + } + } + + It 'omits -MemberType from the query string when not specified' { + Get-PfbPolicyAllMember -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + -not $QueryParams.ContainsKey('member_types') + } + } +} diff --git a/Tests/Get-PfbVersionMap.Tests.ps1 b/Tests/Get-PfbVersionMap.Tests.ps1 new file mode 100644 index 0000000..e5be11a --- /dev/null +++ b/Tests/Get-PfbVersionMap.Tests.ps1 @@ -0,0 +1,51 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + $moduleRoot = Split-Path -Parent $PSScriptRoot + $manifest = Join-Path $moduleRoot 'PureStorageFlashBladePowerShell.psd1' + Import-Module $manifest -Force + + $script:originalModuleRoot = InModuleScope PureStorageFlashBladePowerShell { $script:PfbModuleRoot } +} + +Describe 'Get-PfbVersionMap' { + AfterEach { + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = $script:originalModuleRoot } { + $script:PfbVersionMap = $null + $script:PfbModuleRoot = $root + } + } + + It 'loads and returns the map from Data/PfbVersionMap.json under the module root' { + New-Item -ItemType Directory -Path 'TestDrive:\Data' -Force | Out-Null + [PSCustomObject]@{ '2.27' = [PSCustomObject]@{ purity = '4.8.3' } } | + ConvertTo-Json -Depth 10 | Set-Content -Path 'TestDrive:\Data\PfbVersionMap.json' + + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = 'TestDrive:\' } { + $script:PfbModuleRoot = $root + $result = Get-PfbVersionMap + $result.'2.27'.purity | Should -Be '4.8.3' + } + } + + It 'caches the loaded map -- a second call does not re-read the file' { + New-Item -ItemType Directory -Path 'TestDrive:\Data' -Force | Out-Null + [PSCustomObject]@{ '2.27' = [PSCustomObject]@{ purity = '4.8.3' } } | + ConvertTo-Json -Depth 10 | Set-Content -Path 'TestDrive:\Data\PfbVersionMap.json' + + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = 'TestDrive:\' } { + $script:PfbModuleRoot = $root + $first = Get-PfbVersionMap + Remove-Item -Path (Join-Path $root 'Data/PfbVersionMap.json') -Force + $second = Get-PfbVersionMap + [object]::ReferenceEquals($first, $second) | Should -BeTrue + } + } + + It 'returns $null gracefully when Data/PfbVersionMap.json does not exist' { + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = 'TestDrive:\empty' } { + $script:PfbModuleRoot = $root + Get-PfbVersionMap | Should -BeNullOrEmpty + } + } +} diff --git a/Tests/Invoke-PfbApiRequest.CapabilityCheck.Tests.ps1 b/Tests/Invoke-PfbApiRequest.CapabilityCheck.Tests.ps1 new file mode 100644 index 0000000..d388cfc --- /dev/null +++ b/Tests/Invoke-PfbApiRequest.CapabilityCheck.Tests.ps1 @@ -0,0 +1,81 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Confirms Invoke-PfbApiRequest's capability-check gate blocks incompatible calls before + any HTTP request is sent, and lets compatible calls through unchanged. +.DESCRIPTION + Injects a small synthetic capability map into module state rather than relying on the + real committed Data/PfbCapabilityMap.json, so this is independent of what the real map + currently contains. +#> + +BeforeAll { + Import-Module "$PSScriptRoot/../PureStorageFlashBladePowerShell.psd1" -Force + + $script:originalModuleRoot = InModuleScope PureStorageFlashBladePowerShell { $script:PfbModuleRoot } + + function New-TestConnection { + param([string]$ApiVersion = '2.20') + [PSCustomObject]@{ + Endpoint = 'fb.test' + ApiVersion = $ApiVersion + AuthToken = 'session-token' + BearerToken = $null + ApiToken = 'T-fake-token' + AuthMethod = 'ApiToken' + SkipCertificateCheck = $false + ConnectedAt = [datetime]::UtcNow + } + } +} + +Describe 'Invoke-PfbApiRequest - capability check gate' { + BeforeEach { + InModuleScope PureStorageFlashBladePowerShell { + $script:PfbCapabilityMap = [PSCustomObject]@{ + endpoints = [PSCustomObject]@{ + 'GET /file-systems' = [PSCustomObject]@{ + minVersion = '2.26' + parameters = [PSCustomObject]@{} + bodyProperties = [PSCustomObject]@{} + } + } + } + $script:PfbVersionMap = $null + } + } + + AfterEach { + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ root = $script:originalModuleRoot } { + $script:PfbCapabilityMap = $null + $script:PfbVersionMap = $null + $script:PfbModuleRoot = $root + } + } + + It 'throws before sending the request when the endpoint requires a newer REST version than the connected array' { + $array = New-TestConnection -ApiVersion '2.20' + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-RestMethod { throw 'should never be called' } + + { + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + Invoke-PfbApiRequest -Array $array -Method GET -Endpoint 'file-systems' + } + } | Should -Throw -ExpectedMessage '*requires REST 2.26*' + + Should -Invoke -ModuleName PureStorageFlashBladePowerShell Invoke-RestMethod -Times 0 + } + + It 'proceeds to send the request when the connected array meets the required version' { + $array = New-TestConnection -ApiVersion '2.26' + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-RestMethod { + [PSCustomObject]@{ items = @() } + } -ParameterFilter { $Uri -like '*file-systems*' } + + InModuleScope PureStorageFlashBladePowerShell -Parameters @{ array = $array } { + Invoke-PfbApiRequest -Array $array -Method GET -Endpoint 'file-systems' | Out-Null + } + + Should -Invoke -ModuleName PureStorageFlashBladePowerShell Invoke-RestMethod -Times 1 -Exactly + } +} diff --git a/Tests/Invoke-PfbNetworkTrace.Tests.ps1 b/Tests/Invoke-PfbNetworkTrace.Tests.ps1 new file mode 100644 index 0000000..64c5ae6 --- /dev/null +++ b/Tests/Invoke-PfbNetworkTrace.Tests.ps1 @@ -0,0 +1,39 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + Import-Module "$PSScriptRoot/../PureStorageFlashBladePowerShell.psd1" -Force + $script:fakeArray = [PSCustomObject]@{ Endpoint = 'fb.example.test'; ApiVersion = '2.0'; AuthToken = 'x' } +} + +Describe 'Invoke-PfbNetworkTrace' { + BeforeEach { + Mock -ModuleName PureStorageFlashBladePowerShell Assert-PfbConnection { } + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-PfbApiRequest { } + } + + It 'restricts -Method to the three real spec-documented values' { + $attr = (Get-Command Invoke-PfbNetworkTrace).Parameters['Method'].Attributes | + Where-Object { $_ -is [System.Management.Automation.ValidateSetAttribute] } + $attr | Should -Not -BeNullOrEmpty + $attr.ValidValues | Should -Be @('icmp', 'tcp', 'udp') + } + + It 'rejects an invalid -Method value before making any API call' { + { Invoke-PfbNetworkTrace -Destination '10.0.0.1' -Method 'bogus' -Array $fakeArray } | Should -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'passes a valid -Method through to the query string' { + Invoke-PfbNetworkTrace -Destination '10.0.0.1' -Method 'tcp' -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $Method -eq 'GET' -and $Endpoint -eq 'network-interfaces/trace' -and $QueryParams['method'] -eq 'tcp' + } + } + + It 'omits -Method from the query string when not specified' { + Invoke-PfbNetworkTrace -Destination '10.0.0.1' -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + -not $QueryParams.ContainsKey('method') + } + } +} diff --git a/Tests/PfbApiDriftTools.Tests.ps1 b/Tests/PfbApiDriftTools.Tests.ps1 new file mode 100644 index 0000000..601cbd1 --- /dev/null +++ b/Tests/PfbApiDriftTools.Tests.ps1 @@ -0,0 +1,258 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Unit tests for tools/lib/PfbApiDriftTools.ps1 -- category 1 (uncovered endpoints) and + category 2 (parameter gaps) of the API drift report. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + . (Join-Path $repoRoot 'tools/lib/PfbApiDriftTools.ps1') + + $script:publicFixtureDir = Join-Path $TestDrive 'Public/Fixture' + $script:privateFixtureDir = Join-Path $TestDrive 'Private' + New-Item -ItemType Directory -Path $publicFixtureDir -Force | Out-Null + New-Item -ItemType Directory -Path $privateFixtureDir -Force | Out-Null + + Set-Content -Path (Join-Path $publicFixtureDir 'Get-PfbFixtureWidget.ps1') -Value @' +function Get-PfbFixtureWidget { + [CmdletBinding()] + param([Parameter()] [PSCustomObject]$Array, [Parameter()] [string]$Name) + $queryParams = @{} + if ($Name) { $queryParams['name'] = $Name } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'widgets' -QueryParams $queryParams -AutoPaginate +} +'@ + + Set-Content -Path (Join-Path $publicFixtureDir 'Get-PfbFixtureDynamic.ps1') -Value @' +function Get-PfbFixtureDynamic { + [CmdletBinding()] + param([Parameter()] [PSCustomObject]$Array, [Parameter()] [string]$Kind) + $endpoint = "widgets/$Kind" + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint $endpoint -AutoPaginate +} +'@ + + # A Private/ helper that also happens to use the standard Invoke-PfbApiRequest + # convention -- Get-PfbModuleCalledEndpoints must scan Private/ too, not just Public/. + Set-Content -Path (Join-Path $privateFixtureDir 'Invoke-PfbFixtureInternalHelper.ps1') -Value @' +function Invoke-PfbFixtureInternalHelper { + [CmdletBinding()] + param([Parameter()] [PSCustomObject]$Array) + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'internal-only' -AutoPaginate +} +'@ + + $script:calledEndpoints = Get-PfbModuleCalledEndpoints -PublicDirectory $publicFixtureDir -PrivateDirectory $privateFixtureDir + + $script:capabilityMap = [PSCustomObject]@{ + endpoints = [PSCustomObject]@{ + 'GET /widgets' = [PSCustomObject]@{ minVersion = '2.0' } + 'GET /internal-only' = [PSCustomObject]@{ minVersion = '2.0' } + 'GET /gadgets' = [PSCustomObject]@{ minVersion = '2.20' } + 'POST /api/login' = [PSCustomObject]@{ minVersion = '2.26' } + } + } + + $script:capabilityMap.endpoints | Add-Member -NotePropertyName 'GET /arrays/space' -NotePropertyValue ([PSCustomObject]@{ + minVersion = '2.0' + parameters = [PSCustomObject]@{ type = '2.0'; new_field = '2.27'; 'X-Request-ID' = '2.12' } + bodyProperties = [PSCustomObject]@{} + }) + + $script:fullyMappedInventory = @( + [PSCustomObject]@{ Cmdlet = 'Get-PfbFixtureArraySpace'; Parameter = 'Type'; Surface = 'Typed'; WireName = 'type'; HasValidateSet = $false; ValidateSetValues = $null; Endpoint = 'arrays/space'; Method = 'GET' } + ) + $script:notFullyMappedInventory = @( + [PSCustomObject]@{ Cmdlet = 'Get-PfbFixtureWidget'; Parameter = 'Name'; Surface = 'Typed'; WireName = 'name'; HasValidateSet = $false; ValidateSetValues = $null; Endpoint = 'widgets'; Method = 'GET' } + [PSCustomObject]@{ Cmdlet = 'Get-PfbFixtureWidget'; Parameter = 'Attributes'; Surface = 'AttributesOnly'; WireName = $null; HasValidateSet = $false; ValidateSetValues = $null; Endpoint = $null; Method = $null } + ) + + $script:driftHistory = [ordered]@{ + 'ArrayPerformance.protocol' = [ordered]@{ + Name = 'protocol'; Kind = 'schema'; MinVersion = '2.0' + CurrentValues = @('all', 'nfs', 'smb', 'http', 's3') + DistinctValueSets = [System.Collections.Generic.HashSet[string]]::new([string[]]@('all,http,nfs,s3,smb')) + } + } + $script:driftInventory = @( + [PSCustomObject]@{ Cmdlet = 'Get-PfbArrayPerformance'; Parameter = 'Protocol'; Surface = 'Typed'; WireName = 'protocol'; HasValidateSet = $true; ValidateSetValues = @('nfs', 'smb', 'http', 's3'); Endpoint = 'arrays/performance'; Method = 'GET' } + ) +} + +Describe 'Get-PfbModuleCalledEndpoints' { + It 'resolves a literal -Method/-Endpoint pair to the capability-map key format' { + $rec = $calledEndpoints | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureWidget' } + $rec.Key | Should -Be 'GET /widgets' + $rec.Resolved | Should -BeTrue + } + + It 'scans Private/*.ps1 as well as Public/*.ps1' { + $rec = $calledEndpoints | Where-Object { $_.Cmdlet -eq 'Invoke-PfbFixtureInternalHelper' } + $rec.Key | Should -Be 'GET /internal-only' + } + + It 'marks a dynamically-built -Endpoint as unresolved, never silently dropped or guessed' { + $rec = $calledEndpoints | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureDynamic' } + $rec.Resolved | Should -BeFalse + $rec.Key | Should -BeNullOrEmpty + } +} + +Describe 'Get-PfbEndpointCoverageGaps' { + It 'flags a capability-map endpoint no cmdlet calls at all' { + $gaps = Get-PfbEndpointCoverageGaps -CapabilityMap $capabilityMap -CalledEndpoints $calledEndpoints + ($gaps | Where-Object { $_.Endpoint -eq 'GET /gadgets' }) | Should -Not -BeNullOrEmpty + } + + It 'does not flag an endpoint a fixture cmdlet already calls' { + $gaps = Get-PfbEndpointCoverageGaps -CapabilityMap $capabilityMap -CalledEndpoints $calledEndpoints + ($gaps | Where-Object { $_.Endpoint -eq 'GET /widgets' }) | Should -BeNullOrEmpty + } + + It 'excludes a bespoke-allowlisted endpoint even though no cmdlet calls it directly' { + $gaps = Get-PfbEndpointCoverageGaps -CapabilityMap $capabilityMap -CalledEndpoints $calledEndpoints -BespokeAllowlist @('POST /api/login') + ($gaps | Where-Object { $_.Endpoint -eq 'POST /api/login' }) | Should -BeNullOrEmpty + } + + It 'with -SinceVersion, excludes a gap endpoint introduced at or before that version' { + $gaps = Get-PfbEndpointCoverageGaps -CapabilityMap $capabilityMap -CalledEndpoints $calledEndpoints -SinceVersion '2.20' + ($gaps | Where-Object { $_.Endpoint -eq 'GET /gadgets' }) | Should -BeNullOrEmpty + } + + It 'with -SinceVersion, keeps a gap endpoint introduced after that version' { + $gaps = Get-PfbEndpointCoverageGaps -CapabilityMap $capabilityMap -CalledEndpoints $calledEndpoints -SinceVersion '2.20' + ($gaps | Where-Object { $_.Endpoint -eq 'POST /api/login' }) | Should -Not -BeNullOrEmpty + } +} + +Describe 'Bespoke auth-endpoint allowlist (real, confirmed by reading Private/ + Connect-PfbArray.ps1)' { + It 'contains exactly the four confirmed bespoke endpoints, no more, no fewer' { + $script:PfbBespokeAuthEndpoints | Sort-Object | Should -Be @( + 'GET /api/api_version', + 'POST /api/login', + 'POST /api/logout', + 'POST /oauth2/1.0/token' + ) | Sort-Object + } +} + +Describe 'Non-actionable parameter allowlist (X-Request-ID: no functional effect; continuation_token/offset: superseded by -AutoPaginate)' { + It 'contains exactly the three confirmed non-actionable fields, no more, no fewer' { + $script:PfbNonActionableParameters | Sort-Object | Should -Be @( + 'continuation_token', + 'offset', + 'X-Request-ID' + ) | Sort-Object + } +} + +Describe 'Get-PfbParameterCoverageGaps' { + It 'flags a missing parameter on a fully-mapped cmdlet''s endpoint' { + $endpoints = @([PSCustomObject]@{ Key = 'GET /arrays/space'; Method = 'GET'; Endpoint = '/arrays/space'; Resolved = $true; Cmdlet = 'Get-PfbFixtureArraySpace'; File = 'x' }) + $result = Get-PfbParameterCoverageGaps -CapabilityMap $capabilityMap -CmdletInventory $fullyMappedInventory -CalledEndpoints $endpoints + $gap = $result.ParameterGaps | Where-Object { $_.Endpoint -eq 'GET /arrays/space' } + $gap.MissingParameters | Should -Contain 'new_field' + } + + It 'produces not-verified instead of a guessed gap for a cmdlet with an AttributesOnly parameter' { + $endpoints = @([PSCustomObject]@{ Key = 'GET /widgets'; Method = 'GET'; Endpoint = '/widgets'; Resolved = $true; Cmdlet = 'Get-PfbFixtureWidget'; File = 'x' }) + $capMapWithWidgets = [PSCustomObject]@{ endpoints = [PSCustomObject]@{ 'GET /widgets' = [PSCustomObject]@{ minVersion = '2.0'; parameters = [PSCustomObject]@{ name = '2.0' }; bodyProperties = [PSCustomObject]@{} } } } + $result = Get-PfbParameterCoverageGaps -CapabilityMap $capMapWithWidgets -CmdletInventory $notFullyMappedInventory -CalledEndpoints $endpoints + $result.ParameterGaps | Where-Object { $_.Endpoint -eq 'GET /widgets' } | Should -BeNullOrEmpty + ($result.NotVerified | Where-Object { $_.Endpoint -eq 'GET /widgets' }).Reason | Should -Be 'has attributes/unresolved surface' + } + + It 'with -SinceVersion, keeps a missing parameter introduced after that version' { + $endpoints = @([PSCustomObject]@{ Key = 'GET /arrays/space'; Method = 'GET'; Endpoint = '/arrays/space'; Resolved = $true; Cmdlet = 'Get-PfbFixtureArraySpace'; File = 'x' }) + $result = Get-PfbParameterCoverageGaps -CapabilityMap $capabilityMap -CmdletInventory $fullyMappedInventory -CalledEndpoints $endpoints -SinceVersion '2.0' + $gap = $result.ParameterGaps | Where-Object { $_.Endpoint -eq 'GET /arrays/space' } + $gap.MissingParameters | Should -Contain 'new_field' + } + + It 'with -SinceVersion, drops a gap whose only missing parameter was introduced at or before that version' { + $endpoints = @([PSCustomObject]@{ Key = 'GET /arrays/space'; Method = 'GET'; Endpoint = '/arrays/space'; Resolved = $true; Cmdlet = 'Get-PfbFixtureArraySpace'; File = 'x' }) + $result = Get-PfbParameterCoverageGaps -CapabilityMap $capabilityMap -CmdletInventory $fullyMappedInventory -CalledEndpoints $endpoints -SinceVersion '2.27' + $result.ParameterGaps | Where-Object { $_.Endpoint -eq 'GET /arrays/space' } | Should -BeNullOrEmpty + } + + It 'flags X-Request-ID as a missing parameter when -ExcludedFields is not given' { + $endpoints = @([PSCustomObject]@{ Key = 'GET /arrays/space'; Method = 'GET'; Endpoint = '/arrays/space'; Resolved = $true; Cmdlet = 'Get-PfbFixtureArraySpace'; File = 'x' }) + $result = Get-PfbParameterCoverageGaps -CapabilityMap $capabilityMap -CmdletInventory $fullyMappedInventory -CalledEndpoints $endpoints + $gap = $result.ParameterGaps | Where-Object { $_.Endpoint -eq 'GET /arrays/space' } + $gap.MissingParameters | Should -Contain 'X-Request-ID' + } + + It 'with -ExcludedFields, excludes a named field but keeps other real gaps on the same endpoint' { + $endpoints = @([PSCustomObject]@{ Key = 'GET /arrays/space'; Method = 'GET'; Endpoint = '/arrays/space'; Resolved = $true; Cmdlet = 'Get-PfbFixtureArraySpace'; File = 'x' }) + $result = Get-PfbParameterCoverageGaps -CapabilityMap $capabilityMap -CmdletInventory $fullyMappedInventory -CalledEndpoints $endpoints -ExcludedFields @('X-Request-ID') + $gap = $result.ParameterGaps | Where-Object { $_.Endpoint -eq 'GET /arrays/space' } + $gap.MissingParameters | Should -Not -Contain 'X-Request-ID' + $gap.MissingParameters | Should -Contain 'new_field' + } + + It 'with -ExcludedFields, drops a gap entirely when every missing field is excluded' { + $endpoints = @([PSCustomObject]@{ Key = 'GET /widgets'; Method = 'GET'; Endpoint = '/widgets'; Resolved = $true; Cmdlet = 'Get-PfbFixtureWidget'; File = 'x' }) + $capMapOnlyXRid = [PSCustomObject]@{ endpoints = [PSCustomObject]@{ 'GET /widgets' = [PSCustomObject]@{ minVersion = '2.0'; parameters = [PSCustomObject]@{ 'X-Request-ID' = '2.12' }; bodyProperties = [PSCustomObject]@{} } } } + $inventory = @([PSCustomObject]@{ Cmdlet = 'Get-PfbFixtureWidget'; Parameter = 'Name'; Surface = 'Typed'; WireName = 'name'; HasValidateSet = $false; ValidateSetValues = $null; Endpoint = 'widgets'; Method = 'GET' }) + $result = Get-PfbParameterCoverageGaps -CapabilityMap $capMapOnlyXRid -CmdletInventory $inventory -CalledEndpoints $endpoints -ExcludedFields @('X-Request-ID') + $result.ParameterGaps | Where-Object { $_.Endpoint -eq 'GET /widgets' } | Should -BeNullOrEmpty + } + + It 'returns MissingParameters in deterministic alphabetical order regardless of capability-map field order' { + # Field names deliberately declared in reverse/scrambled order below -- MissingParameters + # is internally staged through a plain Hashtable (not [ordered]), whose .Keys enumeration + # order depends on .NET's per-process-randomized string hash codes, so without an explicit + # sort this list's order silently varies run-to-run on identical input (confirmed live: + # regenerating Reports/PfbApiDriftReport.md twice produced two byte-different files for the + # exact same drift content). The fix must sort regardless of insertion order, so this test + # deliberately supplies fields already out of alphabetical order. + $capMapScrambled = [PSCustomObject]@{ + endpoints = [PSCustomObject]@{ + 'GET /widgets' = [PSCustomObject]@{ + minVersion = '2.0' + parameters = [PSCustomObject]@{ zebra = '2.0'; apple = '2.0'; mango = '2.0' } + bodyProperties = [PSCustomObject]@{} + } + } + } + $endpoints = @([PSCustomObject]@{ Key = 'GET /widgets'; Method = 'GET'; Endpoint = '/widgets'; Resolved = $true; Cmdlet = 'Get-PfbFixtureWidget'; File = 'x' }) + $inventory = @([PSCustomObject]@{ Cmdlet = 'Get-PfbFixtureWidget'; Parameter = 'Name'; Surface = 'Typed'; WireName = 'name'; HasValidateSet = $false; ValidateSetValues = $null; Endpoint = 'widgets'; Method = 'GET' }) + $result = Get-PfbParameterCoverageGaps -CapabilityMap $capMapScrambled -CmdletInventory $inventory -CalledEndpoints $endpoints + $gap = $result.ParameterGaps | Where-Object { $_.Endpoint -eq 'GET /widgets' } + $gap.MissingParameters | Should -Be @('apple', 'mango', 'zebra') + } +} + +Describe 'Get-PfbValidateSetDrift' { + It 'flags the real Get-PfbArrayPerformance -Protocol bug shape: spec has "all", ValidateSet is missing it' { + $drift = Get-PfbValidateSetDrift -CmdletInventory $driftInventory -History $driftHistory -OldestVersion '2.0' + $rec = $drift | Where-Object { $_.Cmdlet -eq 'Get-PfbArrayPerformance' -and $_.Parameter -eq 'Protocol' } + $rec.MissingValues | Should -Contain 'all' + $rec.StaleValues | Should -BeNullOrEmpty + } + + It 'flags a stale ValidateSet value the spec no longer documents' { + # Cmdlet deliberately follows the module's real -Pfb convention (not + # a bare 'Test-Fixture') so Get-PfbResourceHint derives 'ArrayPerformance' and + # Resolve-PfbFieldValueEnum's resource-hint match actually fires -- otherwise this + # would vacuously pass/fail on hint-resolution alone rather than on the stale-value + # comparison this test is meant to exercise. + $staleInventory = @( + [PSCustomObject]@{ Cmdlet = 'Test-PfbArrayPerformance'; Parameter = 'Protocol'; Surface = 'Typed'; WireName = 'protocol'; HasValidateSet = $true; ValidateSetValues = @('all', 'nfs', 'smb', 'http', 's3', 'ftp'); Endpoint = 'arrays/performance'; Method = 'GET' } + ) + $drift = Get-PfbValidateSetDrift -CmdletInventory $staleInventory -History $driftHistory -OldestVersion '2.0' + $rec = $drift | Where-Object { $_.Cmdlet -eq 'Test-PfbArrayPerformance' } + $rec.StaleValues | Should -Contain 'ftp' + } + + It 'does not flag a ValidateSet whose values exactly match the spec' { + # Same naming-convention reasoning as above -- must actually resolve to 'matched' + # so this asserts real match-with-no-drift behavior, not vacuous non-resolution. + $matchingInventory = @( + [PSCustomObject]@{ Cmdlet = 'Test-PfbArrayPerformance'; Parameter = 'Protocol'; Surface = 'Typed'; WireName = 'protocol'; HasValidateSet = $true; ValidateSetValues = @('all', 'nfs', 'smb', 'http', 's3'); Endpoint = 'arrays/performance'; Method = 'GET' } + ) + $drift = Get-PfbValidateSetDrift -CmdletInventory $matchingInventory -History $driftHistory -OldestVersion '2.0' + $drift | Should -BeNullOrEmpty + } +} diff --git a/Tests/PfbCmdletParamTools.Tests.ps1 b/Tests/PfbCmdletParamTools.Tests.ps1 new file mode 100644 index 0000000..ec64d9a --- /dev/null +++ b/Tests/PfbCmdletParamTools.Tests.ps1 @@ -0,0 +1,385 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Unit tests for tools/lib/PfbCmdletParamTools.ps1 — the AST-based cmdlet parameter + inventory used by tools/Build-PfbFieldCmdletMap.ps1. +.DESCRIPTION + Runs against a small synthetic Public/-shaped directory under TestDrive, built from + real patterns observed in this repo's actual cmdlets (New-PfbAlertWatcher's simple + $body['wire_name'] = $Param assignment, New-PfbNetworkInterface's -Attributes escape + hatch and its unresolvable $AttachedServers | ForEach-Object {...} pipeline, and + Get-PfbArrayPerformance's $queryParams assignment) — no dependency on the real Public/ + tree so the test stays stable if cmdlets change. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + . (Join-Path $repoRoot 'tools/lib/PfbCmdletParamTools.ps1') + + $script:fixtureDir = Join-Path $TestDrive 'Public/Fixture' + New-Item -ItemType Directory -Path $fixtureDir -Force | Out-Null + + Set-Content -Path (Join-Path $fixtureDir 'New-PfbFixtureAlertWatcher.ps1') -Value @' +function New-PfbFixtureAlertWatcher { + [CmdletBinding(SupportsShouldProcess)] + param( + [Parameter(Mandatory, Position = 0)] + [string]$Name, + + [Parameter()] + [ValidateSet('info', 'warning', 'critical')] + [string]$MinimumSeverity, + + [Parameter()] [hashtable]$Attributes, + [Parameter()] [PSCustomObject]$Array + ) + + if ($Attributes) { $body = $Attributes } + else { + $body = @{} + if ($MinimumSeverity) { $body['minimum_notification_severity'] = $MinimumSeverity } + } +} +'@ + + Set-Content -Path (Join-Path $fixtureDir 'New-PfbFixtureNetworkInterface.ps1') -Value @' +function New-PfbFixtureNetworkInterface { + [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = "Individual")] + param( + [Parameter(Mandatory, Position = 0)] + [string]$Name, + + [Parameter(ParameterSetName = "Individual")] + [ValidateSet("data", "egress-only", "management", "replication", "support")] + [string[]]$Services, + + [Parameter(ParameterSetName = "Individual")] + [string[]]$AttachedServers, + + [Parameter(Mandatory, ParameterSetName = "Attributes")] + [hashtable]$Attributes, + + [Parameter()] [PSCustomObject]$Array + ) + + if ($PSCmdlet.ParameterSetName -eq "Attributes") { + $body = $Attributes + } + else { + $body = @{} + if ($Services) { $body["services"] = @($Services) } + if ($AttachedServers) { + $body["attached_servers"] = @($AttachedServers | ForEach-Object { @{ name = $_ } }) + } + } +} +'@ + + Set-Content -Path (Join-Path $fixtureDir 'Get-PfbFixtureArrayPerformance.ps1') -Value @' +function Get-PfbFixtureArrayPerformance { + [CmdletBinding()] + param( + [Parameter()] [PSCustomObject]$Array, + + [Parameter()] + [string]$Protocol, + + [Parameter()] + [int64]$Resolution, + + [Parameter()] + [datetime]$StartTime + ) + + $queryParams = @{} + if ($Protocol) { $queryParams["protocol"] = $Protocol } + if ($Resolution) { $queryParams["resolution"] = $Resolution } + # Deliberately NOT a simple "$queryParams[key] = $Param" assignment -- string + # interpolation is a real pattern this repo does not currently use, but the resolver + # must not guess through it. No -Attributes escape hatch exists on this cmdlet either, + # so this must surface as TypedUnresolved, not silently dropped or force-matched. + if ($StartTime) { $queryParams["start_time"] = "$StartTime" } + + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'arrays/performance' -QueryParams $queryParams -AutoPaginate +} +'@ + + # Real Get-PfbArraySpace shape: exactly one Invoke-PfbApiRequest call, so -Type's + # $queryParams assignment resolves to exactly one (Method, Endpoint) pair. + Set-Content -Path (Join-Path $fixtureDir 'Get-PfbFixtureArraySpace.ps1') -Value @' +function Get-PfbFixtureArraySpace { + [CmdletBinding()] + param( + [Parameter()] [PSCustomObject]$Array, + [Parameter()] [string]$Type + ) + $queryParams = @{} + if ($Type) { $queryParams['type'] = $Type } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'arrays/space' -QueryParams $queryParams -AutoPaginate +} +'@ + + # Real Get-PfbNode shape: the SAME $queryParams variable is reused across two calls + # against two genuinely different endpoints (a try/catch model-support fallback) -- + # must resolve to $null, not a guessed pick of either endpoint. + Set-Content -Path (Join-Path $fixtureDir 'Get-PfbFixtureNode.ps1') -Value @' +function Get-PfbFixtureNode { + [CmdletBinding()] + param( + [Parameter()] [PSCustomObject]$Array, + [Parameter()] [string]$Filter + ) + $queryParams = @{} + if ($Filter) { $queryParams['filter'] = $Filter } + try { + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'nodes' -QueryParams $queryParams -AutoPaginate + } catch { + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'blades' -QueryParams $queryParams -AutoPaginate + } +} +'@ + + # Real Get-PfbPolicyAllMember shape: a plural wire name built by joining a string-array + # parameter, not assigning it directly or wrapping it in @(...). + Set-Content -Path (Join-Path $fixtureDir 'Get-PfbFixturePolicyAllMember.ps1') -Value @' +function Get-PfbFixturePolicyAllMember { + [CmdletBinding()] + param( + [Parameter()] [PSCustomObject]$Array, + [Parameter()] [string[]]$MemberName + ) + $queryParams = @{} + if ($MemberName) { $queryParams['member_names'] = $MemberName -join ',' } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'policies/members' -QueryParams $queryParams -AutoPaginate +} +'@ + + # Real Get-PfbFileSystemSession shape: a switch's mere presence is keyed to a + # hardcoded string literal, not derived from the switch's own value at all. + Set-Content -Path (Join-Path $fixtureDir 'Get-PfbFixtureFileSystemSession.ps1') -Value @' +function Get-PfbFixtureFileSystemSession { + [CmdletBinding()] + param( + [Parameter()] [PSCustomObject]$Array, + [Parameter()] [switch]$TotalOnly + ) + $queryParams = @{} + if ($TotalOnly) { $queryParams['total_only'] = 'true' } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'file-system-sessions' -QueryParams $queryParams -AutoPaginate +} +'@ + + # Real cross-file idiom (130/130 files that use it at all, byte-for-byte identical): + # accumulate into a list across `process`, then join it into the wire name in `end`. + Set-Content -Path (Join-Path $fixtureDir 'Get-PfbFixtureFileSystemByName.ps1') -Value @' +function Get-PfbFixtureFileSystemByName { + [CmdletBinding()] + param( + [Parameter()] [PSCustomObject]$Array, + [Parameter(ValueFromPipeline)] [string[]]$Name + ) + begin { + $allNames = [System.Collections.Generic.List[string]]::new() + $queryParams = @{} + } + process { + if ($Name) { + foreach ($n in $Name) { + $allNames.Add($n) + } + } + } + end { + if ($allNames.Count -gt 0) { $queryParams['names'] = $allNames -join ',' } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'file-systems' -QueryParams $queryParams -AutoPaginate + } +} +'@ + + # Ambiguous-accumulator case: the SAME accumulator is fed by two different parameters' + # foreach loops -- must bail to TypedUnresolved for both, never guess which one "owns" + # the eventual wire name. + Set-Content -Path (Join-Path $fixtureDir 'Get-PfbFixtureSharedAccumulator.ps1') -Value @' +function Get-PfbFixtureSharedAccumulator { + [CmdletBinding()] + param( + [Parameter()] [PSCustomObject]$Array, + [Parameter()] [string[]]$FirstNames, + [Parameter()] [string[]]$SecondNames + ) + $allNames = [System.Collections.Generic.List[string]]::new() + $queryParams = @{} + foreach ($n in $FirstNames) { $allNames.Add($n) } + foreach ($n in $SecondNames) { $allNames.Add($n) } + if ($allNames.Count -gt 0) { $queryParams['names'] = $allNames -join ',' } + Invoke-PfbApiRequest -Array $Array -Method GET -Endpoint 'shared' -QueryParams $queryParams -AutoPaginate +} +'@ + + $script:inventory = Get-PfbCmdletParameterInventory -PublicDirectory $fixtureDir +} + +Describe 'Get-PfbCmdletParameterInventory' { + It 'always skips the Array parameter' { + $inventory | Where-Object { $_.Parameter -eq 'Array' } | Should -BeNullOrEmpty + } + + It 'always skips the Attributes parameter itself' { + $inventory | Where-Object { $_.Parameter -eq 'Attributes' } | Should -BeNullOrEmpty + } + + It 'records an existing ValidateSet and marks HasValidateSet true' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'New-PfbFixtureAlertWatcher' -and $_.Parameter -eq 'MinimumSeverity' } + $rec.HasValidateSet | Should -BeTrue + $rec.ValidateSetValues | Should -Be @('info', 'warning', 'critical') + } + + It 'resolves a simple $body[wire_name] = $Param assignment' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'New-PfbFixtureAlertWatcher' -and $_.Parameter -eq 'MinimumSeverity' } + $rec.WireName | Should -Be 'minimum_notification_severity' + $rec.Surface | Should -Be 'Typed' + } + + It 'resolves a simple $queryParams[wire_name] = $Param assignment' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureArrayPerformance' -and $_.Parameter -eq 'Protocol' } + $rec.WireName | Should -Be 'protocol' + $rec.Surface | Should -Be 'Typed' + } + + It 'resolves an array parameter wrapped in @(...)' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'New-PfbFixtureNetworkInterface' -and $_.Parameter -eq 'Services' } + $rec.WireName | Should -Be 'services' + $rec.Surface | Should -Be 'Typed' + } + + It 'classifies a parameter fed through a pipeline transform as AttributesOnly, not a guessed wire name' { + # $AttachedServers is assigned via `@($AttachedServers | ForEach-Object { @{ name = $_ } })` + # -- deliberately NOT matched by the simple-assignment resolver. Since this cmdlet also + # has an -Attributes escape hatch, it must be classified AttributesOnly, not silently + # dropped and not force-matched to a wrong wire name. + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'New-PfbFixtureNetworkInterface' -and $_.Parameter -eq 'AttachedServers' } + $rec.WireName | Should -BeNullOrEmpty + $rec.Surface | Should -Be 'AttributesOnly' + } + + It 'resolves a parameter with no -Attributes escape hatch via a simple assignment' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureArrayPerformance' -and $_.Parameter -eq 'Resolution' } + $rec.WireName | Should -Be 'resolution' + $rec.Surface | Should -Be 'Typed' + } + + It 'classifies a parameter with no -Attributes escape hatch and no resolvable assignment as TypedUnresolved' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureArrayPerformance' -and $_.Parameter -eq 'StartTime' } + $rec.WireName | Should -BeNullOrEmpty + $rec.Surface | Should -Be 'TypedUnresolved' + } + + It 'resolves a parameter joined into a plural wire name via -join' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixturePolicyAllMember' -and $_.Parameter -eq 'MemberName' } + $rec.WireName | Should -Be 'member_names' + $rec.Surface | Should -Be 'Typed' + } + + It 'resolves a [switch] parameter keyed to a hardcoded literal, guarded by if ($Param)' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureFileSystemSession' -and $_.Parameter -eq 'TotalOnly' } + $rec.WireName | Should -Be 'total_only' + $rec.Surface | Should -Be 'Typed' + } + + It 'resolves a parameter traced through a foreach-accumulator-then-join pipeline' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureFileSystemByName' -and $_.Parameter -eq 'Name' } + $rec.WireName | Should -Be 'names' + $rec.Surface | Should -Be 'Typed' + } + + It 'bails to TypedUnresolved when an accumulator is fed by more than one parameter (never guesses ownership)' { + $first = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureSharedAccumulator' -and $_.Parameter -eq 'FirstNames' } + $second = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureSharedAccumulator' -and $_.Parameter -eq 'SecondNames' } + $first.WireName | Should -BeNullOrEmpty + $first.Surface | Should -Be 'TypedUnresolved' + $second.WireName | Should -BeNullOrEmpty + $second.Surface | Should -Be 'TypedUnresolved' + } +} + +Describe 'Get-PfbWireNameForParameter' { + It 'returns $null when the parameter name never appears on the right-hand side of a body/queryParams assignment' { + $tokens = $null; $errs = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput( + 'function Test-Fixture { param([string]$Unused) $body = @{} }', [ref]$tokens, [ref]$errs) + $funcAst = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) | Select-Object -First 1 + Get-PfbWireNameForParameter -FunctionAst $funcAst -ParameterName 'Unused' | Should -BeNullOrEmpty + } +} + +Describe 'Get-PfbWireNameForParameter: switch-to-literal pattern' { + It 'does NOT treat an unguarded literal assignment as switch-derived (false-positive guard)' { + $tokens = $null; $errs = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput( + 'function Test-Fixture { param([switch]$Foo) $body = @{}; $body["bar"] = "literal" }', [ref]$tokens, [ref]$errs) + $funcAst = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) | Select-Object -First 1 + Get-PfbWireNameForParameter -FunctionAst $funcAst -ParameterName 'Foo' -IsSwitchParameter | Should -BeNullOrEmpty + } + + It 'does NOT apply the switch-literal match when -IsSwitchParameter is not passed' { + $tokens = $null; $errs = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput( + 'function Test-Fixture { param([switch]$Foo) if ($Foo) { $body["bar"] = "literal" } }', [ref]$tokens, [ref]$errs) + $funcAst = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) | Select-Object -First 1 + Get-PfbWireNameForParameter -FunctionAst $funcAst -ParameterName 'Foo' | Should -BeNullOrEmpty + } +} + +Describe 'Endpoint/Method resolution (Get-PfbEndpointForVariable, via the inventory)' { + It 'resolves Endpoint/Method for a parameter whose variable feeds exactly one Invoke-PfbApiRequest call' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureArraySpace' -and $_.Parameter -eq 'Type' } + $rec.Endpoint | Should -Be 'arrays/space' + $rec.Method | Should -Be 'GET' + } + + It 'leaves Endpoint/Method $null when the same variable feeds two calls with different endpoints (ambiguous, never guessed)' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureNode' -and $_.Parameter -eq 'Filter' } + $rec.Endpoint | Should -BeNullOrEmpty + $rec.Method | Should -BeNullOrEmpty + } + + It 'leaves Endpoint/Method $null when there is no resolvable wire-name assignment at all' { + $rec = $inventory | Where-Object { $_.Cmdlet -eq 'Get-PfbFixtureArrayPerformance' -and $_.Parameter -eq 'StartTime' } + $rec.Endpoint | Should -BeNullOrEmpty + $rec.Method | Should -BeNullOrEmpty + } + + It 'directly returns $null from Get-PfbEndpointForVariable for a variable with zero matching Invoke-PfbApiRequest calls' { + $tokens = $null; $errs = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput( + 'function Test-Fixture { param([string]$Unused) $queryParams = @{} }', [ref]$tokens, [ref]$errs) + $funcAst = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) | Select-Object -First 1 + Get-PfbEndpointForVariable -FunctionAst $funcAst -TargetVariable 'queryParams' | Should -BeNullOrEmpty + } +} + +Describe 'Find-PfbAccumulatorVariable' { + It 'returns $null when the parameter has no foreach loop over it at all' { + $tokens = $null; $errs = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput( + 'function Test-Fixture { param([string[]]$Unused) $body = @{} }', [ref]$tokens, [ref]$errs) + $funcAst = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) | Select-Object -First 1 + Find-PfbAccumulatorVariable -FunctionAst $funcAst -ParameterName 'Unused' | Should -BeNullOrEmpty + } + + It 'returns $null when the loop body calls .Add(...) on more than one target variable' { + $tokens = $null; $errs = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput( + 'function Test-Fixture { param([string[]]$Name) $a = [System.Collections.Generic.List[string]]::new(); $b = [System.Collections.Generic.List[string]]::new(); foreach ($n in $Name) { $a.Add($n); $b.Add($n) } }', [ref]$tokens, [ref]$errs) + $funcAst = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) | Select-Object -First 1 + Find-PfbAccumulatorVariable -FunctionAst $funcAst -ParameterName 'Name' | Should -BeNullOrEmpty + } + + It 'returns the accumulator variable name for a single unambiguous foreach-Add loop over the parameter' { + $tokens = $null; $errs = $null + $ast = [System.Management.Automation.Language.Parser]::ParseInput( + 'function Test-Fixture { param([string[]]$Name) $names = [System.Collections.Generic.List[string]]::new(); foreach ($n in $Name) { $names.Add($n) } }', [ref]$tokens, [ref]$errs) + $funcAst = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) | Select-Object -First 1 + Find-PfbAccumulatorVariable -FunctionAst $funcAst -ParameterName 'Name' | Should -Be 'names' + } +} diff --git a/Tests/PfbSpecTools.Tests.ps1 b/Tests/PfbSpecTools.Tests.ps1 new file mode 100644 index 0000000..7f845aa --- /dev/null +++ b/Tests/PfbSpecTools.Tests.ps1 @@ -0,0 +1,255 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Unit tests for tools/lib/PfbSpecTools.ps1 — the shared spec-extraction and + capability-diffing helpers used by tools/Update-PfbApiSpecs.ps1 and + tools/Build-PfbCapabilityMap.ps1. +.DESCRIPTION + These are pure-function unit tests against a small synthetic fixture + (Tests/Fixtures/sample-redoc-page.html) and inline synthetic spec objects — no + network access and no dependency on the real cached specs in tools/specs/. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + . (Join-Path $repoRoot 'tools/lib/PfbSpecTools.ps1') + + $fixturePath = Join-Path $PSScriptRoot 'Fixtures/sample-redoc-page.html' + $script:fixtureHtml = Get-Content -Path $fixturePath -Raw +} + +Describe 'ConvertFrom-PfbRedocHtml' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + # ConvertFrom-PfbRedocHtml (tools/lib/PfbSpecTools.ps1) calls ConvertFrom-Json -Depth, + # which does not exist on Windows PowerShell 5.1 (added in PS6) -- this function is + # dev/CI-only tooling never loaded by the shipped module (see PureStorageFlashBladePowerShell.psm1, + # which only sources Private/ and Public/), so it's out of scope for 5.1 support. + It 'extracts the embedded OpenAPI document' { + $spec = ConvertFrom-PfbRedocHtml -Html $fixtureHtml + $spec.openapi | Should -Be '3.0.1' + $spec.info.version | Should -Be '9.9' + } + + It 'correctly walks past braces embedded inside string values (does not truncate early)' { + # The fixture's description contains a literal "{this}" and the trailing + # options.theme.spacing value contains "({ spacing }) => 10" — both would break + # a naive scan for the *first* unmatched-looking '}' instead of a real + # string-aware balanced-brace scan. + $spec = ConvertFrom-PfbRedocHtml -Html $fixtureHtml + $spec.info.description | Should -Match 'braces like \{this\} embedded' + $spec.paths.'/api/9.9/widgets' | Should -Not -BeNullOrEmpty + } + + It 'correctly handles escaped quotes and backslashes inside strings' { + $spec = ConvertFrom-PfbRedocHtml -Html $fixtureHtml + $spec.info.'x-fixture-escape-test' | Should -Match 'a quoted word' + $spec.info.'x-fixture-escape-test' | Should -Match '\\' + } + + It 'decodes non-ASCII characters correctly' { + $spec = ConvertFrom-PfbRedocHtml -Html $fixtureHtml + $spec.info.description | Should -Match 'café' + } + + It 'throws a clear error when the __redoc_state marker is missing' { + { ConvertFrom-PfbRedocHtml -Html 'nothing here' } | + Should -Throw '*__redoc_state*' + } + + It 'throws a clear error when the JSON is malformed' { + # 'undefined' is not a valid JSON literal in any parser (unlike a trailing + # comma, which some parsers tolerate) - this is unambiguously invalid. + $badHtml = '' + { ConvertFrom-PfbRedocHtml -Html $badHtml } | Should -Throw + } +} + +Describe 'ConvertTo-PfbNormalizedPath' { + It 'strips the "/api//" prefix from versioned paths' { + ConvertTo-PfbNormalizedPath -Path '/api/2.27/arrays' | Should -Be '/arrays' + ConvertTo-PfbNormalizedPath -Path '/api/2.0/file-systems' | Should -Be '/file-systems' + } + + It 'leaves unversioned auth/meta endpoints unchanged' { + ConvertTo-PfbNormalizedPath -Path '/api/login' | Should -Be '/api/login' + ConvertTo-PfbNormalizedPath -Path '/api/api_version' | Should -Be '/api/api_version' + ConvertTo-PfbNormalizedPath -Path '/oauth2/1.0/token' | Should -Be '/oauth2/1.0/token' + } +} + +Describe 'Resolve-PfbRef' { + BeforeAll { + $script:testSpec = [PSCustomObject]@{ + components = [PSCustomObject]@{ + parameters = [PSCustomObject]@{ + Names = [PSCustomObject]@{ name = 'names'; in = 'query' } + } + schemas = [PSCustomObject]@{ + Widget = [PSCustomObject]@{ '$ref' = '#/components/schemas/WidgetAlias' } + WidgetAlias = [PSCustomObject]@{ type = 'object'; properties = [PSCustomObject]@{ id = @{ type = 'string' } } } + } + } + } + } + + It 'resolves a single-level $ref' { + $node = [PSCustomObject]@{ '$ref' = '#/components/parameters/Names' } + $resolved = Resolve-PfbRef -Node $node -Spec $testSpec + $resolved.name | Should -Be 'names' + } + + It 'follows chained $refs to the final target' { + $node = [PSCustomObject]@{ '$ref' = '#/components/schemas/Widget' } + $resolved = Resolve-PfbRef -Node $node -Spec $testSpec + $resolved.type | Should -Be 'object' + } + + It 'returns non-$ref nodes unchanged' { + $node = [PSCustomObject]@{ name = 'plain'; in = 'query' } + $resolved = Resolve-PfbRef -Node $node -Spec $testSpec + $resolved.name | Should -Be 'plain' + } + + It 'returns $null unchanged' { + Resolve-PfbRef -Node $null -Spec $testSpec | Should -BeNullOrEmpty + } +} + +Describe 'Get-PfbSchemaPropertyNames' { + BeforeAll { + $script:testSpec = [PSCustomObject]@{ + components = [PSCustomObject]@{ + schemas = [PSCustomObject]@{ + BaseResource = [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ id = @{ type = 'string' }; name = @{ type = 'string' } } + } + ResourcePatch = [PSCustomObject]@{ + allOf = @( + [PSCustomObject]@{ '$ref' = '#/components/schemas/BaseResource' } + [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ enabled = @{ type = 'boolean' } } + } + ) + } + } + } + } + } + + It 'reads direct properties off an inline schema' { + $schema = [PSCustomObject]@{ properties = [PSCustomObject]@{ a = @{}; b = @{} } } + $names = Get-PfbSchemaPropertyNames -Schema $schema -Spec $testSpec + $names | Should -Contain 'a' + $names | Should -Contain 'b' + } + + It 'resolves a $ref schema before reading properties' { + $schema = [PSCustomObject]@{ '$ref' = '#/components/schemas/BaseResource' } + $names = Get-PfbSchemaPropertyNames -Schema $schema -Spec $testSpec + $names | Should -Contain 'id' + $names | Should -Contain 'name' + } + + It 'merges properties across allOf branches, including $ref branches' { + $schema = [PSCustomObject]@{ '$ref' = '#/components/schemas/ResourcePatch' } + $names = Get-PfbSchemaPropertyNames -Schema $schema -Spec $testSpec + $names | Should -Contain 'id' + $names | Should -Contain 'name' + $names | Should -Contain 'enabled' + } + + It 'returns an empty list for a null schema' { + Get-PfbSchemaPropertyNames -Schema $null -Spec $testSpec | Should -BeNullOrEmpty + } +} + +Describe 'Get-PfbSpecCapabilities' { + BeforeAll { + $script:testSpec = [PSCustomObject]@{ + paths = [PSCustomObject]@{ + '/api/9.9/widgets' = [PSCustomObject]@{ + 'x-pure-authorization-resource' = 'widgets' + get = [PSCustomObject]@{ + parameters = @( + [PSCustomObject]@{ '$ref' = '#/components/parameters/Filter' } + ) + } + post = [PSCustomObject]@{ + requestBody = [PSCustomObject]@{ + content = [PSCustomObject]@{ + 'application/json' = [PSCustomObject]@{ + schema = [PSCustomObject]@{ '$ref' = '#/components/schemas/WidgetPost' } + } + } + } + } + } + } + components = [PSCustomObject]@{ + parameters = [PSCustomObject]@{ + Filter = [PSCustomObject]@{ name = 'filter'; in = 'query' } + } + schemas = [PSCustomObject]@{ + WidgetPost = [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ name = @{ type = 'string' }; color = @{ type = 'string' } } + } + } + } + } + } + + It 'skips vendor extension keys like x-pure-authorization-resource' { + $caps = Get-PfbSpecCapabilities -Spec $testSpec + ($caps | ForEach-Object { $_.Method }) | Should -Not -Contain 'X-PURE-AUTHORIZATION-RESOURCE' + } + + It 'produces one record per (method, normalized path)' { + $caps = Get-PfbSpecCapabilities -Spec $testSpec + $caps.Count | Should -Be 2 + ($caps | Where-Object Method -eq 'GET').Path | Should -Be '/widgets' + ($caps | Where-Object Method -eq 'POST').Path | Should -Be '/widgets' + } + + It 'resolves $ref parameters to their names' { + $caps = Get-PfbSpecCapabilities -Spec $testSpec + $getCap = $caps | Where-Object Method -eq 'GET' + $getCap.Parameters | Should -Contain 'filter' + } + + It 'resolves $ref request-body schemas to their property names' { + $caps = Get-PfbSpecCapabilities -Spec $testSpec + $postCap = $caps | Where-Object Method -eq 'POST' + $postCap.BodyProperties | Should -Contain 'name' + $postCap.BodyProperties | Should -Contain 'color' + } + + It 'returns an empty list for a spec with no paths' { + $emptySpec = [PSCustomObject]@{ paths = [PSCustomObject]@{} } + Get-PfbSpecCapabilities -Spec $emptySpec | Should -BeNullOrEmpty + } +} + +Describe 'Get-PfbSwaggerIndexVersions' { + It 'extracts and sorts version numbers correctly, including double-digit minors' { + $html = @' +2.9 +2.10 +2.2 +'@ + $versions = Get-PfbSwaggerIndexVersions -IndexHtml $html + # Numeric sort must place 2.10 after 2.9, not lexicographically before it. + $versions | Should -Be @('2.2', '2.9', '2.10') + } + + It 'de-duplicates repeated links' { + $html = 'xy' + $versions = Get-PfbSwaggerIndexVersions -IndexHtml $html + $versions | Should -Be @('2.5') + } + + It 'returns an empty list when no versions are found' { + Get-PfbSwaggerIndexVersions -IndexHtml '' | Should -BeNullOrEmpty + } +} diff --git a/Tests/PfbValueEnumTools.Tests.ps1 b/Tests/PfbValueEnumTools.Tests.ps1 new file mode 100644 index 0000000..b2666ac --- /dev/null +++ b/Tests/PfbValueEnumTools.Tests.ps1 @@ -0,0 +1,538 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Unit tests for tools/lib/PfbValueEnumTools.ps1 — the prose "Valid/Possible values" + extraction helpers used by tools/Build-PfbValueEnumMap.ps1. +.DESCRIPTION + Pure-function unit tests against small synthetic spec objects (same + [PSCustomObject]-fixture style as Tests/PfbSpecTools.Tests.ps1) — no network access + and no dependency on the real cached specs in tools/specs/. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + . (Join-Path $repoRoot 'tools/lib/PfbSpecTools.ps1') + . (Join-Path $repoRoot 'tools/lib/PfbValueEnumTools.ps1') +} + +Describe 'Get-PfbValueEnumTriggerSentence' { + It 'extracts a "Valid values are ... ." sentence' { + $desc = "The versioning state for objects within the bucket. Valid values are ``none``, ``enabled``, and ``suspended``." + $trigger = Get-PfbValueEnumTriggerSentence -Description $desc + $trigger | Should -Be 'Valid values are `none`, `enabled`, and `suspended`.' + } + + It 'extracts a "Possible values include ... ." sentence' { + $desc = "The minimum severity for notifications. Possible values include ``info``, ``warning``, and ``critical``. Defaults to info." + $trigger = Get-PfbValueEnumTriggerSentence -Description $desc + $trigger | Should -Be 'Possible values include `info`, `warning`, and `critical`.' + } + + It 'returns $null when no trigger phrase is present' { + Get-PfbValueEnumTriggerSentence -Description 'A perfectly ordinary free-text description.' | Should -BeNullOrEmpty + } + + It 'returns $null for an empty or missing description' { + Get-PfbValueEnumTriggerSentence -Description $null | Should -BeNullOrEmpty + Get-PfbValueEnumTriggerSentence -Description '' | Should -BeNullOrEmpty + } + + It 'isolates only the trigger sentence, not trailing prose that repeats the values' { + # Regression for the trigger-sentence-scoping rule: the preset export-rule + # description explains each backtick-quoted value again in a paragraph *after* + # the enum sentence — the trigger sentence itself must not swallow that tail. + $desc = @' +Specifies access control for the export. Valid values are `root-squash`, `all-squash`, and +`no-root-squash`. +`root-squash` prevents client users and groups with root privilege from mapping their +root privilege to a file system. +'@ + $trigger = Get-PfbValueEnumTriggerSentence -Description $desc + $trigger | Should -Match '^Valid values are `root-squash`, `all-squash`, and\s*\n`no-root-squash`\.$' + $trigger | Should -Not -Match 'prevents client users' + } +} + +Describe 'ConvertFrom-PfbValueEnumProse' { + It 'parses the dominant backtick-quoted pattern' { + $result = ConvertFrom-PfbValueEnumProse -TriggerSentence 'Valid values are `none`, `enabled`, and `suspended`.' + $result.Parsed | Should -BeTrue + $result.Values | Should -Be @('none', 'enabled', 'suspended') + } + + It 'parses a double-quoted value list' { + $result = ConvertFrom-PfbValueEnumProse -TriggerSentence 'Valid values are "policy", "sacl".' + $result.Parsed | Should -BeTrue + $result.Values | Should -Be @('policy', 'sacl') + } + + It 'parses a bare comma-separated token list' { + $result = ConvertFrom-PfbValueEnumProse -TriggerSentence 'Valid values include QSFP, QSFP+, QSFP28, QSFP56, QSFP-DD, RJ-45, and -.' + $result.Parsed | Should -BeTrue + $result.Values | Should -Be @('QSFP', 'QSFP+', 'QSFP28', 'QSFP56', 'QSFP-DD', 'RJ-45', '-') + } + + It 'does not force-parse a malformed/unbalanced-quote sentence' { + $result = ConvertFrom-PfbValueEnumProse -TriggerSentence "Valid values include 'success' or failure'." + $result.Parsed | Should -BeFalse + $result.Values | Should -BeNullOrEmpty + $result.TriggerText | Should -Not -BeNullOrEmpty + } + + It 'does not force-parse a backtick-quoted list with a missing opening backtick (real spec bug: policy_type/smb-client)' { + # Real, confirmed-malformed text from the FlashBlade OpenAPI spec (present in every + # cached version REST 2.14-2.27): the opening backtick before `smb-client` is + # missing. A naive backtick-pair regex re-synchronizes on the next backtick and + # silently drops `smb-client` from the value list while injecting garbage + # (comma/whitespace-only) "values" -- this must be classified unparsed instead. + $result = ConvertFrom-PfbValueEnumProse -TriggerSentence 'Valid values include `alert`, `audit`, `s3-export`, smb-client`, `smb-share`, and `telemetry-metrics`.' + $result.Parsed | Should -BeFalse + $result.Values | Should -BeNullOrEmpty + $result.TriggerText | Should -Not -BeNullOrEmpty + } + + It 'does not force-parse a numeric-range sentence that happens to match the trigger phrase' { + $result = ConvertFrom-PfbValueEnumProse -TriggerSentence "Valid values are`nin the range of 300000 and 10800000." + $result.Parsed | Should -BeFalse + $result.Values | Should -BeNullOrEmpty + } + + It 'does not force-parse free-text prose that happens to match the trigger phrase' { + $result = ConvertFrom-PfbValueEnumProse -TriggerSentence "Valid values are controllers`nand blades from hardware list." + $result.Parsed | Should -BeFalse + $result.Values | Should -BeNullOrEmpty + } + + It 'preserves the raw trigger text on both parsed and unparsed results' { + $sentence = 'Valid values are `a`, `b`.' + (ConvertFrom-PfbValueEnumProse -TriggerSentence $sentence).TriggerText | Should -Be $sentence + } +} + +Describe 'Get-PfbSchemaPropertyDescriptions' { + BeforeAll { + $script:testSpec = [PSCustomObject]@{ + components = [PSCustomObject]@{ + schemas = [PSCustomObject]@{ + BaseResource = [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ + id = [PSCustomObject]@{ type = 'string'; description = 'The resource identifier.' } + name = [PSCustomObject]@{ type = 'string' } + } + } + ResourcePatch = [PSCustomObject]@{ + allOf = @( + [PSCustomObject]@{ '$ref' = '#/components/schemas/BaseResource' } + [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ + enabled = [PSCustomObject]@{ type = 'boolean'; description = 'Valid values are `true` and `false`.' } + } + } + ) + } + ListWrapper = [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ + tags = [PSCustomObject]@{ + type = 'array' + items = [PSCustomObject]@{ type = 'string'; description = 'Valid values are `a`, `b`.' } + } + } + } + } + } + } + } + + It 'reads direct property descriptions off an inline schema' { + $schema = [PSCustomObject]@{ + properties = [PSCustomObject]@{ + a = [PSCustomObject]@{ description = 'first' } + b = [PSCustomObject]@{ description = 'second' } + } + } + $descriptions = Get-PfbSchemaPropertyDescriptions -Schema $schema -Spec $testSpec + $descriptions['a'] | Should -Be 'first' + $descriptions['b'] | Should -Be 'second' + } + + It 'resolves a $ref schema before reading property descriptions' { + $schema = [PSCustomObject]@{ '$ref' = '#/components/schemas/BaseResource' } + $descriptions = Get-PfbSchemaPropertyDescriptions -Schema $schema -Spec $testSpec + $descriptions['id'] | Should -Be 'The resource identifier.' + } + + It 'merges descriptions across allOf branches, including $ref branches' { + $schema = [PSCustomObject]@{ '$ref' = '#/components/schemas/ResourcePatch' } + $descriptions = Get-PfbSchemaPropertyDescriptions -Schema $schema -Spec $testSpec + $descriptions['id'] | Should -Be 'The resource identifier.' + $descriptions['enabled'] | Should -Be 'Valid values are `true` and `false`.' + } + + It 'descends into an array property''s items schema for its description' { + $descriptions = Get-PfbSchemaPropertyDescriptions -Schema $testSpec.components.schemas.ListWrapper -Spec $testSpec + $descriptions['tags'] | Should -Be 'Valid values are `a`, `b`.' + } + + It 'omits properties with no resolvable description' { + $schema = [PSCustomObject]@{ '$ref' = '#/components/schemas/BaseResource' } + $descriptions = Get-PfbSchemaPropertyDescriptions -Schema $schema -Spec $testSpec + $descriptions.Contains('name') | Should -BeFalse + } + + It 'returns an empty hashtable for a null schema' { + (Get-PfbSchemaPropertyDescriptions -Schema $null -Spec $testSpec).Count | Should -Be 0 + } + + It 'returns descriptions in the schema''s own declared property order, not scrambled by hashtable enumeration' { + # The returned dictionary is internally staged through a plain Hashtable (not + # [ordered]) in earlier versions of this function, whose .Keys enumeration order + # depends on .NET's per-process-randomized string hash codes -- without an + # explicit [ordered] type, Reports/PfbValueEnumMap.json's entry order silently + # varies run-to-run on identical input (confirmed live: regenerating it twice + # produced two byte-different files, e.g. SnmpManager.version/.notification + # swapping order). Property names below are deliberately declared out of + # alphabetical order to prove insertion order (not sort order) is preserved. + $schema = [PSCustomObject]@{ + properties = [PSCustomObject]@{ + zebra = [PSCustomObject]@{ description = 'z' } + apple = [PSCustomObject]@{ description = 'a' } + mango = [PSCustomObject]@{ description = 'm' } + } + } + $descriptions = Get-PfbSchemaPropertyDescriptions -Schema $schema -Spec $testSpec + @($descriptions.Keys) | Should -Be @('zebra', 'apple', 'mango') + } +} + +Describe 'Get-PfbSpecValueEnums' { + BeforeAll { + # Regression fixture: two distinct schemas share the property name "access" + # with non-identical value lists (the squash-mode gotcha). Must never collapse. + $script:squashSpec = [PSCustomObject]@{ + components = [PSCustomObject]@{ + schemas = [PSCustomObject]@{ + NfsExportPolicyRuleBase = [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ + access = [PSCustomObject]@{ + type = 'string' + description = 'Specifies access control for the export. Valid values are `root-squash`, `all-squash`, and `no-squash`.' + } + } + } + _presetWorkloadExportConfigurationNfsRule = [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ + access = [PSCustomObject]@{ + type = 'string' + description = 'Specifies access control for the export. Valid values are `root-squash`, `all-squash`, and `no-root-squash`.' + } + } + } + Bucket = [PSCustomObject]@{ + allOf = @( + [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ + versioning = [PSCustomObject]@{ + type = 'string' + description = 'The versioning state for objects within the bucket. Valid values are `none`, `enabled`, and `suspended`.' + } + } + } + ) + } + UnparseableThing = [PSCustomObject]@{ + type = 'object' + properties = [PSCustomObject]@{ + weirdField = [PSCustomObject]@{ + type = 'string' + description = "Valid values are`nin the range of 300000 and 10800000." + } + } + } + } + parameters = [PSCustomObject]@{ + ArrayPerformanceProtocol = [PSCustomObject]@{ + name = 'protocol' + 'in' = 'query' + description = 'Filter by protocol. Valid values are `nfs`, `smb`, `http`, and `s3`.' + } + sort = [PSCustomObject]@{ + name = 'sort' + 'in' = 'query' + description = 'Sort field. Possible values include `name`, `id`.' + } + plain = [PSCustomObject]@{ + name = 'plain' + 'in' = 'query' + description = 'An ordinary parameter with no enumeration.' + } + } + } + } + + $script:results = Get-PfbSpecValueEnums -Spec $squashSpec + } + + It 'keys schema-property entries by "SchemaName.PropertyName", never bare property name' { + ($results | Where-Object Key -eq 'NfsExportPolicyRuleBase.access') | Should -Not -BeNullOrEmpty + ($results | Where-Object Key -eq '_presetWorkloadExportConfigurationNfsRule.access') | Should -Not -BeNullOrEmpty + } + + It 'sets Name to the schema property name for schema-kind entries' { + $bucket = $results | Where-Object Key -eq 'Bucket.versioning' + $bucket.Name | Should -Be 'versioning' + } + + It 'sets Name to the parameter''s wire "name" field, which may differ from its components.parameters dictionary key' { + $protocolParam = $results | Where-Object Key -eq 'ArrayPerformanceProtocol' + $protocolParam.Name | Should -Be 'protocol' + $protocolParam.Values | Should -Be @('nfs', 'smb', 'http', 's3') + } + + It 'never collapses two schemas sharing a property name into one entry (squash-mode gotcha)' { + $base = $results | Where-Object Key -eq 'NfsExportPolicyRuleBase.access' + $preset = $results | Where-Object Key -eq '_presetWorkloadExportConfigurationNfsRule.access' + + $base.Values | Should -Be @('root-squash', 'all-squash', 'no-squash') + $preset.Values | Should -Be @('root-squash', 'all-squash', 'no-root-squash') + $base.Values | Should -Not -Be $preset.Values + } + + It 'Bucket.versioning regression: extracts exactly [none, enabled, suspended]' { + $bucket = $results | Where-Object Key -eq 'Bucket.versioning' + $bucket | Should -Not -BeNullOrEmpty + $bucket.Values | Should -Be @('none', 'enabled', 'suspended') + $bucket.Parsed | Should -BeTrue + } + + It 'includes parameter-sourced entries with Kind = parameter' { + $sort = $results | Where-Object { $_.Key -eq 'sort' -and $_.Kind -eq 'parameter' } + $sort | Should -Not -BeNullOrEmpty + $sort.Values | Should -Be @('name', 'id') + } + + It 'does not emit a record for a parameter with no trigger phrase' { + ($results | Where-Object Key -eq 'plain') | Should -BeNullOrEmpty + } + + It 'classifies a trigger-matching but non-enumerable description as unparsed rather than dropping it' { + $weird = $results | Where-Object Key -eq 'UnparseableThing.weirdField' + $weird | Should -Not -BeNullOrEmpty + $weird.Parsed | Should -BeFalse + $weird.Values | Should -BeNullOrEmpty + $weird.TriggerText | Should -Not -BeNullOrEmpty + } + + It 'returns an empty list when the spec has no components' { + $emptySpec = [PSCustomObject]@{ components = [PSCustomObject]@{} } + Get-PfbSpecValueEnums -Spec $emptySpec | Should -BeNullOrEmpty + } +} + +Describe 'Get-PfbSpecValueEnums: inline path-operation parameters' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + # Skipped on Windows PowerShell 5.1: the "does not reprocess a $ref entry" case below + # observably fails only on real WinPS 5.1 + Pester 6 (confirmed live) even though + # calling Get-PfbSpecValueEnums directly with the identical fixture outside Pester + # returns identical, correct results on both hosts -- this points at a Pester + # 6-on-Desktop-CLR quirk, not a defect in this dev/CI-only tooling (never loaded by + # the shipped module; see PureStorageFlashBladePowerShell.psm1). + BeforeAll { + # Regression fixture for the real GET /arrays/space `type` gap: a versioned + # spec.paths key (every real cached spec carries an "/api//" prefix) + # whose GET operation defines `type` INLINE (no $ref), alongside a sibling + # parameter that is already a $ref (must NOT be reprocessed/double-counted) and + # an inline parameter with no "Valid values..." trigger at all (must not emit a + # record). + $script:inlineSpec = [PSCustomObject]@{ + components = [PSCustomObject]@{ + schemas = [PSCustomObject]@{} + parameters = [PSCustomObject]@{ + Resolution = [PSCustomObject]@{ + name = 'resolution' + 'in' = 'query' + description = 'The desired ms between samples. Valid values are `1000`, `30000`.' + } + } + } + paths = [PSCustomObject]@{ + '/api/2.0/arrays/space' = [PSCustomObject]@{ + get = [PSCustomObject]@{ + parameters = @( + [PSCustomObject]@{ '$ref' = '#/components/parameters/Resolution' } + [PSCustomObject]@{ + name = 'type' + 'in' = 'query' + description = 'Display the metric of a specified object type. Valid values are `array`, `file-system`, and `object-store`. If not specified, defaults to `array`.' + } + [PSCustomObject]@{ + name = 'start_time' + 'in' = 'query' + description = 'When the time window starts (in milliseconds since epoch).' + } + ) + } + } + } + } + + $script:inlineResults = Get-PfbSpecValueEnums -Spec $inlineSpec + } + + It 'extracts an inline (non-$ref) path-operation parameter as Kind = inline-parameter' { + $rec = $inlineResults | Where-Object { $_.Kind -eq 'inline-parameter' } + $rec | Should -Not -BeNullOrEmpty + $rec.Values | Should -Be @('array', 'file-system', 'object-store') + $rec.Name | Should -Be 'type' + } + + It 'keys the inline-parameter record as " #", with the /api// prefix stripped' { + $rec = $inlineResults | Where-Object { $_.Kind -eq 'inline-parameter' } + $rec.Key | Should -Be 'GET arrays/space#type' + } + + It 'does not reprocess a $ref entry in the inline-parameter pass (no double-count of the Resolution parameter)' { + ($inlineResults | Where-Object { $_.Name -eq 'resolution' }).Count | Should -Be 1 + ($inlineResults | Where-Object { $_.Name -eq 'resolution' }).Kind | Should -Be 'parameter' + } + + It 'does not emit an inline-parameter record for an operation parameter with no trigger phrase' { + ($inlineResults | Where-Object { $_.Name -eq 'start_time' }) | Should -BeNullOrEmpty + } + + It 'strips a non-versioned path prefix down to just the leading slash (e.g. /oauth2/1.0/token-shaped paths)' { + $spec = [PSCustomObject]@{ + components = [PSCustomObject]@{ schemas = [PSCustomObject]@{}; parameters = [PSCustomObject]@{} } + paths = [PSCustomObject]@{ + '/oauth2/1.0/token' = [PSCustomObject]@{ + post = [PSCustomObject]@{ + parameters = @( + [PSCustomObject]@{ name = 'grant_type'; 'in' = 'query'; description = 'Valid values are `client_credentials`.' } + ) + } + } + } + } + $rec = Get-PfbSpecValueEnums -Spec $spec | Where-Object { $_.Kind -eq 'inline-parameter' } + $rec.Key | Should -Be 'POST oauth2/1.0/token#grant_type' + } +} + +Describe 'Get-PfbResourceHint' { + It 'strips the leading -Pfb prefix' { + Get-PfbResourceHint -CmdletName 'New-PfbNetworkInterface' | Should -Be 'NetworkInterface' + } + + It 'returns the input unchanged when it does not match the -Pfb shape' { + Get-PfbResourceHint -CmdletName 'SomethingElse' | Should -Be 'SomethingElse' + } +} + +Describe 'Resolve-PfbFieldValueEnum' { + BeforeAll { + $script:history = [ordered]@{ + 'Widget.color' = [ordered]@{ Name = 'color'; Kind = 'schema'; MinVersion = '2.0'; CurrentValues = @('red', 'blue'); DistinctValueSets = [System.Collections.Generic.HashSet[string]]::new([string[]]@('blue,red')) } + 'Type' = [ordered]@{ Name = 'type'; Kind = 'parameter'; MinVersion = '2.0'; CurrentValues = @('array', 'file-system'); DistinctValueSets = [System.Collections.Generic.HashSet[string]]::new([string[]]@('array,file-system')) } + 'Type_for_performance' = [ordered]@{ Name = 'type'; Kind = 'parameter'; MinVersion = '2.0'; CurrentValues = @('array', 'client'); DistinctValueSets = [System.Collections.Generic.HashSet[string]]::new([string[]]@('array,client')) } + 'GET arrays/space#type' = [ordered]@{ Name = 'type'; Kind = 'inline-parameter'; MinVersion = '2.0'; CurrentValues = @('array', 'file-system'); DistinctValueSets = [System.Collections.Generic.HashSet[string]]::new([string[]]@('array,file-system')) } + } + } + + It 'returns no-spec-enum-found when the wire name matches nothing' { + $r = Resolve-PfbFieldValueEnum -WireName 'nope' -ResourceHint 'Widget' -History $history -OldestVersion '2.0' + $r.Status | Should -Be 'no-spec-enum-found' + } + + It 'matches via resource-hint-filtered schema kind' { + $r = Resolve-PfbFieldValueEnum -WireName 'color' -ResourceHint 'Widget' -History $history -OldestVersion '2.0' + $r.Status | Should -Be 'matched' + $r.Recommendation | Should -Be 'ValidateSet' + } + + It 'reports collision when parameter-kind records disagree and no inline match settles it' { + $r = Resolve-PfbFieldValueEnum -WireName 'type' -ResourceHint 'Nothing' -History $history -OldestVersion '2.0' + $r.Status | Should -Be 'collision' + } + + It 'an exact inline-parameter match settles an otherwise-ambiguous parameter-kind wire name' { + $r = Resolve-PfbFieldValueEnum -WireName 'type' -ResourceHint 'Nothing' -Endpoint 'arrays/space' -Method 'GET' -History $history -OldestVersion '2.0' + $r.Status | Should -Be 'matched' + $r.MatchedKey | Should -Be 'GET arrays/space#type' + } +} + +Describe 'Build-PfbValueEnumMap.ps1: inline-parameter-to-$ref refactor keeps the field''s minVersion at its original (inline) version' -Skip:($PSVersionTable.PSVersion.Major -lt 7) { + BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + $script:builderScript = Join-Path $repoRoot 'tools/Build-PfbValueEnumMap.ps1' + + # Reproduces the real Get-PfbArraySpace `type` history exactly: v1 defines it + # inline on GET /arrays/space with a full "Valid values..." description; v2 + # refactors the SAME parameter into a components.parameters $ref with + # byte-identical description text — a pure documentation refactor, not an API + # change. The field must still be attributed to v1, not v2, once diffed. + New-Item -ItemType Directory -Path 'TestDrive:\inlineSpecs' -Force | Out-Null + + $description = 'Display the metric of a specified object type. Valid values are `array`, `file-system`, and `object-store`. If not specified, defaults to `array`.' + + $specV1 = [ordered]@{ + openapi = '3.0.1' + info = @{ version = '5.0' } + components = [ordered]@{ schemas = [ordered]@{}; parameters = [ordered]@{} } + paths = [ordered]@{ + '/api/5.0/arrays/space' = [ordered]@{ + get = [ordered]@{ + parameters = @( + [ordered]@{ name = 'type'; 'in' = 'query'; description = $description } + ) + } + } + } + } + $specV2 = [ordered]@{ + openapi = '3.0.1' + info = @{ version = '5.1' } + components = [ordered]@{ + schemas = [ordered]@{} + parameters = [ordered]@{ + Type = [ordered]@{ name = 'type'; 'in' = 'query'; description = $description } + } + } + paths = [ordered]@{ + '/api/5.1/arrays/space' = [ordered]@{ + get = [ordered]@{ + parameters = @( + [ordered]@{ '$ref' = '#/components/parameters/Type' } + ) + } + } + } + } + + $specV1 | ConvertTo-Json -Depth 20 | Set-Content -Path 'TestDrive:\inlineSpecs\fb5.0.json' + $specV2 | ConvertTo-Json -Depth 20 | Set-Content -Path 'TestDrive:\inlineSpecs\fb5.1.json' + + & $builderScript -SpecsDirectory 'TestDrive:\inlineSpecs' -OutputPath 'TestDrive:\inlineOutput\map.json' -ReconciliationPath 'TestDrive:\inlineOutput\reconciliation.md' + $script:inlineManifest = Get-Content -Path 'TestDrive:\inlineOutput\map.json' -Raw | ConvertFrom-Json -Depth 20 + } + + It 'extracts the older (inline) version as an inline-parameter-kind record keyed by method+path+name' { + $inlineManifest.entries.'GET arrays/space#type' | Should -Not -BeNullOrEmpty + $inlineManifest.entries.'GET arrays/space#type'.kind | Should -Be 'inline-parameter' + $inlineManifest.entries.'GET arrays/space#type'.values | Should -Be @('array', 'file-system', 'object-store') + } + + It 'attributes the inline-parameter record''s minVersion to the OLDER version, not the version where it became a $ref' { + $inlineManifest.entries.'GET arrays/space#type'.minVersion | Should -Be '5.0' + } + + It 'also records the newer $ref''d definition under components.parameters, separately, without disturbing the inline record' { + $inlineManifest.entries.'Type' | Should -Not -BeNullOrEmpty + $inlineManifest.entries.'Type'.kind | Should -Be 'parameter' + $inlineManifest.entries.'Type'.minVersion | Should -Be '5.1' + } +} diff --git a/Tests/PfbVersionMap.Coverage.Tests.ps1 b/Tests/PfbVersionMap.Coverage.Tests.ps1 new file mode 100644 index 0000000..599c469 --- /dev/null +++ b/Tests/PfbVersionMap.Coverage.Tests.ps1 @@ -0,0 +1,64 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Data-integrity guard: every REST version the capability map was generated from must + have a corresponding entry in Data/PfbVersionMap.json. +.DESCRIPTION + Data/PfbVersionMap.json is currently a static, hand-curated file rather than one kept + fresh by tools/Update-PfbVersionMap.ps1's CI run (see that script's header and + tools/README.md Sec.3). This test does not care how the file was produced; it only + catches drift, e.g. a new REST version landing in Data/PfbCapabilityMap.json (via the + weekly CI refresh) without a matching Purity//FB pairing being added, either by hand + or by the generator. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + $script:capabilityMapPath = Join-Path $repoRoot 'Data/PfbCapabilityMap.json' + $script:versionMapPath = Join-Path $repoRoot 'Data/PfbVersionMap.json' + + # ConvertFrom-Json has no -Depth parameter on Windows PowerShell 5.1 (added in PS6) -- + # 5.1's own recursion limit (100) is already far deeper than either file's shape. + function script:ConvertFrom-PfbTestJson { + param([Parameter(ValueFromPipeline)] [string]$InputObject) + if ($PSVersionTable.PSVersion.Major -ge 6) { + $InputObject | ConvertFrom-Json -Depth 5 + } + else { + $InputObject | ConvertFrom-Json + } + } +} + +Describe 'Data/PfbVersionMap.json coverage (skips gracefully if the generated files are not present)' { + It 'has an entry for every REST version the capability map was generated from' { + if (-not (Test-Path $capabilityMapPath) -or -not (Test-Path $versionMapPath)) { + Set-ItResult -Skipped -Because 'Data/PfbCapabilityMap.json or Data/PfbVersionMap.json not present' + return + } + + $capabilityMap = Get-Content -Path $capabilityMapPath -Raw | ConvertFrom-PfbTestJson + $versionMap = Get-Content -Path $versionMapPath -Raw | ConvertFrom-PfbTestJson + + $expectedVersions = $capabilityMap.generatedFrom + $expectedVersions | Should -Not -BeNullOrEmpty -Because 'the capability map should record which REST versions it was generated from' + + $mappedVersions = [System.Collections.Generic.HashSet[string]]::new([string[]]$versionMap.PSObject.Properties.Name) + $missing = $expectedVersions | Where-Object { -not $mappedVersions.Contains($_) } + + $missing | Should -BeNullOrEmpty -Because "these REST versions are in the capability map but have no Purity//FB pairing in Data/PfbVersionMap.json: $($missing -join ', ')" + } + + It 'every entry has a non-empty purity property' { + if (-not (Test-Path $versionMapPath)) { + Set-ItResult -Skipped -Because 'Data/PfbVersionMap.json not present' + return + } + + $versionMap = Get-Content -Path $versionMapPath -Raw | ConvertFrom-PfbTestJson + + $emptyEntries = $versionMap.PSObject.Properties | Where-Object { [string]::IsNullOrWhiteSpace($_.Value.purity) } | ForEach-Object { $_.Name } + + $emptyEntries | Should -BeNullOrEmpty -Because "these REST versions have an entry but no purity value: $($emptyEntries -join ', ')" + } +} diff --git a/Tests/PfbVersionMapTools.Tests.ps1 b/Tests/PfbVersionMapTools.Tests.ps1 new file mode 100644 index 0000000..ac54389 --- /dev/null +++ b/Tests/PfbVersionMapTools.Tests.ps1 @@ -0,0 +1,91 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } +<# +.SYNOPSIS + Unit tests for tools/lib/PfbVersionMapTools.ps1. +.DESCRIPTION + Covers the internal SSOT (Single Source of Truth) API's fetch-URL builder and the + HTML table parser, both fully-specified and network-independent. The orchestration in + tools/Update-PfbVersionMap.ps1 itself (the live HTTP fetch) is not unit tested here, + consistent with the rest of this module's tools/ scripts. +#> + +BeforeAll { + $repoRoot = Split-Path -Parent $PSScriptRoot + . (Join-Path $repoRoot 'tools/lib/PfbVersionMapTools.ps1') +} + +Describe 'Get-PfbSsotVersionMapUri' { + It 'builds the topic-content URL from the given base URI and topic ID' { + Get-PfbSsotVersionMapUri -BaseUri 'https://example.test' -TopicId 'abc123' | + Should -Be 'https://example.test/v1/topics/abc123/content' + } + + It 'requires -BaseUri' { + { Get-PfbSsotVersionMapUri -TopicId 'abc123' } | Should -Throw + } + + It 'requires -TopicId' { + { Get-PfbSsotVersionMapUri -BaseUri 'https://example.test' } | Should -Throw + } +} + +Describe 'ConvertFrom-PfbSsotVersionMapHtml' { + It 'parses a data row into a REST version -> purity entry' { + $html = @' + + + + +
REST API VersionHTMLIntroduced in Purity//FBShips with Purity//FB
REST API 2.27html4.8.34.8.3
REST API 2.26html4.8.14.8.1
+'@ + $map = ConvertFrom-PfbSsotVersionMapHtml -Html $html + + $map['2.27'].purity | Should -Be '4.8.3' + $map['2.26'].purity | Should -Be '4.8.1' + } + + It 'uses the "Introduced in Purity//FB" column, not "Ships with", when they differ' { + $html = 'REST API 2.12x4.3.44.3.3' + $map = ConvertFrom-PfbSsotVersionMapHtml -Html $html + + $map['2.12'].purity | Should -Be '4.3.4' + } + + It 'strips nested tags and trims whitespace inside cells' { + $html = ' REST API 2.20 x 4.6.3 4.6.3' + $map = ConvertFrom-PfbSsotVersionMapHtml -Html $html + + $map['2.20'].purity | Should -Be '4.6.3' + } + + It 'decodes HTML entities inside cells' { + $html = 'REST API 2.9x4.2.0 4.2.0' + $map = ConvertFrom-PfbSsotVersionMapHtml -Html $html + + $map['2.9'].purity | Should -Be '4.2.0' + } + + It 'skips header/non-version rows that do not match the "REST API X.Y" pattern' { + $html = @' +REST API VersionHTMLIntroduced in Purity//FBShips with Purity//FB +REST API 2.27x4.8.34.8.3 +'@ + $map = ConvertFrom-PfbSsotVersionMapHtml -Html $html + + $map.Count | Should -Be 1 + $map.Contains('2.27') | Should -BeTrue + } + + It 'skips rows with fewer than 4 cells' { + $html = 'REST API 2.27only two cells' + $map = ConvertFrom-PfbSsotVersionMapHtml -Html $html + + $map.Count | Should -Be 0 + } + + It 'returns an empty map when no matching rows are present' { + $map = ConvertFrom-PfbSsotVersionMapHtml -Html 'nothing relevant here' + + $map.Count | Should -Be 0 + } +} diff --git a/Tests/Remove-PfbFileSystemSession.Tests.ps1 b/Tests/Remove-PfbFileSystemSession.Tests.ps1 new file mode 100644 index 0000000..7aeb6c0 --- /dev/null +++ b/Tests/Remove-PfbFileSystemSession.Tests.ps1 @@ -0,0 +1,67 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + Import-Module "$PSScriptRoot/../PureStorageFlashBladePowerShell.psd1" -Force + $script:fakeArray = [PSCustomObject]@{ Endpoint = 'fb.example.test'; ApiVersion = '2.0'; AuthToken = 'x' } +} + +Describe 'Remove-PfbFileSystemSession' { + BeforeEach { + Mock -ModuleName PureStorageFlashBladePowerShell Assert-PfbConnection { } + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-PfbApiRequest { } + } + + It 'has no -Id parameter (the endpoint has no ids query parameter in any spec version)' { + (Get-Command Remove-PfbFileSystemSession).Parameters.ContainsKey('Id') | Should -BeFalse + } + + It 'restricts -Protocol to the two real spec-documented values' { + $attr = (Get-Command Remove-PfbFileSystemSession).Parameters['Protocol'].Attributes | + Where-Object { $_ -is [System.Management.Automation.ValidateSetAttribute] } + $attr | Should -Not -BeNullOrEmpty + $attr.ValidValues | Should -Be @('nfs', 'smb') + } + + It 'rejects an invalid -Protocol value before making any API call' { + { Remove-PfbFileSystemSession -Protocol 'bogus' -Confirm:$false -Array $fakeArray } | Should -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'rejects combining -Name and -Protocol (true mutual exclusivity, matching the server)' { + { Remove-PfbFileSystemSession -Name 'some-session-name' -Protocol 'nfs' -Confirm:$false -Array $fakeArray } | Should -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'terminates a single session by its own session name via -Name, sending only names' { + Remove-PfbFileSystemSession -Name '22517998136858346-smb' -Confirm:$false -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $Method -eq 'DELETE' -and $Endpoint -eq 'file-systems/sessions' -and + $QueryParams['names'] -eq '22517998136858346-smb' -and + -not $QueryParams.ContainsKey('protocols') -and -not $QueryParams.ContainsKey('disruptive') + } + } + + It 'bulk-terminates by -Protocol, sending protocols comma-joined plus the required disruptive flag' { + Remove-PfbFileSystemSession -Protocol 'nfs', 'smb' -Force -Confirm:$false -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $Method -eq 'DELETE' -and $Endpoint -eq 'file-systems/sessions' -and + $QueryParams['protocols'] -eq 'nfs,smb' -and $QueryParams['disruptive'] -eq 'true' -and + -not $QueryParams.ContainsKey('names') + } + } + + It 'requires -Force for the -Protocol bulk path, independent of $ConfirmPreference (rejects -Protocol without -Force even with -Confirm:$false)' { + { Remove-PfbFileSystemSession -Protocol 'smb' -Confirm:$false -Array $fakeArray } | Should -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'honors -WhatIf for the -Name path (no call made)' { + Remove-PfbFileSystemSession -Name '22517998136858346-smb' -WhatIf -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'honors -WhatIf for the -Protocol bulk path (no call made)' { + Remove-PfbFileSystemSession -Protocol 'smb' -Force -WhatIf -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } +} diff --git a/Tests/Test-PfbSupport.Tests.ps1 b/Tests/Test-PfbSupport.Tests.ps1 new file mode 100644 index 0000000..7f11486 --- /dev/null +++ b/Tests/Test-PfbSupport.Tests.ps1 @@ -0,0 +1,39 @@ +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.0' } + +BeforeAll { + Import-Module "$PSScriptRoot/../PureStorageFlashBladePowerShell.psd1" -Force + $script:fakeArray = [PSCustomObject]@{ Endpoint = 'fb.example.test'; ApiVersion = '2.0'; AuthToken = 'x' } +} + +Describe 'Test-PfbSupport' { + BeforeEach { + Mock -ModuleName PureStorageFlashBladePowerShell Assert-PfbConnection { } + Mock -ModuleName PureStorageFlashBladePowerShell Invoke-PfbApiRequest { } + } + + It 'restricts -TestType to the three real spec-documented values' { + $attr = (Get-Command Test-PfbSupport).Parameters['TestType'].Attributes | + Where-Object { $_ -is [System.Management.Automation.ValidateSetAttribute] } + $attr | Should -Not -BeNullOrEmpty + $attr.ValidValues | Should -Be @('all', 'phonehome', 'remote-assist') + } + + It 'rejects an invalid -TestType value before making any API call' { + { Test-PfbSupport -TestType 'bogus' -Array $fakeArray } | Should -Throw + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 0 -Exactly + } + + It 'passes a valid -TestType through to the query string' { + Test-PfbSupport -TestType 'phonehome' -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + $Method -eq 'GET' -and $Endpoint -eq 'support/test' -and $QueryParams['test_type'] -eq 'phonehome' + } + } + + It 'omits -TestType from the query string when not specified' { + Test-PfbSupport -Array $fakeArray + Should -Invoke Invoke-PfbApiRequest -ModuleName PureStorageFlashBladePowerShell -Times 1 -Exactly -ParameterFilter { + -not $QueryParams.ContainsKey('test_type') + } + } +} diff --git a/scripts/Publish-Gallery.ps1 b/scripts/Publish-Gallery.ps1 index e34532a..f51143c 100644 --- a/scripts/Publish-Gallery.ps1 +++ b/scripts/Publish-Gallery.ps1 @@ -55,6 +55,11 @@ if (Test-Path $dstDir) { Remove-Item $dstDir -Recurse -Force } New-Item -ItemType Directory -Path $dstDir | Out-Null Copy-Item (Join-Path $srcDir "$srcName.psm1") (Join-Path $dstDir "$packageName.psm1") Copy-Item (Join-Path $srcDir 'LICENSE') (Join-Path $dstDir 'LICENSE') -ErrorAction SilentlyContinue +# Data/ holds the runtime capability + version maps (read from disk relative to the +# module root). build.ps1 copies it into the source package; carry it into the branded +# package too, or the API version-awareness check silently no-ops on every Gallery install. +$dataDir = Join-Path $srcDir 'Data' +if (Test-Path $dataDir) { Copy-Item $dataDir (Join-Path $dstDir 'Data') -Recurse } # 3. Re-brand the manifest. $psd1 = Get-Content (Join-Path $srcDir "$srcName.psd1") -Raw diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 3b881eb..d6c2e59 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -113,6 +113,19 @@ if (Test-Path $licenseSource) { Write-Host " Copied LICENSE" -ForegroundColor Green } +# --- Copy Data/ (runtime-consumed only: Get-PfbCapabilityMap.ps1 / Get-PfbVersionMap.ps1 +# read Data/PfbCapabilityMap.json and Data/PfbVersionMap.json relative to the installed +# module root via $script:PfbModuleRoot -- omitting this directory doesn't crash anything +# (both loaders treat a missing file as a graceful no-op), it just silently makes the +# entire "fail fast on an unsupported API version" feature inert for every real Gallery +# install. Reports/ is deliberately NEVER copied here -- it's maintainer/agent-facing +# advisory output only, dead weight for an end user's install. +$dataSource = Join-Path $repoRoot 'Data' +if (Test-Path $dataSource) { + Copy-Item -Path $dataSource -Destination $OutputPath -Recurse + Write-Host " Copied Data/" -ForegroundColor Green +} + # --- Summary --- Write-Host '' Write-Host "Build complete!" -ForegroundColor Green diff --git a/tools/Build-PfbApiDriftReport.ps1 b/tools/Build-PfbApiDriftReport.ps1 new file mode 100644 index 0000000..b7957b8 --- /dev/null +++ b/tools/Build-PfbApiDriftReport.ps1 @@ -0,0 +1,171 @@ +#Requires -Version 7.0 +<# +.SYNOPSIS + Builds the combined "API drift" report: uncovered endpoints, parameter gaps on + endpoints an existing cmdlet already calls, drift on ValidateSets that already + exist, and new ValidateSet candidates. +.DESCRIPTION + Composes Data/PfbCapabilityMap.json, the AST-based cmdlet-parameter inventory + (tools/lib/PfbCmdletParamTools.ps1), and Reports/PfbFieldCmdletMap.json rather than + re-deriving spec parsing for categories 1/2/4. Category 3 (ValidateSet drift) does + re-scan tools/specs/ via Get-PfbValueEnumHistory (tools/lib/PfbValueEnumTools.ps1) -- + see docs/superpowers/plans/2026-07-17-api-drift-report-plan.md's "Deviation from the + design spec" note for why that one category needs it. + + Reporting only -- does NOT add a ValidateSet, ArgumentCompleter, or typed parameter + to any Public/ cmdlet. +.PARAMETER SpecsDirectory + Where cached spec JSON files live. Defaults to tools/specs relative to this script. +.PARAMETER PublicDirectory + Where Public/ cmdlet files live. Defaults to Public/ relative to the repo root. +.PARAMETER PrivateDirectory + Where Private/ helper files live. Defaults to Private/ relative to the repo root. +.PARAMETER CapabilityMapPath + Path to the capability-map JSON. Defaults to Data/PfbCapabilityMap.json. +.PARAMETER FieldCmdletMapPath + Path to the field-cmdlet-map JSON. Defaults to Reports/PfbFieldCmdletMap.json. +.PARAMETER OutputPath + Where to write Reports/PfbApiDriftReport.json. Defaults there. +.PARAMETER ReportPath + Where to write Reports/PfbApiDriftReport.md. Defaults there. +.PARAMETER SinceVersion + Optional REST version (e.g. '2.26'). When given, uncoveredEndpoints and + parameterGaps are filtered down to only items introduced strictly after this + version -- e.g. -SinceVersion '2.26' isolates exactly what 2.27 added, instead of + the full accumulated backlog since 2.0. validateSetDrift and newValidateSetCandidates + are not filtered: the capability map doesn't track a per-value introduced-version for + either category, only per-field/per-endpoint, so there's no "since" signal to filter + on there yet. +#> +[CmdletBinding()] +param( + [string]$SpecsDirectory, + [string]$PublicDirectory, + [string]$PrivateDirectory, + [string]$CapabilityMapPath, + [string]$FieldCmdletMapPath, + [string]$OutputPath, + [string]$ReportPath, + [string]$SinceVersion +) + +$ErrorActionPreference = 'Stop' + +$scriptDir = $PSScriptRoot +. (Join-Path $scriptDir 'lib/PfbSpecTools.ps1') +. (Join-Path $scriptDir 'lib/PfbValueEnumTools.ps1') +. (Join-Path $scriptDir 'lib/PfbCmdletParamTools.ps1') +. (Join-Path $scriptDir 'lib/PfbApiDriftTools.ps1') + +$repoRoot = Split-Path -Parent $scriptDir +if (-not $SpecsDirectory) { $SpecsDirectory = Join-Path $scriptDir 'specs' } +if (-not $PublicDirectory) { $PublicDirectory = Join-Path $repoRoot 'Public' } +if (-not $PrivateDirectory) { $PrivateDirectory = Join-Path $repoRoot 'Private' } +if (-not $CapabilityMapPath) { $CapabilityMapPath = Join-Path (Join-Path $repoRoot 'Data') 'PfbCapabilityMap.json' } +if (-not $FieldCmdletMapPath) { $FieldCmdletMapPath = Join-Path (Join-Path $repoRoot 'Reports') 'PfbFieldCmdletMap.json' } +if (-not $OutputPath) { $OutputPath = Join-Path (Join-Path $repoRoot 'Reports') 'PfbApiDriftReport.json' } +if (-not $ReportPath) { $ReportPath = Join-Path (Join-Path $repoRoot 'Reports') 'PfbApiDriftReport.md' } + +if (-not (Test-Path $CapabilityMapPath)) { throw "Capability map not found at '$CapabilityMapPath'. Run Build-PfbCapabilityMap.ps1 first." } +if (-not (Test-Path $FieldCmdletMapPath)) { throw "Field-cmdlet map not found at '$FieldCmdletMapPath'. Run Build-PfbFieldCmdletMap.ps1 first." } + +$capabilityMap = Get-Content -Path $CapabilityMapPath -Raw | ConvertFrom-Json -Depth 20 +$fieldCmdletMap = Get-Content -Path $FieldCmdletMapPath -Raw | ConvertFrom-Json -Depth 20 + +$inventory = Get-PfbCmdletParameterInventory -PublicDirectory $PublicDirectory +$calledEndpoints = Get-PfbModuleCalledEndpoints -PublicDirectory $PublicDirectory -PrivateDirectory $PrivateDirectory + +# --- Category 1 --- +# The outer @(...) wraps the WHOLE pipeline (input AND ForEach-Object projection), not +# just the input side -- assigning a pipeline's output straight to a variable silently +# unwraps a single-item result to a bare scalar/hashtable in PowerShell (confirmed live: +# @(1) | ForEach-Object { [ordered]@{a=1} } assigns a bare OrderedDictionary, not a +# one-element array). Wrapping only the input (e.g. "@(Get-Foo) | ForEach-Object {...}") +# does NOT protect the assignment -- the collapse happens on the pipeline's OUTPUT, so +# the @(...) must enclose the entire right-hand side. Without this, a category with +# exactly one row serializes as a bare JSON object instead of a one-element JSON array, +# silently breaking the manifest's documented array-typed schema for that category. +$uncoveredEndpoints = @(Get-PfbEndpointCoverageGaps -CapabilityMap $capabilityMap -CalledEndpoints $calledEndpoints -BespokeAllowlist $script:PfbBespokeAuthEndpoints -SinceVersion $SinceVersion | + ForEach-Object { [ordered]@{ endpoint = $_.Endpoint; minVersion = $_.MinVersion } }) + +# --- Category 2 --- +$category2 = Get-PfbParameterCoverageGaps -CapabilityMap $capabilityMap -CmdletInventory $inventory -CalledEndpoints $calledEndpoints -SinceVersion $SinceVersion -ExcludedFields $script:PfbNonActionableParameters +$parameterGaps = @($category2.ParameterGaps | ForEach-Object { [ordered]@{ endpoint = $_.Endpoint; cmdlets = @($_.Cmdlets); missingParameters = @($_.MissingParameters) } }) +$notVerifiedEndpoints = @($category2.NotVerified | ForEach-Object { [ordered]@{ endpoint = $_.Endpoint; cmdlets = @($_.Cmdlets); reason = $_.Reason } }) + +# --- Category 3 --- +$historyResult = Get-PfbValueEnumHistory -SpecsDirectory $SpecsDirectory +$validateSetDrift = @(Get-PfbValidateSetDrift -CmdletInventory $inventory -History $historyResult.History -OldestVersion $historyResult.OldestVersion | + ForEach-Object { + [ordered]@{ + cmdlet = $_.Cmdlet + parameter = $_.Parameter + currentValidateSet = @($_.CurrentValidateSet) + specValues = @($_.SpecValues) + missingValues = @($_.MissingValues) + staleValues = @($_.StaleValues) + } + }) + +# --- Category 4: pass Build-PfbFieldCmdletMap.ps1's 'matched' entries straight through --- +$newValidateSetCandidates = @($fieldCmdletMap.entries | Where-Object { $_.status -eq 'matched' } | + ForEach-Object { [ordered]@{ cmdlet = $_.cmdlet; parameter = $_.parameter; wireName = $_.wireName; specValues = $_.specValues; recommendation = $_.recommendation } }) + +$manifest = [ordered]@{ + schemaVersion = 1 + generatedFrom = $historyResult.ProcessedVersions + sinceVersion = if ($SinceVersion) { $SinceVersion } else { $null } + uncoveredEndpoints = $uncoveredEndpoints + parameterGaps = $parameterGaps + notVerifiedEndpoints = $notVerifiedEndpoints + validateSetDrift = $validateSetDrift + newValidateSetCandidates = $newValidateSetCandidates +} + +$outputDir = Split-Path -Parent $OutputPath +if (-not (Test-Path $outputDir)) { New-Item -ItemType Directory -Path $outputDir -Force | Out-Null } +$manifest | ConvertTo-Json -Depth 20 | Set-Content -Path $OutputPath -Encoding UTF8 + +$mdLines = [System.Collections.Generic.List[string]]::new() +$mdLines.Add('# API Drift Report') +$mdLines.Add('') +$mdLines.Add("Generated by ``tools/Build-PfbApiDriftReport.ps1`` ($($historyResult.ProcessedVersions.Count) REST versions).") +$mdLines.Add('') +$mdLines.Add('Reporting only -- no `Public/` cmdlet is edited by this script.') +$mdLines.Add('') +if ($SinceVersion) { + $mdLines.Add("Uncovered endpoints and parameter gaps are filtered to items introduced after REST $SinceVersion. ValidateSet drift and new ValidateSet candidates are not filtered (no per-value introduced-version data to filter on).") + $mdLines.Add('') +} +$mdLines.Add('## Summary') +$mdLines.Add('') +$mdLines.Add("- Uncovered endpoints: $($uncoveredEndpoints.Count)") +$mdLines.Add("- Parameter gaps: $($parameterGaps.Count)") +$mdLines.Add("- Not-verified endpoints (has attributes/unresolved surface): $($notVerifiedEndpoints.Count)") +$mdLines.Add("- ValidateSet drift: $($validateSetDrift.Count)") +$mdLines.Add("- New ValidateSet candidates: $($newValidateSetCandidates.Count)") + +if ($uncoveredEndpoints.Count -gt 0) { + $mdLines.Add(''); $mdLines.Add('## Uncovered endpoints'); $mdLines.Add('') + $mdLines.Add('| Endpoint | Introduced in |'); $mdLines.Add('|---|---|') + foreach ($e in $uncoveredEndpoints) { $mdLines.Add("| ``$($e.endpoint)`` | $($e.minVersion) |") } +} +if ($parameterGaps.Count -gt 0) { + $mdLines.Add(''); $mdLines.Add('## Parameter gaps'); $mdLines.Add('') + $mdLines.Add('| Endpoint | Cmdlets | Missing parameters |'); $mdLines.Add('|---|---|---|') + foreach ($g in $parameterGaps) { $mdLines.Add("| ``$($g.endpoint)`` | $($g.cmdlets -join ', ') | $($g.missingParameters -join ', ') |") } +} +if ($validateSetDrift.Count -gt 0) { + $mdLines.Add(''); $mdLines.Add('## ValidateSet drift'); $mdLines.Add('') + $mdLines.Add('| Cmdlet | Parameter | Missing values | Stale values |'); $mdLines.Add('|---|---|---|---|') + foreach ($d in $validateSetDrift) { $mdLines.Add("| ``$($d.cmdlet)`` | ``-$($d.parameter)`` | $($d.missingValues -join ', ') | $($d.staleValues -join ', ') |") } +} +if ($newValidateSetCandidates.Count -gt 0) { + $mdLines.Add(''); $mdLines.Add('## New ValidateSet candidates'); $mdLines.Add('') + $mdLines.Add('| Cmdlet | Parameter | Spec values |'); $mdLines.Add('|---|---|---|') + foreach ($c in $newValidateSetCandidates) { $mdLines.Add("| ``$($c.cmdlet)`` | ``-$($c.parameter)`` | $($c.specValues -join ', ') |") } +} +$mdLines.Add('') + +Set-Content -Path $ReportPath -Value ($mdLines -join "`n") -Encoding UTF8 +Write-Host "Wrote API drift report to $OutputPath and $ReportPath" -ForegroundColor Green diff --git a/tools/Build-PfbCapabilityMap.ps1 b/tools/Build-PfbCapabilityMap.ps1 new file mode 100644 index 0000000..79d81bf --- /dev/null +++ b/tools/Build-PfbCapabilityMap.ps1 @@ -0,0 +1,121 @@ +#Requires -Version 7.0 +<# +.SYNOPSIS + Builds the FlashBlade API capability manifest from cached OpenAPI specs. +.DESCRIPTION + Loads every cached tools/specs/fb.json in ascending version order and + records, for each (HTTP method, normalized path), the earliest version it appears + in — and likewise for each parameter name and request-body top-level property name + on that endpoint. This is the data Phase 2's per-cmdlet capability check and Phase + 3's version-aware ArgumentCompleters will consume. + + Deliberately NOT included: per-enum-value "introduced in version X" tracking. The + FlashBlade OpenAPI spec has no structural JSON Schema `enum` anywhere (verified + against fb2.10 and fb2.27) — allowed values are documented only in free-text + `description` prose, which is not reliably machine-diffable. See + tools/lib/PfbSpecTools.ps1 for the full finding. + + Also NOT included (deferred, see plan): endpoint/field deprecation or removal + tracking, and hardware-model (//S vs //E) capability — that is a separate axis from + REST version and is handled in a later phase from a different data source. +.PARAMETER SpecsDirectory + Where cached spec JSON files live. Defaults to tools/specs relative to this script. +.PARAMETER OutputPath + Where to write the manifest. Defaults to Data/PfbCapabilityMap.json relative to the + repo root (one level up from tools/). +.EXAMPLE + ./tools/Build-PfbCapabilityMap.ps1 +#> +[CmdletBinding()] +param( + [string]$SpecsDirectory, + + [string]$OutputPath +) + +$ErrorActionPreference = 'Stop' + +$scriptDir = $PSScriptRoot +. (Join-Path $scriptDir 'lib/PfbSpecTools.ps1') + +if (-not $SpecsDirectory) { + $SpecsDirectory = Join-Path $scriptDir 'specs' +} +if (-not $OutputPath) { + $repoRoot = Split-Path -Parent $scriptDir + $OutputPath = Join-Path (Join-Path $repoRoot 'Data') 'PfbCapabilityMap.json' +} + +$specFiles = Get-ChildItem -Path $SpecsDirectory -Filter 'fb*.json' -ErrorAction SilentlyContinue +if (-not $specFiles) { + throw "No cached specs found in '$SpecsDirectory'. Run Update-PfbApiSpecs.ps1 first." +} + +# Sort by numeric version, not filename string (fb2.9 must sort before fb2.10). +$specFiles = $specFiles | ForEach-Object { + if ($_.BaseName -match '^fb(\d+)\.(\d+)$') { + [PSCustomObject]@{ + File = $_ + Major = [int]$Matches[1] + Minor = [int]$Matches[2] + } + } + else { + Write-Warning "Skipping unrecognized spec filename: $($_.Name)" + $null + } +} | Where-Object { $_ } | Sort-Object Major, Minor + +$endpoints = [ordered]@{} +$processedVersions = [System.Collections.Generic.List[string]]::new() + +foreach ($entry in $specFiles) { + $version = "$($entry.Major).$($entry.Minor)" + Write-Host "Processing $version ($($entry.File.Name))..." -ForegroundColor Cyan + + $spec = Get-Content -Path $entry.File.FullName -Raw | ConvertFrom-Json -Depth 64 + $capabilities = Get-PfbSpecCapabilities -Spec $spec + + foreach ($cap in $capabilities) { + $epKey = "$($cap.Method) $($cap.Path)" + + if (-not $endpoints.Contains($epKey)) { + $endpoints[$epKey] = [ordered]@{ + minVersion = $version + parameters = [ordered]@{} + bodyProperties = [ordered]@{} + } + } + $entryRecord = $endpoints[$epKey] + + foreach ($paramName in $cap.Parameters) { + if (-not $entryRecord.parameters.Contains($paramName)) { + $entryRecord.parameters[$paramName] = $version + } + } + foreach ($propName in $cap.BodyProperties) { + if (-not $entryRecord.bodyProperties.Contains($propName)) { + $entryRecord.bodyProperties[$propName] = $version + } + } + } + + $processedVersions.Add($version) +} + +$manifest = [ordered]@{ + schemaVersion = 1 + generatedFrom = $processedVersions + endpointCount = $endpoints.Count + endpoints = $endpoints +} + +$outputDir = Split-Path -Parent $OutputPath +if (-not (Test-Path $outputDir)) { + New-Item -ItemType Directory -Path $outputDir -Force | Out-Null +} + +$manifest | ConvertTo-Json -Depth 20 | Set-Content -Path $OutputPath -Encoding UTF8 + +Write-Host '' +Write-Host "Wrote $($endpoints.Count) endpoints from $($processedVersions.Count) versions to $OutputPath" -ForegroundColor Green diff --git a/tools/Build-PfbFieldCmdletMap.ps1 b/tools/Build-PfbFieldCmdletMap.ps1 new file mode 100644 index 0000000..15ed1d9 --- /dev/null +++ b/tools/Build-PfbFieldCmdletMap.ps1 @@ -0,0 +1,152 @@ +#Requires -Version 7.0 +<# +.SYNOPSIS + Joins the cmdlet parameter inventory (tools/lib/PfbCmdletParamTools.ps1) against the + prose value-enum data (tools/lib/PfbValueEnumTools.ps1) to recommend, per typed + Public/ parameter that lacks a ValidateSet today, whether it should become a + ValidateSet or an ArgumentCompleter. +.DESCRIPTION + Data-extraction and reporting only -- does NOT add a ValidateSet or ArgumentCompleter + to any Public/ cmdlet. See docs/superpowers/plans/2026-07-16-field-cmdlet-mapping.md + for the full design rationale and the exact ValidateSet-recommendation rule. + + Resolves a candidate's wire name against three kinds of value-enum record (see + tools/lib/PfbValueEnumTools.ps1): 'schema' (resource-hint filtered, a heuristic), + 'parameter' (a shared components.parameters dictionary name with no relationship to + the owning resource, resolved only when every same-named definition agrees), and + 'inline-parameter' (an exact " #" identity, resolvable + only when tools/lib/PfbCmdletParamTools.ps1's AST inventory could determine exactly + which endpoint this specific cmdlet parameter calls). An exact inline-parameter match + takes priority -- it settles ambiguity the other two kinds cannot (the real + Get-PfbArraySpace -Type case: two same-named-but-different-valued + components.parameters definitions, 'Type' and 'Type_for_performance', disambiguated + by knowing this cmdlet calls GET arrays/space specifically). +.PARAMETER SpecsDirectory + Where cached spec JSON files live. Defaults to tools/specs relative to this script. +.PARAMETER PublicDirectory + Where Public/ cmdlet files live. Defaults to Public/ relative to the repo root. +.PARAMETER OutputPath + Where to write Reports/PfbFieldCmdletMap.json. Defaults there. +.PARAMETER ReportPath + Where to write Reports/PfbFieldCmdletMapping.md. Defaults there. +#> +[CmdletBinding()] +param( + [string]$SpecsDirectory, + [string]$PublicDirectory, + [string]$OutputPath, + [string]$ReportPath +) + +$ErrorActionPreference = 'Stop' + +$scriptDir = $PSScriptRoot +. (Join-Path $scriptDir 'lib/PfbSpecTools.ps1') +. (Join-Path $scriptDir 'lib/PfbValueEnumTools.ps1') +. (Join-Path $scriptDir 'lib/PfbCmdletParamTools.ps1') + +$repoRoot = Split-Path -Parent $scriptDir +if (-not $SpecsDirectory) { $SpecsDirectory = Join-Path $scriptDir 'specs' } +if (-not $PublicDirectory) { $PublicDirectory = Join-Path $repoRoot 'Public' } +if (-not $OutputPath) { $OutputPath = Join-Path (Join-Path $repoRoot 'Reports') 'PfbFieldCmdletMap.json' } +if (-not $ReportPath) { $ReportPath = Join-Path (Join-Path $repoRoot 'Reports') 'PfbFieldCmdletMapping.md' } + +$specFiles = Get-ChildItem -Path $SpecsDirectory -Filter 'fb*.json' -ErrorAction SilentlyContinue +if (-not $specFiles) { + throw "No cached specs found in '$SpecsDirectory'. Run Update-PfbApiSpecs.ps1 first." +} + +$specFiles = $specFiles | ForEach-Object { + if ($_.BaseName -match '^fb(\d+)\.(\d+)$') { + [PSCustomObject]@{ File = $_; Major = [int]$Matches[1]; Minor = [int]$Matches[2] } + } +} | Where-Object { $_ } | Sort-Object Major, Minor + +# Re-derive, per (schema/param) Key, the full per-version value-set history -- NOT just +# the "latest wins" summary Reports/PfbValueEnumMap.json stores -- so stability (did the +# value set ever change since first seen?) can be computed. Deliberately a separate, +# self-contained re-scan rather than modifying the prior phase's already-shipped output +# shape, keeping this task's diff additive-only. +$historyResult = Get-PfbValueEnumHistory -SpecsDirectory $SpecsDirectory +$history = $historyResult.History +$processedVersions = $historyResult.ProcessedVersions +$oldestVersion = $historyResult.OldestVersion + +# --- Cmdlet parameter inventory, filtered to fields with no existing ValidateSet --- +$inventory = Get-PfbCmdletParameterInventory -PublicDirectory $PublicDirectory +$candidates = @($inventory | Where-Object { $_.Surface -eq 'Typed' -and -not $_.HasValidateSet }) +$attributesOnly = @($inventory | Where-Object { $_.Surface -eq 'AttributesOnly' } | ForEach-Object { [ordered]@{ cmdlet = $_.Cmdlet; parameter = $_.Parameter } }) +$typedUnresolved = @($inventory | Where-Object { $_.Surface -eq 'TypedUnresolved' } | ForEach-Object { [ordered]@{ cmdlet = $_.Cmdlet; parameter = $_.Parameter } }) + +$entries = foreach ($cand in $candidates) { + $hint = Get-PfbResourceHint -CmdletName $cand.Cmdlet + $resolution = Resolve-PfbFieldValueEnum -WireName $cand.WireName -ResourceHint $hint -Endpoint $cand.Endpoint -Method $cand.Method -History $history -OldestVersion $oldestVersion + + [ordered]@{ + cmdlet = $cand.Cmdlet + parameter = $cand.Parameter + wireName = $cand.WireName + status = $resolution.Status + matchedKey = $resolution.MatchedKey + specValues = $resolution.SpecValues + stableSinceOldestVersion = $resolution.Stable + recommendation = $resolution.Recommendation + } +} + +$manifest = [ordered]@{ + schemaVersion = 1 + generatedFrom = $processedVersions + entries = $entries + attributesOnly = $attributesOnly + typedUnresolved = $typedUnresolved +} + +$outputDir = Split-Path -Parent $OutputPath +if (-not (Test-Path $outputDir)) { New-Item -ItemType Directory -Path $outputDir -Force | Out-Null } +$manifest | ConvertTo-Json -Depth 20 | Set-Content -Path $OutputPath -Encoding UTF8 + +$statusCounts = [ordered]@{} +foreach ($statusName in @('matched', 'collision', 'not-found-in-resource', 'no-spec-enum-found')) { + $statusCounts[$statusName] = 0 +} +foreach ($e in $entries) { + if (-not $statusCounts.Contains($e.status)) { $statusCounts[$e.status] = 0 } + $statusCounts[$e.status]++ +} + +$mdLines = [System.Collections.Generic.List[string]]::new() +$mdLines.Add('# Field-to-Cmdlet Mapping Report') +$mdLines.Add('') +$mdLines.Add("Generated by ``tools/Build-PfbFieldCmdletMap.ps1`` ($($processedVersions.Count) REST versions).") +$mdLines.Add('') +$mdLines.Add('Reporting only -- no `Public/` cmdlet is edited by this script. Every `matched` row below is a candidate for a follow-up decision, not an action already taken.') +$mdLines.Add('') +$mdLines.Add('## Summary') +$mdLines.Add('') +foreach ($key in $statusCounts.Keys) { + $mdLines.Add("- $key`: $($statusCounts[$key])") +} +if ($statusCounts['matched'] -eq 0) { + $mdLines.Add('') + $mdLines.Add('No `matched` candidates this run -- this can be a genuinely correct result (most typed parameters without a `ValidateSet` are generic non-enum fields like filter/sort/limit/names/ids, not spec-documented enums) rather than a sign the tool found nothing useful. See the `collision`/`not-found-in-resource` rows below for what *is* actionable.') +} +$mdLines.Add('') +$mdLines.Add('| Cmdlet | Parameter | Wire name | Status | Spec values | Recommendation |') +$mdLines.Add('|---|---|---|---|---|---|') +foreach ($e in $entries) { + if ($e.status -eq 'no-spec-enum-found') { continue } + $mdLines.Add("| ``$($e.cmdlet)`` | ``-$($e.parameter)`` | $($e.wireName) | $($e.status) | $($e.specValues -join ', ') | $($e.recommendation) |") +} +$mdLines.Add('') +$mdLines.Add("## Attributes-only parameters (no typed field to attach either mechanism to): $($attributesOnly.Count)") +$mdLines.Add('') +foreach ($a in $attributesOnly) { $mdLines.Add("- ``$($a.cmdlet) -$($a.parameter)``") } +$mdLines.Add('') +$mdLines.Add("## Typed but unresolved wire name (needs manual inspection): $($typedUnresolved.Count)") +$mdLines.Add('') +foreach ($u in $typedUnresolved) { $mdLines.Add("- ``$($u.cmdlet) -$($u.parameter)``") } +$mdLines.Add('') + +Set-Content -Path $ReportPath -Value ($mdLines -join "`n") -Encoding UTF8 +Write-Host "Wrote $($entries.Count) entries to $OutputPath and $ReportPath" -ForegroundColor Green diff --git a/tools/Build-PfbValueEnumMap.ps1 b/tools/Build-PfbValueEnumMap.ps1 new file mode 100644 index 0000000..2ca0d7f --- /dev/null +++ b/tools/Build-PfbValueEnumMap.ps1 @@ -0,0 +1,297 @@ +#Requires -Version 7.0 +<# +.SYNOPSIS + Builds the FlashBlade prose "Valid/Possible values" enum manifest from cached + OpenAPI specs. +.DESCRIPTION + Loads every cached tools/specs/fb.json in ascending version order, extracts + every prose-documented value enumeration (see tools/lib/PfbValueEnumTools.ps1) keyed + by (SchemaName.PropertyName) or parameter component name, and diffs across versions + to attribute each entry its earliest-seen ("introduced in") version. The current + legal value set recorded for each entry reflects the newest processed version. + + This is data-extraction and validation only — it does NOT wire up ArgumentCompleters + and does NOT change Assert-PfbApiCapability enforcement. See + Value-Enum-Extraction-Work.md for the full design rationale and non-goals. + + Also writes a reconciliation report (Reports/PfbValueEnumReconciliation.md) comparing + this newly extracted data against every existing hand-written `ValidateSet` in + Public/ that encodes a spec-documented value enum. Report only — no Public/ cmdlet + is edited by this script. +.PARAMETER SpecsDirectory + Where cached spec JSON files live. Defaults to tools/specs relative to this script. +.PARAMETER OutputPath + Where to write the manifest. Defaults to Reports/PfbValueEnumMap.json relative to the + repo root (one level up from tools/). Reports/ is advisory output only, never read at + runtime -- see Reports/README.md. +.PARAMETER ReconciliationPath + Where to write the reconciliation report. Defaults to + Reports/PfbValueEnumReconciliation.md relative to the repo root. +.EXAMPLE + ./tools/Build-PfbValueEnumMap.ps1 +#> +[CmdletBinding()] +param( + [string]$SpecsDirectory, + + [string]$OutputPath, + + [string]$ReconciliationPath +) + +$ErrorActionPreference = 'Stop' + +$scriptDir = $PSScriptRoot +. (Join-Path $scriptDir 'lib/PfbSpecTools.ps1') +. (Join-Path $scriptDir 'lib/PfbValueEnumTools.ps1') + +if (-not $SpecsDirectory) { + $SpecsDirectory = Join-Path $scriptDir 'specs' +} +if (-not $OutputPath) { + $repoRoot = Split-Path -Parent $scriptDir + $OutputPath = Join-Path (Join-Path $repoRoot 'Reports') 'PfbValueEnumMap.json' +} +if (-not $ReconciliationPath) { + $repoRoot = Split-Path -Parent $scriptDir + $ReconciliationPath = Join-Path (Join-Path $repoRoot 'Reports') 'PfbValueEnumReconciliation.md' +} + +$specFiles = Get-ChildItem -Path $SpecsDirectory -Filter 'fb*.json' -ErrorAction SilentlyContinue +if (-not $specFiles) { + throw "No cached specs found in '$SpecsDirectory'. Run Update-PfbApiSpecs.ps1 first." +} + +# Sort by numeric version, not filename string (fb2.9 must sort before fb2.10). +$specFiles = $specFiles | ForEach-Object { + if ($_.BaseName -match '^fb(\d+)\.(\d+)$') { + [PSCustomObject]@{ + File = $_ + Major = [int]$Matches[1] + Minor = [int]$Matches[2] + } + } + else { + Write-Warning "Skipping unrecognized spec filename: $($_.Name)" + $null + } +} | Where-Object { $_ } | Sort-Object Major, Minor + +# One record per (SchemaName.PropertyName) or parameter key, tracking the earliest +# version it was ever seen in (MinVersion) and the most recently processed version's +# record (LastRecord) — the latter supplies the "current legal value set" / current +# parsed-vs-unparsed status, since values and prose can change release to release. +# +# $seen is deliberately case-INSENSITIVE (PowerShell's [ordered]@{} default) rather than +# a stricter Ordinal comparer. Confirmed live: the real spec renames a schema's casing +# between versions (e.g. "SNMPAgent" in early REST versions to "SnmpAgent" by fb2.27) — +# NOT a squash-mode-style same-name-different-meaning collision, just a vendor casing +# convention change over time for the *same* logical schema. A case-sensitive dictionary +# would keep both as separate entries, which in turn produces a manifest JSON with two +# top-level keys differing only by case — and PowerShell's ConvertFrom-Json (producing a +# PSCustomObject, the idiom used everywhere else in this repo, including every consumer +# of this file) hard-errors on that ("Cannot convert the JSON string because it contains +# keys with different casing"). So each case-insensitive-equivalent group collapses to +# one entry, but — unlike a real squash-mode merge — nothing about its VALUES gets +# blended: .Key is re-recorded on every sighting so the final output uses whichever +# version's casing was seen LAST (i.e. matches the newest/current spec), while +# MinVersion still reflects the earliest sighting under any casing. +$seen = [ordered]@{} +$processedVersions = [System.Collections.Generic.List[string]]::new() + +foreach ($entry in $specFiles) { + $version = "$($entry.Major).$($entry.Minor)" + Write-Host "Processing $version ($($entry.File.Name))..." -ForegroundColor Cyan + + $spec = Get-Content -Path $entry.File.FullName -Raw | ConvertFrom-Json -Depth 64 + $valueEnums = Get-PfbSpecValueEnums -Spec $spec + + foreach ($rec in $valueEnums) { + if (-not $seen.Contains($rec.Key)) { + $seen[$rec.Key] = [ordered]@{ + Key = $rec.Key + Kind = $rec.Kind + Name = $rec.Name + MinVersion = $version + LastRecord = $rec + } + } + else { + $seen[$rec.Key].Key = $rec.Key + $seen[$rec.Key].LastRecord = $rec + } + } + + $processedVersions.Add($version) +} + +$entries = [ordered]@{} +$unparsed = [System.Collections.Generic.List[object]]::new() + +foreach ($key in $seen.Keys) { + $s = $seen[$key] + if ($s.LastRecord.Parsed) { + $entries[$s.Key] = [ordered]@{ + values = $s.LastRecord.Values + minVersion = $s.MinVersion + kind = $s.Kind + name = $s.Name + } + } + else { + $unparsed.Add([ordered]@{ + key = $s.Key + kind = $s.Kind + name = $s.Name + version = $s.MinVersion + triggerText = $s.LastRecord.TriggerText + }) + } +} + +$manifest = [ordered]@{ + schemaVersion = 1 + generatedFrom = $processedVersions + entryCount = $entries.Count + unparsedCount = $unparsed.Count + entries = $entries + unparsed = $unparsed +} + +$outputDir = Split-Path -Parent $OutputPath +if (-not (Test-Path $outputDir)) { + New-Item -ItemType Directory -Path $outputDir -Force | Out-Null +} + +$manifest | ConvertTo-Json -Depth 20 | Set-Content -Path $OutputPath -Encoding UTF8 + +Write-Host '' +Write-Host "Wrote $($entries.Count) entries ($($unparsed.Count) unparsed) from $($processedVersions.Count) versions to $OutputPath" -ForegroundColor Green + +# --- Reconciliation against existing hand-written ValidateSets in Public/ --- +# Every ValidateSet found (as of this writing) whose values encode a spec-documented +# value enum, excluding Invoke-PfbApiRequest.ps1's HTTP-verb ValidateSet (not spec data). +# "Name" here is the field's wire name (request-body key or query-parameter name), which +# is what Get-PfbSpecValueEnums records as each entry's .name — see its header comment +# for why that differs from a parameter's components.parameters dictionary key. +# "ResourceHint" is a prefix filter on the schema half of an entry's Key (e.g. +# 'NetworkInterface' matches 'NetworkInterface.services' and 'NetworkInterfacePatch.services' +# but not an unrelated schema that happens to share the property name 'services'). This is +# NOT a real field->cmdlet/endpoint mapping (explicitly out of scope for this phase — see +# Value-Enum-Extraction-Work.md) — it is a best-effort disambiguation to avoid a false +# "stale"/"exact-match" claim built on an unrelated schema's same-named field. A field name +# common enough to appear on many resources (protocol, type) can still legitimately collide +# even after hint-filtering; that is reported as 'collision', not force-resolved. +$handWritten = @( + [PSCustomObject]@{ File = 'Public/Alert/New-PfbAlertWatcher.ps1'; Line = 22; Parameter = '-MinimumSeverity'; Name = 'minimum_notification_severity'; ResourceHint = 'AlertWatcher'; Values = @('info', 'warning', 'error', 'critical') } + [PSCustomObject]@{ File = 'Public/Alert/Update-PfbAlertWatcher.ps1'; Line = 29; Parameter = '-MinimumSeverity'; Name = 'minimum_notification_severity'; ResourceHint = 'AlertWatcher'; Values = @('info', 'warning', 'critical') } + [PSCustomObject]@{ File = 'Public/Bucket/New-PfbBucket.ps1'; Line = 29; Parameter = '-Versioning'; Name = 'versioning'; ResourceHint = 'Bucket'; Values = @('enabled', 'suspended', 'none') } + [PSCustomObject]@{ File = 'Public/Bucket/Update-PfbBucket.ps1'; Line = 31; Parameter = '-Versioning'; Name = 'versioning'; ResourceHint = 'Bucket'; Values = @('enabled', 'suspended', 'none') } + # '_multiProtocol' is the actual nested body-object schema name for this field (confirmed + # by direct spec inspection) — a literal alias, not a fuzzy resource-name guess. + [PSCustomObject]@{ File = 'Public/FileSystem/New-PfbFileSystem.ps1'; Line = 130; Parameter = '-MultiProtocolAccessControlStyle'; Name = 'access_control_style'; ResourceHint = @('FileSystem', '_multiProtocol'); Values = @('nfs', 'smb', 'shared', 'independent', 'mode-bits') } + [PSCustomObject]@{ File = 'Public/FileSystem/New-PfbFileSystem.ps1'; Line = 143; Parameter = '-GroupOwnership'; Name = 'group_ownership'; ResourceHint = 'FileSystem'; Values = @('creator', 'parent-directory') } + # '_fileSystemEradicationConfig' (as opposed to the sibling '_bucketEradicationConfig', + # which shares the same field name with an unrelated value set) — confirmed by direct + # spec inspection, not a fuzzy resource-name guess. + [PSCustomObject]@{ File = 'Public/FileSystem/New-PfbFileSystem.ps1'; Line = 147; Parameter = '-EradicationMode'; Name = 'eradication_mode'; ResourceHint = @('FileSystem', '_fileSystemEradicationConfig'); Values = @('permission-based', 'retention-based') } + [PSCustomObject]@{ File = 'Public/FileSystem/Update-PfbFileSystem.ps1'; Line = 97; Parameter = '-RequestedPromotionState'; Name = 'requested_promotion_state'; ResourceHint = 'FileSystem'; Values = @('promoted', 'demoted') } + [PSCustomObject]@{ File = 'Public/Array/Get-PfbArrayPerformance.ps1'; Line = 28; Parameter = '-Protocol'; Name = 'protocol'; ResourceHint = $null; Values = @('nfs', 'smb', 'http', 's3') } + [PSCustomObject]@{ File = 'Public/Network/New-PfbNetworkInterface.ps1'; Line = 52; Parameter = '-Services'; Name = 'services'; ResourceHint = 'NetworkInterface'; Values = @('data', 'egress-only', 'management', 'replication', 'support') } + [PSCustomObject]@{ File = 'Public/Network/New-PfbNetworkInterface.ps1'; Line = 59; Parameter = '-Type'; Name = 'type'; ResourceHint = 'NetworkInterface'; Values = @('vip') } +) + +function Test-PfbValueSetsEqual { + param([string[]]$A, [string[]]$B) + $setA = [System.Collections.Generic.HashSet[string]]::new([string[]]$A) + $setB = [System.Collections.Generic.HashSet[string]]::new([string[]]$B) + return $setA.SetEquals($setB) +} + +$reconciliation = foreach ($hw in $handWritten) { + $allMatches = @($entries.Keys | Where-Object { $entries[$_].name -eq $hw.Name } | ForEach-Object { + [PSCustomObject]@{ Key = $_; Values = $entries[$_].values } + }) + + # Strict prefix (not substring-contains): "NetworkInterface*" must correctly exclude + # the unrelated "_networkInterfaceNeighbor*" private schemas (a real collision found + # live) — those start with an underscore, so a plain prefix check already excludes + # them without needing a word-boundary check. Known private nested-object schemas + # that don't share the resource's own name prefix are listed as explicit extra hints + # above (e.g. '_multiProtocol', '_fileSystemEradicationConfig'), not matched via a + # looser "contains" rule that would just reopen the same false-positive risk. + $hints = @($hw.ResourceHint) | Where-Object { $_ } + $candidates = if ($hints.Count -gt 0) { + @($allMatches | Where-Object { + $entryKey = $_.Key + @($hints | Where-Object { $entryKey -like "$_*" }).Count -gt 0 + }) + } + else { + $allMatches + } + + $status = $null + $specValues = $null + $note = '' + + if ($candidates.Count -eq 0 -and $allMatches.Count -eq 0) { + $status = 'not-found' + } + elseif ($candidates.Count -eq 0) { + # The field name exists elsewhere in the spec, just not under this cmdlet's own + # resource — do not claim exact-match/stale against an unrelated schema. + $status = 'not-found-in-resource' + $note = "field '$($hw.Name)' not found under any of [$($hints -join ', ')]-hinted schemas; found elsewhere: $($allMatches.Key -join '; ')" + } + else { + $distinctValueSets = $candidates | ForEach-Object { ($_.Values | Sort-Object) -join ',' } | Select-Object -Unique + if (@($distinctValueSets).Count -gt 1) { + $status = 'collision' + $note = "matches $($candidates.Count) distinct (schema, property) entries with different value sets: $($candidates.Key -join '; ')" + } + else { + $specValues = $candidates[0].Values + $status = if (Test-PfbValueSetsEqual -A $hw.Values -B $specValues) { 'exact-match' } else { 'stale' } + if ($status -eq 'stale') { + $missing = $specValues | Where-Object { $_ -notin $hw.Values } + $extra = $hw.Values | Where-Object { $_ -notin $specValues } + $parts = @() + if ($missing) { $parts += "spec has but hand-written set is missing: $($missing -join ', ')" } + if ($extra) { $parts += "hand-written set has but spec does not list: $($extra -join ', ')" } + $note = $parts -join '; ' + } + } + } + + [PSCustomObject]@{ + File = $hw.File + Line = $hw.Line + Parameter = $hw.Parameter + HandValues = $hw.Values -join ', ' + SpecValues = if ($specValues) { $specValues -join ', ' } else { '' } + Status = $status + Note = $note + } +} + +Write-Host '' +Write-Host 'Reconciliation against hand-written ValidateSets:' -ForegroundColor Cyan +$reconciliation | Format-Table File, Parameter, Status, Note -AutoSize | Out-String | Write-Host + +$mdLines = [System.Collections.Generic.List[string]]::new() +$mdLines.Add('# Value-Enum Reconciliation Report') +$mdLines.Add('') +$mdLines.Add("Generated by ``tools/Build-PfbValueEnumMap.ps1`` against ``Reports/PfbValueEnumMap.json`` ($($processedVersions.Count) REST versions, $($entries.Count) entries).") +$mdLines.Add('') +$mdLines.Add('Compares every hand-written `ValidateSet` in `Public/` that encodes a spec-documented value enum against the newly extracted prose data. Report only — no `Public/` cmdlet is edited by this script. See `Value-Enum-Extraction-Work.md` for the full non-goal list.') +$mdLines.Add('') +$mdLines.Add('| File:Line | Parameter | Hand-written values | Spec values | Status | Note |') +$mdLines.Add('|---|---|---|---|---|---|') +foreach ($r in $reconciliation) { + $mdLines.Add("| ``$($r.File):$($r.Line)`` | ``$($r.Parameter)`` | $($r.HandValues) | $($r.SpecValues) | **$($r.Status)** | $($r.Note) |") +} +$mdLines.Add('') + +Set-Content -Path $ReconciliationPath -Value ($mdLines -join "`n") -Encoding UTF8 +Write-Host "Wrote reconciliation report to $ReconciliationPath" -ForegroundColor Green diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 0000000..1dba831 --- /dev/null +++ b/tools/README.md @@ -0,0 +1,259 @@ +# API Capability Map Toolchain + +Generates `Data/PfbCapabilityMap.json` — a manifest mapping every FlashBlade REST API +endpoint (and its parameters and request-body fields) to the REST version it was +introduced in — plus everything built on top of it: `Data/PfbVersionMap.json` (the +REST-version to Purity//FB-version pairing), prose-extracted value enumerations, a +field-to-cmdlet recommendation join, and a combined drift report (see the sections +below). The one runtime consumer is `Private/Assert-PfbApiCapability.ps1`, called from +`Invoke-PfbApiRequest.ps1`: it fails fast, before any HTTP call, when the connected +array's REST version can't satisfy an endpoint/parameter/field this toolchain has +recorded a later minimum version for. + +## Scripts + +Run in this order: + +1. **`Update-PfbApiSpecs.ps1`** — fetches every published REST version's OpenAPI spec + from `https://code.purestorage.com/swagger/` and caches it as pretty-printed JSON + under `tools/specs/fb.json`. Skips versions already cached unless `-Force`. + The spec isn't a plain downloadable file — see `lib/PfbSpecTools.ps1` for why, and how + it's extracted from the ReDoc reference page. + + `tools/specs/` is **gitignored, not committed**. It's a build-time input only — never + read at runtime — and at ~1-3MB per REST version (~48MB across the full history as of + 2026-07), committing it would bloat every clone of this repo. That matters here more + than in a typical repo: today, cloning this repo and copying the checkout straight into + `$env:PSModulePath` *is* the documented "from source" install method (see the root + README), so anything committed at repo root ships to every user, not just contributors. + Locally, just run the fetcher once and the cache persists on disk for reuse; CI + re-fetches the full set fresh on every run (a few minutes, and it only runs weekly). + + ```powershell + ./tools/Update-PfbApiSpecs.ps1 # fetch anything new + ./tools/Update-PfbApiSpecs.ps1 -Versions 2.26,2.27 -Force # re-fetch specific versions + ``` + +2. **`Build-PfbCapabilityMap.ps1`** — loads all cached specs in ascending version order + and diffs them into `Data/PfbCapabilityMap.json`. Runs entirely offline once specs are + cached. + + ```powershell + ./tools/Build-PfbCapabilityMap.ps1 + ``` + +3. **`Update-PfbVersionMap.ps1`** — builds `Data/PfbVersionMap.json`, the REST-version to + Purity//FB-version pairing, from a single internal SSOT (Single Source of Truth) API + call that returns the full REST<->Purity//FB mapping table for every version in one + HTML response. This is an internal endpoint, so its base URI, topic ID, and API key + are all required inputs with no default or hardcoded value in this repo — sourced + from `$env:SSOT_BASE_URI`, + `$env:SSOT_TOPIC_ID`, and `$env:SSOT_API_KEY` (sent as an `x-api-key` header) + respectively. Without all three configured, this script just reports which versions + need lookup and exits without failing. + + ```powershell + $env:SSOT_BASE_URI = '...' + $env:SSOT_TOPIC_ID = '...' + $env:SSOT_API_KEY = '...' + ./tools/Update-PfbVersionMap.ps1 + ``` + +4. **`Build-PfbValueEnumMap.ps1`** — a separate analysis built on top of the capability + map (see "Value-enum extraction" below): loads the same cached specs and extracts + prose-documented value enumerations + (e.g. `Bucket.versioning`'s "Valid values are `none`, `enabled`, and `suspended`.") + into `Reports/PfbValueEnumMap.json`. Also runs entirely offline once specs are cached. + + ```powershell + ./tools/Build-PfbValueEnumMap.ps1 + ``` + +5. **`Build-PfbApiDriftReport.ps1`** — the newest addition (see `Reports/README.md`): composes + the capability map, cmdlet inventory, and value-enum data above into one combined + "what's changed that we haven't caught up to" report, covering uncovered endpoints, new + parameters on endpoints we already call, drift on existing `ValidateSet`s, and new + `ValidateSet` candidates (reusing `Build-PfbFieldCmdletMap.ps1`'s `matched` output + directly). See `tools/lib/PfbApiDriftTools.ps1` for the underlying functions. + + ```powershell + ./tools/Build-PfbApiDriftReport.ps1 + ``` + + Pass `-SinceVersion` to isolate what a single new REST release actually added instead + of the full accumulated backlog -- e.g. after 2.27 ships, `-SinceVersion '2.26'` filters + `uncoveredEndpoints`/`parameterGaps` down to just the items introduced by 2.27. Only + those two categories support it: `validateSetDrift`/`newValidateSetCandidates` don't + carry a per-value introduced-version in the capability map to filter on. + + ```powershell + ./tools/Build-PfbApiDriftReport.ps1 -SinceVersion '2.26' + ``` + + `parameterGaps` also never reports a small set of non-actionable fields + (`$script:PfbNonActionableParameters` in `tools/lib/PfbApiDriftTools.ps1`: + `X-Request-ID`, `continuation_token`, `offset`) -- these are declared on nearly every + endpoint and would otherwise drown out real gaps. + +## What's deliberately NOT in the capability map + +The FlashBlade OpenAPI spec has no structural JSON Schema `enum` anywhere — verified +empty across every schema and parameter in both the oldest (fb2.10) and newest (fb2.27) +cached specs. Allowed values for fields like `Bucket.versioning` exist only as free-text +prose in `description` fields ("Valid values are `none`, `enabled`, and `suspended`."), +not as machine-readable constraints, so `Data/PfbCapabilityMap.json` +tracks endpoint, parameter, and request-body top-level property *existence* only — not +their legal values. That prose *is* now extracted, but into a separate file by a separate +generator — see "Value-enum extraction" below — precisely because it's a different kind +of claim with a different reliability bar (see that section for why per-*value* +"introduced in version X" tracking specifically remains out of scope even there). + +Also out of scope: hardware-model capability (//S vs //E — what the module's existing +~12 `-match`-based "not supported on this model" warnings actually gate on). That's a +separate axis from REST version, handled from a different data source and not part of +this toolchain. + +Also deliberately not built: version-aware `ArgumentCompleter`/`DynamicParam`s that would +hide a parameter an array's version doesn't support. Evaluated and shelved — completers +only complete a parameter's *value*, not its *name*, so they can't hide a parameter at +all; only `DynamicParam` can, and that would require editing every `Public/` cmdlet +individually for marginal benefit over the capability check above. + +## Value-enum extraction (`Build-PfbValueEnumMap.ps1`) + +A later, separate phase from the capability map above. `tools/lib/PfbValueEnumTools.ps1` +parses the "Valid/Possible values are/include ..." prose sentence out of a schema +property's or parameter's `description` — the only place these specs record a field's +legal value set, since (as above) there is no structural `enum` to read instead — and +`tools/Build-PfbValueEnumMap.ps1` diffs that across every cached spec version into +`Reports/PfbValueEnumMap.json`: + +```powershell +./tools/Build-PfbValueEnumMap.ps1 +``` + +Key correctness rules (each has a dedicated regression test in +`Tests/PfbValueEnumTools.Tests.ps1`): +- Entries are keyed by **`(SchemaName, PropertyName)`**, never by bare property name. + Two different schemas can share a property name with different legal values (e.g. + `NfsExportPolicyRuleBase.access` is `root-squash`/`all-squash`/`no-squash`, while the + presets-only `_presetWorkloadExportConfigurationNfsRule.access` is + `root-squash`/`all-squash`/`no-root-squash`) — collapsing by bare name would silently + merge them. +- The extractor also covers a parameter defined **inline** directly on a + `spec.paths..` operation — not just `components.schemas` properties and + named `components.parameters` entries. This matters because a field can be inline for + years before a later spec refactor turns it into a `$ref`: `GET /arrays/space`'s `type` + query parameter was inline (full "Valid values are `array`, `file-system`, + `object-store`." description) from REST 2.0 through 2.16, only becoming + `$ref: '#/components/parameters/Type'` at 2.17 — a pure documentation refactor, not an + API change. Without this pass, the field's true `minVersion` (2.0) would be invisible + and its earlier, inline-only history would be lost entirely. Keyed by + `" #"` (`Kind = 'inline-parameter'`), never the bare parameter + name, for the same never-collapse reason as above. +- Value extraction is scoped to the matched trigger *sentence* only, not the whole + description, since some descriptions repeat the same backtick-quoted values again in + explanatory prose that follows the enum sentence. +- A description that matches the trigger phrase but isn't actually a real enumeration + (a numeric range, or free-text prose that happens to contain the words "valid values") + is recorded as **unparsed**, not force-parsed and not silently dropped — surfaced in the + manifest's `unparsedCount`/`unparsed` fields, same "never silently over-claim coverage" + norm as the capability map's own coverage reporting. + +The builder also writes `Reports/PfbValueEnumReconciliation.md`, comparing every existing +hand-written cmdlet `ValidateSet` that encodes a spec-documented enum against this newly +extracted data (exact match / stale / not-found / collision with an unrelated same-named +field elsewhere in the spec). That report is informational only — it does not edit any +`Public/` cmdlet. + +**`Reports/PfbValueEnumMap.json`'s output is not consumed anywhere at runtime yet** — no +`ArgumentCompleter`, no `Assert-PfbApiCapability` enforcement. Whether/how to consume it +is a deliberate follow-on decision once real coverage/accuracy numbers exist from this +data, same as how the capability map above sat idle until `Assert-PfbApiCapability` was +built to consume it. + +Per-enum-*value* "introduced in version X" tracking (e.g. knowing that `suspended` was +added to `Bucket.versioning` at some later REST version, as opposed to the field's own +overall `minVersion`) is intentionally not attempted — no reliable way was found to diff +individual values across versions given how often the same prose gets reworded without +the value set itself changing. The manifest tracks each field's current legal value set +and the field's own earliest-seen version only. + +## Field-to-cmdlet mapping (`Build-PfbFieldCmdletMap.ps1`) + +Joins the cmdlet parameter inventory (from `PfbCmdletParamTools.ps1`, which reads `Public/` +cmdlet ASTs) against the prose value-enum data extracted above to recommend, per typed +`Public/` parameter that lacks a `ValidateSet` today, whether it should become a +`ValidateSet` or an `ArgumentCompleter`: + +```powershell +./tools/Build-PfbFieldCmdletMap.ps1 +``` + +Key correctness rules: +- A parameter is recommended `ValidateSet` only if: the parameter's wire field appears in + the spec, it has a documented value enumeration, that enumeration is present unchanged in + every REST version from the field's introduction onward, and the field was present since + the oldest cached version. +- A parameter is recommended `ArgumentCompleter` if the field exists but the value set + changed at any point in the history, or the field was introduced in a newer version. +- A parameter is classified `collision` if its wire name matches multiple schema keys with + different value sets, or `not-found-in-resource` if the wire name exists in the spec but + not under any schema the cmdlet's resource hint suggests. Both require manual follow-up + to ensure the intent is captured. +- An **`inline-parameter`**-kind value-enum record (see "Value-enum extraction" above) is + keyed by exact endpoint identity (`" #"`), so when + `PfbCmdletParamTools.ps1`'s AST inventory can determine exactly which endpoint a given + cmdlet parameter calls, an exact match there overrides an otherwise-ambiguous + `parameter`-kind wire name — this is precisely how `Get-PfbArraySpace -Type` resolves to + `matched`/`ValidateSet` instead of `collision`, even though its wire name `type` also + matches two disagreeing `components.parameters` definitions (`Type` and + `Type_for_performance`) elsewhere in the spec. +- `attributesOnly` and `typedUnresolved` entries are *reported*, not resolved — they list + parameters that either have no typed field to attach validation to (attributes-only), + or have a wire name that couldn't be resolved to a spec key. These require human + decisions (add a new typed parameter, or leave as-is); the script does not edit any + `Public/` cmdlet. + +The builder also writes `Reports/PfbFieldCmdletMapping.md`, a Markdown table summarizing +every candidate and its recommendation — informational only, not consumed at runtime. + +**`Reports/PfbFieldCmdletMap.json`'s output is not consumed anywhere at runtime yet** — no +`ValidateSet` or `ArgumentCompleter` is added to any `Public/` cmdlet by this script. +Whether/how to consume it is a deliberate follow-on decision. + +## Tests + +`Tests/PfbSpecTools.Tests.ps1` and `Tests/Build-PfbCapabilityMap.Tests.ps1` cover the +capability-map extraction/diffing logic against small synthetic fixtures — no network +access required. One additional test in `Build-PfbCapabilityMap.Tests.ps1` checks the +real committed manifest for coverage gaps against the newest locally-cached spec, and +skips gracefully if `tools/specs/` (gitignored — run `Update-PfbApiSpecs.ps1` first) or +`Data/PfbCapabilityMap.json` aren't present. + +`Tests/PfbVersionMapTools.Tests.ps1` covers the SSOT URL builder and HTML table parser +the same way — no network access, and no real base URI/topic ID/key needed, since those +are just parameters to a pure, synthetic-fixture-driven function. + +`Tests/PfbValueEnumTools.Tests.ps1` and `Tests/Build-PfbValueEnumMap.Tests.ps1` cover the +value-enum extraction/diffing logic the same way, plus a `Bucket.versioning` regression +fixture and a squash-mode-gotcha fixture (see "Value-enum extraction" above). Their real- +manifest checks skip gracefully if `tools/specs/` or `Reports/PfbValueEnumMap.json` aren't +present. + +## CI + +`.github/workflows/update-api-capability-map.yml` runs this pipeline weekly (and on +manual dispatch): re-fetches the full spec history into an ephemeral (non-committed) +cache, rebuilds `Data/PfbCapabilityMap.json`, and opens a PR if it changed — i.e. the +swagger index published a new REST version, or an existing endpoint gained new +parameters/fields. Requires the repository's Actions settings to permit workflow-created +pull requests. The `SSOT_API_KEY`/`SSOT_BASE_URI`/`SSOT_TOPIC_ID` secrets are optional — +when any are absent, the version-map step is skipped gracefully and only the capability +map updates (see item 3 above). + +`Build-PfbValueEnumMap.ps1`, `Build-PfbFieldCmdletMap.ps1`, and `Build-PfbApiDriftReport.ps1` +all run as part of the same weekly/dispatch job, right after the capability map is rebuilt, +so `Reports/PfbValueEnumMap.json`, `Reports/PfbFieldCmdletMap.json`, and +`Reports/PfbApiDriftReport.json` (+ their Markdown companions) stay fresh alongside +`Data/PfbCapabilityMap.json`. diff --git a/tools/Update-PfbApiSpecs.ps1 b/tools/Update-PfbApiSpecs.ps1 new file mode 100644 index 0000000..b65a49c --- /dev/null +++ b/tools/Update-PfbApiSpecs.ps1 @@ -0,0 +1,102 @@ +#Requires -Version 7.0 +<# +.SYNOPSIS + Fetches every published FlashBlade REST API version's OpenAPI spec and caches it + locally as pretty-printed JSON. +.DESCRIPTION + Discovers the list of published versions from https://code.purestorage.com/swagger/, + then for each one downloads its ReDoc reference page and extracts the embedded + OpenAPI 3.0.1 document (see tools/lib/PfbSpecTools.ps1 for why this can't be a + simple file download). Existing cached specs are skipped unless -Force is passed, + so re-runs (including the scheduled CI job) only fetch newly-published versions. + + Output: tools/specs/fb.json (one file per REST version), cached on disk under + a gitignored directory (see tools/README.md for why) so Build-PfbCapabilityMap.ps1 runs + offline/incrementally without re-fetching every time. +.PARAMETER OutputDirectory + Where to write cached spec JSON files. Defaults to tools/specs relative to this + script's location. +.PARAMETER Force + Re-fetch and overwrite specs that are already cached. +.PARAMETER Versions + Fetch only these specific version strings (e.g. '2.26','2.27') instead of the full + discovered list. Useful for spot-checks and CI dry runs. +.EXAMPLE + ./tools/Update-PfbApiSpecs.ps1 +.EXAMPLE + ./tools/Update-PfbApiSpecs.ps1 -Versions 2.26,2.27 -Force +#> +[CmdletBinding()] +param( + [string]$OutputDirectory, + + [switch]$Force, + + [string[]]$Versions +) + +$ErrorActionPreference = 'Stop' + +$scriptDir = $PSScriptRoot +. (Join-Path $scriptDir 'lib/PfbSpecTools.ps1') + +if (-not $OutputDirectory) { + $OutputDirectory = Join-Path $scriptDir 'specs' +} +if (-not (Test-Path $OutputDirectory)) { + New-Item -ItemType Directory -Path $OutputDirectory -Force | Out-Null +} + +$indexUri = 'https://code.purestorage.com/swagger/' + +if ($Versions) { + $targetVersions = $Versions +} +else { + Write-Host "Fetching version index from $indexUri..." -ForegroundColor Cyan + $indexResponse = Invoke-WebRequest -Uri $indexUri -UseBasicParsing + $targetVersions = Get-PfbSwaggerIndexVersions -IndexHtml $indexResponse.Content + Write-Host "Discovered $($targetVersions.Count) published versions: $($targetVersions -join ', ')" -ForegroundColor Gray +} + +$fetched = [System.Collections.Generic.List[string]]::new() +$skipped = [System.Collections.Generic.List[string]]::new() +$failed = [System.Collections.Generic.List[string]]::new() + +foreach ($version in $targetVersions) { + $outPath = Join-Path $OutputDirectory "fb$version.json" + + if ((Test-Path $outPath) -and -not $Force) { + $skipped.Add($version) + continue + } + + $pageUri = "https://code.purestorage.com/swagger/redoc/fb$version-api-reference.html" + Write-Host "Fetching $pageUri..." -ForegroundColor Cyan + + try { + $page = Invoke-WebRequest -Uri $pageUri -UseBasicParsing + $spec = ConvertFrom-PfbRedocHtml -Html $page.Content + + if (-not $spec.openapi) { + throw "Extracted document has no 'openapi' field — extraction likely failed silently." + } + + # Re-serialize pretty-printed for easier local diffing/inspection of the cache. + # Depth must cover the deepest schema nesting (allOf chains, nested component refs). + $spec | ConvertTo-Json -Depth 64 | Set-Content -Path $outPath -Encoding UTF8 + Write-Host " -> $outPath ($((Get-Item $outPath).Length / 1KB | ForEach-Object { '{0:N0} KB' -f $_ }))" -ForegroundColor Green + $fetched.Add($version) + } + catch { + Write-Warning "Failed to fetch/extract version '$version': $($_.Exception.Message)" + $failed.Add($version) + } +} + +Write-Host '' +Write-Host "Fetched: $($fetched.Count) Skipped (cached): $($skipped.Count) Failed: $($failed.Count)" -ForegroundColor Cyan +if ($failed.Count -gt 0) { + Write-Host "Failed versions: $($failed -join ', ')" -ForegroundColor Red + exit 1 +} diff --git a/tools/Update-PfbVersionMap.ps1 b/tools/Update-PfbVersionMap.ps1 new file mode 100644 index 0000000..e15b189 --- /dev/null +++ b/tools/Update-PfbVersionMap.ps1 @@ -0,0 +1,123 @@ +#Requires -Version 7.0 +<# +.SYNOPSIS + Builds/updates the REST-API-version <-> Purity//FB-version map from the SSOT + (Single Source of Truth) API. +.DESCRIPTION + Each FlashBlade REST API version has a corresponding row in a single "FlashBlade + Management REST API Reference" table. This script fetches that table in + one call and derives the REST<->Purity//FB pairing, writing Data/PfbVersionMap.json + so runtime code (the capability check in Private/Assert-PfbApiCapability.ps1) can + render messages like "requires REST 2.26 / Purity//FB 4.8.1" without a live lookup. + + The base URI and topic ID are internal details and are not hardcoded in this repo - + both are required inputs, sourced from environment variables as with the API key. + + When the API key, base URI, or topic ID aren't configured (local dev without them, + or CI without the secrets set), this script does not fail - it reports which + versions still need lookup and exits, leaving PfbVersionMap.json untouched. +.PARAMETER SsotApiKey + API key for the SSOT proxy (`x-api-key` header). Defaults to $env:SSOT_API_KEY. +.PARAMETER BaseUri + Base URI of the SSOT proxy. Defaults to $env:SSOT_BASE_URI. +.PARAMETER TopicId + SSOT topic ID for the version-mapping reference page. Defaults to $env:SSOT_TOPIC_ID. +.PARAMETER Versions + REST versions to look up (e.g. '2.26','2.27'). Defaults to every version discovered + under tools/specs/ that is not yet present in Data/PfbVersionMap.json. +.PARAMETER OutputPath + Where to write the map. Defaults to Data/PfbVersionMap.json relative to the repo root. +#> +[CmdletBinding()] +param( + [string]$SsotApiKey = $env:SSOT_API_KEY, + + [string]$BaseUri = $env:SSOT_BASE_URI, + + [string]$TopicId = $env:SSOT_TOPIC_ID, + + [string[]]$Versions, + + [string]$OutputPath +) + +$ErrorActionPreference = 'Stop' + +$scriptDir = $PSScriptRoot +$repoRoot = Split-Path -Parent $scriptDir +. (Join-Path $scriptDir 'lib/PfbVersionMapTools.ps1') + +if (-not $OutputPath) { + $OutputPath = Join-Path (Join-Path $repoRoot 'Data') 'PfbVersionMap.json' +} + +# --- Determine which versions need looking up --- + +$existingMap = [ordered]@{} +if (Test-Path $OutputPath) { + (Get-Content -Path $OutputPath -Raw | ConvertFrom-Json -Depth 5).PSObject.Properties | + ForEach-Object { $existingMap[$_.Name] = $_.Value } +} + +if (-not $Versions) { + $specsDir = Join-Path $scriptDir 'specs' + if (Test-Path $specsDir) { + $Versions = Get-ChildItem -Path $specsDir -Filter 'fb*.json' | + Where-Object { $_.BaseName -match '^fb(\d+\.\d+)$' } | + ForEach-Object { $Matches[1] } | + Where-Object { -not $existingMap.Contains($_) } + } +} + +if (-not $Versions) { + Write-Host 'No versions need looking up (nothing new since the last run).' -ForegroundColor Green + return +} + +$missingConfig = @() +if (-not $SsotApiKey) { $missingConfig += '$env:SSOT_API_KEY / -SsotApiKey' } +if (-not $BaseUri) { $missingConfig += '$env:SSOT_BASE_URI / -BaseUri' } +if (-not $TopicId) { $missingConfig += '$env:SSOT_TOPIC_ID / -TopicId' } + +if ($missingConfig) { + Write-Warning @" +SSOT not fully configured - missing: $($missingConfig -join ', '). This step is +skipped in that case rather than failing - CI will proceed without updating the version +map, and Data/PfbVersionMap.json is left untouched. + +Versions still needing a REST<->Purity mapping: $($Versions -join ', ') +"@ + return +} + +# --- Fetch + parse the full mapping table in one call --- + +$uri = Get-PfbSsotVersionMapUri -BaseUri $BaseUri -TopicId $TopicId +Write-Host "Fetching $uri..." -ForegroundColor Cyan + +$response = Invoke-WebRequest -Uri $uri -Headers @{ 'x-api-key' = $SsotApiKey } -UseBasicParsing +$parsed = ConvertFrom-PfbSsotVersionMapHtml -Html $response.Content + +$updated = $false +foreach ($version in $Versions) { + if ($parsed.Contains($version)) { + $existingMap[$version] = $parsed[$version] + $updated = $true + Write-Host " -> REST $version = Purity//FB $($parsed[$version].purity)" -ForegroundColor Green + } + else { + Write-Warning "SSOT table has no row for REST $version." + } +} + +if ($updated) { + $outputDir = Split-Path -Parent $OutputPath + if (-not (Test-Path $outputDir)) { + New-Item -ItemType Directory -Path $outputDir -Force | Out-Null + } + $existingMap | ConvertTo-Json -Depth 5 | Set-Content -Path $OutputPath -Encoding UTF8 + Write-Host "Wrote $OutputPath" -ForegroundColor Green +} +else { + Write-Host 'No entries were successfully parsed; output left unchanged.' -ForegroundColor Yellow +} diff --git a/tools/lib/PfbApiDriftTools.ps1 b/tools/lib/PfbApiDriftTools.ps1 new file mode 100644 index 0000000..bc0dab6 --- /dev/null +++ b/tools/lib/PfbApiDriftTools.ps1 @@ -0,0 +1,331 @@ +<# +.SYNOPSIS + Category 1 (uncovered endpoints) and category 2 (parameter gaps) of the API drift + report. Dot-sourced by tools/Build-PfbApiDriftReport.ps1 and its Pester tests. + Category 3 (ValidateSet drift) lives here too -- see Get-PfbValidateSetDrift, added + in a later task -- reusing Resolve-PfbFieldValueEnum from + tools/lib/PfbValueEnumTools.ps1. Category 4 (new ValidateSet candidates) needs no new + code at all: it's tools/Build-PfbFieldCmdletMap.ps1's existing 'matched' output, + consumed directly by the orchestrator. +#> + +# Deliberately NOT Set-StrictMode -- same reasoning as PfbSpecTools.ps1/PfbValueEnumTools.ps1. + +# Endpoints reached exclusively through hand-written auth code that never calls +# Invoke-PfbApiRequest (it's what establishes the session Invoke-PfbApiRequest itself +# depends on) -- confirmed by reading Public/Connection/Connect-PfbArray.ps1, +# Public/Connection/Disconnect-PfbArray.ps1, and Private/Invoke-PfbOAuth2Login.ps1 +# directly. admins/api-tokens is deliberately NOT here: Connect-PfbArray.ps1 also touches +# it via raw Invoke-RestMethod for post-login token minting, but GET/POST/DELETE +# admins/api-tokens are already covered through the standard Invoke-PfbApiRequest +# convention by Public/Admin/{Get,New,Remove}-PfbApiToken.ps1, so Get-PfbModuleCalledEndpoints's +# normal scan already sees them without needing this allowlist. +$script:PfbBespokeAuthEndpoints = @( + 'GET /api/api_version', + 'POST /api/login', + 'POST /api/logout', + 'POST /oauth2/1.0/token' +) + +# Fields never worth reporting as a category-2 gap, each for its own confirmed reason -- +# not the same list as $script:PfbBespokeAuthEndpoints (that's endpoint keys; this is +# field names). Deliberately excludes context_names/allow_errors/sort/total_only -- those +# change request *behavior* (fleet-context targeting, bulk-error tolerance, sorting, +# aggregate-only responses) and are real, if broad, gaps, not noise. +# - X-Request-ID: no functional effect on the request -- request/response-log +# correlation only ("Supplied by client during request or generated by server," per +# the spec), present on 629/632 capability-map endpoints as of 2.27 with zero cmdlets +# exposing it anywhere (confirmed via grep of Public/+Private/). +# - continuation_token: superseded by Invoke-PfbApiRequest's own -AutoPaginate, which +# already reads response.continuation_token and re-queries automatically +# (Private/Invoke-PfbApiRequest.ps1) -- a typed parameter would let a caller interfere +# with pagination state the wrapper already owns end-to-end. +# - offset: an alternate, unused positioning mechanism into the same paginated +# collections -AutoPaginate already retrieves in full; co-occurs with +# continuation_token on 208/212 of its capability-map endpoints, and zero cmdlets +# expose it. +$script:PfbNonActionableParameters = @( + 'X-Request-ID', + 'continuation_token', + 'offset' +) + +. (Join-Path $PSScriptRoot 'PfbValueEnumTools.ps1') + +function Test-PfbApiVersionNewerThan { + <# + .SYNOPSIS + Tests whether REST version string -Version is numerically newer than -Baseline. + Naive string comparison ranks '2.9' above '2.26' -- splits each into Major/Minor + integers instead (same idiom as Get-PfbValueEnumHistory in PfbValueEnumTools.ps1). + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] [string]$Version, + [Parameter(Mandatory)] [string]$Baseline + ) + + $vParts = $Version -split '\.' + $bParts = $Baseline -split '\.' + $vMajor = [int]$vParts[0]; $vMinor = [int]$vParts[1] + $bMajor = [int]$bParts[0]; $bMinor = [int]$bParts[1] + + if ($vMajor -ne $bMajor) { return $vMajor -gt $bMajor } + return $vMinor -gt $bMinor +} + +function Get-PfbModuleCalledEndpoints { + <# + .SYNOPSIS + Scans every Public/*.ps1 and Private/*.ps1 function for Invoke-PfbApiRequest + calls, extracting each literal -Method/-Endpoint pair, normalized to the same + " /" key format Data/PfbCapabilityMap.json uses (see + Private/Assert-PfbApiCapability.ps1:40-41). + .OUTPUTS + [PSCustomObject]@{ Key; Method; Endpoint; Resolved; Cmdlet; File }[] -- Resolved + is $false (Key/Method/Endpoint all $null) when a call's -Endpoint isn't a plain + string literal (built dynamically via interpolation or a variable), never + silently dropped or guessed at. + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] [string]$PublicDirectory, + [Parameter(Mandatory)] [string]$PrivateDirectory + ) + + $results = [System.Collections.Generic.List[object]]::new() + $files = @(Get-ChildItem -Path $PublicDirectory -Filter '*.ps1' -Recurse -File) + + @(Get-ChildItem -Path $PrivateDirectory -Filter '*.ps1' -Recurse -File) + + foreach ($file in $files) { + $tokens = $null; $parseErrors = $null + $ast = [System.Management.Automation.Language.Parser]::ParseFile($file.FullName, [ref]$tokens, [ref]$parseErrors) + $functionAsts = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) + + foreach ($funcAst in $functionAsts) { + $commands = $funcAst.FindAll({ + param($n) + $n -is [System.Management.Automation.Language.CommandAst] -and + $n.GetCommandName() -eq 'Invoke-PfbApiRequest' + }, $true) + + foreach ($cmd in $commands) { + $method = $null; $endpoint = $null + $elements = $cmd.CommandElements + for ($i = 0; $i -lt $elements.Count; $i++) { + $el = $elements[$i] + if ($el -isnot [System.Management.Automation.Language.CommandParameterAst]) { continue } + $next = if ($i + 1 -lt $elements.Count) { $elements[$i + 1] } else { $null } + if (-not $next) { continue } + if ($el.ParameterName -eq 'Method' -and $next -is [System.Management.Automation.Language.StringConstantExpressionAst]) { + $method = $next.Value + } + elseif ($el.ParameterName -eq 'Endpoint' -and $next -is [System.Management.Automation.Language.StringConstantExpressionAst]) { + $endpoint = $next.Value + } + } + + if ($method -and $endpoint) { + $normalizedEndpoint = '/' + $endpoint.TrimStart('/') + $results.Add([PSCustomObject]@{ + Key = "$($method.ToUpperInvariant()) $normalizedEndpoint" + Method = $method.ToUpperInvariant() + Endpoint = $normalizedEndpoint + Resolved = $true + Cmdlet = $funcAst.Name + File = $file.FullName + }) + } + else { + $results.Add([PSCustomObject]@{ + Key = $null + Method = $null + Endpoint = $null + Resolved = $false + Cmdlet = $funcAst.Name + File = $file.FullName + }) + } + } + } + } + + return $results +} + +function Get-PfbEndpointCoverageGaps { + <# + .SYNOPSIS + Category 1: every Data/PfbCapabilityMap.json endpoint key that no + Get-PfbModuleCalledEndpoints result covers and that isn't on -BespokeAllowlist. + .PARAMETER SinceVersion + When given, only endpoints whose minVersion is strictly newer than this REST + version are returned -- e.g. -SinceVersion '2.26' isolates gaps introduced by + 2.27 only, dropping the rest of the accumulated backlog. + .OUTPUTS + [PSCustomObject]@{ Endpoint; MinVersion }[] + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] $CapabilityMap, + [Parameter(Mandatory)] [object[]]$CalledEndpoints, + [string[]]$BespokeAllowlist = @(), + [string]$SinceVersion + ) + + $calledKeys = [System.Collections.Generic.HashSet[string]]::new([string[]]@( + $CalledEndpoints | Where-Object { $_.Resolved } | ForEach-Object { $_.Key } + )) + + foreach ($key in $CapabilityMap.endpoints.PSObject.Properties.Name) { + if ($calledKeys.Contains($key)) { continue } + if ($BespokeAllowlist -contains $key) { continue } + $minVersion = $CapabilityMap.endpoints.$key.minVersion + if ($SinceVersion -and -not (Test-PfbApiVersionNewerThan -Version $minVersion -Baseline $SinceVersion)) { continue } + [PSCustomObject]@{ + Endpoint = $key + MinVersion = $minVersion + } + } +} + +function Get-PfbParameterCoverageGaps { + <# + .SYNOPSIS + Category 2: for each endpoint an existing cmdlet already calls, flags a + capability-map-known parameter/body-field the cmdlet doesn't expose as a typed + parameter -- but ONLY for "fully mapped" cmdlets (every Public/ parameter on + every cmdlet calling this endpoint resolved Surface -eq 'Typed'; zero + AttributesOnly/TypedUnresolved anywhere). A cmdlet with any AttributesOnly/ + TypedUnresolved parameter may already expose a "new" field through a path this + AST-only inventory can't see, so its endpoint gets a not-verified entry instead + of a guessed gap. + .PARAMETER SinceVersion + When given, a gap's MissingParameters is filtered down to only fields whose + capability-map version is strictly newer than this REST version -- e.g. + -SinceVersion '2.26' isolates fields introduced by 2.27 only. An endpoint whose + every missing field predates -SinceVersion is dropped from ParameterGaps + entirely (not emitted with an empty MissingParameters list). + .PARAMETER ExcludedFields + Field names never reported as a missing parameter, regardless of version -- + e.g. $script:PfbNonActionableParameters. For fields with no functional gap worth + reporting (request-tracing headers, pagination internals already handled by + -AutoPaginate, etc.) that would otherwise appear on nearly every gap and drown out + real ones. An endpoint whose every missing field is excluded is dropped from + ParameterGaps entirely (not emitted with an empty MissingParameters list). + .OUTPUTS + [PSCustomObject]@{ ParameterGaps; NotVerified }. ParameterGaps is + [PSCustomObject]@{ Endpoint; Cmdlets; MissingParameters }[]. NotVerified is + [PSCustomObject]@{ Endpoint; Cmdlets; Reason }[]. + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] $CapabilityMap, + [Parameter(Mandatory)] [object[]]$CmdletInventory, + [Parameter(Mandatory)] [object[]]$CalledEndpoints, + [string]$SinceVersion, + [string[]]$ExcludedFields = @() + ) + + $inventoryByCmdlet = $CmdletInventory | Group-Object -Property Cmdlet -AsHashTable -AsString + $endpointGroups = @($CalledEndpoints | Where-Object { $_.Resolved } | Group-Object -Property Key) + + $parameterGaps = [System.Collections.Generic.List[object]]::new() + $notVerified = [System.Collections.Generic.List[object]]::new() + + foreach ($group in $endpointGroups) { + $key = $group.Name + $entry = $CapabilityMap.endpoints.$key + if (-not $entry) { continue } + + $cmdlets = @($group.Group.Cmdlet | Select-Object -Unique) + + $fullyMapped = $true + $exposedWireNames = [System.Collections.Generic.HashSet[string]]::new() + foreach ($cmdletName in $cmdlets) { + $rows = @($inventoryByCmdlet[$cmdletName]) + foreach ($row in $rows) { + if ($row.Surface -ne 'Typed') { $fullyMapped = $false; continue } + if ($row.WireName) { [void]$exposedWireNames.Add($row.WireName) } + } + } + + if (-not $fullyMapped) { + $notVerified.Add([PSCustomObject]@{ Endpoint = $key; Cmdlets = $cmdlets; Reason = 'has attributes/unresolved surface' }) + continue + } + + $fieldVersions = @{} + if ($entry.parameters) { foreach ($p in $entry.parameters.PSObject.Properties) { $fieldVersions[$p.Name] = $p.Value } } + if ($entry.bodyProperties) { foreach ($p in $entry.bodyProperties.PSObject.Properties) { $fieldVersions[$p.Name] = $p.Value } } + + $knownFieldNames = [System.Collections.Generic.List[string]]::new() + $knownFieldNames.AddRange([string[]]@($fieldVersions.Keys)) + + # Sort-Object here is load-bearing, not cosmetic: $fieldVersions above is a plain + # Hashtable, whose .Keys enumeration order depends on .NET's per-process-randomized + # string hash codes -- without this sort, MissingParameters silently reorders itself + # run-to-run on identical input (confirmed live: regenerating the drift report twice + # produced two byte-different files for the same underlying content). + $missing = @($knownFieldNames | Select-Object -Unique | Where-Object { -not $exposedWireNames.Contains($_) } | Sort-Object) + if ($SinceVersion) { + $missing = @($missing | Where-Object { Test-PfbApiVersionNewerThan -Version $fieldVersions[$_] -Baseline $SinceVersion }) + } + if ($ExcludedFields) { + $missing = @($missing | Where-Object { $ExcludedFields -notcontains $_ }) + } + if ($missing.Count -gt 0) { + $parameterGaps.Add([PSCustomObject]@{ Endpoint = $key; Cmdlets = $cmdlets; MissingParameters = $missing }) + } + } + + return [PSCustomObject]@{ ParameterGaps = $parameterGaps.ToArray(); NotVerified = $notVerified.ToArray() } +} + +function Get-PfbValidateSetDrift { + <# + .SYNOPSIS + Category 3: flags a typed Public/ parameter whose hand-written ValidateSet + disagrees with the spec's current documented value list for the same field -- + missing values (the spec documents a legal value the ValidateSet rejects + client-side, e.g. the real Get-PfbArrayPerformance -Protocol 'all' bug), + stale values (the ValidateSet allows a value the spec no longer, or never did, + document), or both. + .OUTPUTS + [PSCustomObject]@{ Cmdlet; Parameter; CurrentValidateSet; SpecValues; + MissingValues; StaleValues }[] -- only for parameters whose wire name resolves + to exactly one spec value-enum record ('matched' via Resolve-PfbFieldValueEnum); + a HasValidateSet parameter that resolves to 'collision'/'not-found-in-resource'/ + 'no-spec-enum-found' is silently excluded (not enough signal to compare against). + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] [object[]]$CmdletInventory, + [Parameter(Mandatory)] $History, + [Parameter(Mandatory)] [string]$OldestVersion + ) + + $withValidateSet = @($CmdletInventory | Where-Object { $_.Surface -eq 'Typed' -and $_.HasValidateSet }) + + foreach ($cand in $withValidateSet) { + $hint = Get-PfbResourceHint -CmdletName $cand.Cmdlet + $resolution = Resolve-PfbFieldValueEnum -WireName $cand.WireName -ResourceHint $hint -Endpoint $cand.Endpoint -Method $cand.Method -History $History -OldestVersion $OldestVersion + if ($resolution.Status -ne 'matched') { continue } + + $current = @($cand.ValidateSetValues) + $spec = @($resolution.SpecValues) + $missing = @($spec | Where-Object { $current -notcontains $_ }) + $stale = @($current | Where-Object { $spec -notcontains $_ }) + + if ($missing.Count -eq 0 -and $stale.Count -eq 0) { continue } + + [PSCustomObject]@{ + Cmdlet = $cand.Cmdlet + Parameter = $cand.Parameter + CurrentValidateSet = $current + SpecValues = $spec + MissingValues = $missing + StaleValues = $stale + } + } +} diff --git a/tools/lib/PfbCmdletParamTools.ps1 b/tools/lib/PfbCmdletParamTools.ps1 new file mode 100644 index 0000000..e327f58 --- /dev/null +++ b/tools/lib/PfbCmdletParamTools.ps1 @@ -0,0 +1,388 @@ +<# +.SYNOPSIS + AST-based inventory of every typed parameter across Public/**/*.ps1, with best-effort + resolution of each parameter's REST "wire name" (the request-body or query-string key + it's assigned to). Dot-sourced by tools/Build-PfbFieldCmdletMap.ps1 and its Pester + tests, parallel to tools/lib/PfbSpecTools.ps1 and tools/lib/PfbValueEnumTools.ps1. + +.DESCRIPTION + Every cmdlet in this module follows one of a small number of body-construction + patterns (confirmed by direct inspection of New-PfbAlertWatcher, Get-PfbArrayPerformance, + New-PfbBucket, New-PfbNetworkInterface, New-PfbFileSystem, Update-PfbFileSystem): + + if ($Param) { $body['wire_name'] = $Param } + if ($Param) { $body['wire_name'] = @($Param) } # array parameters + if ($queryParams.ContainsKey(...)) ... # not matched, no enum data anyway + $queryParams['wire_name'] = $Param + + A parameter is classified into exactly one Surface: + - 'Typed': a wire name was resolved via a direct (optionally @()-wrapped) assignment. + - 'AttributesOnly': the cmdlet has an -Attributes hashtable escape hatch and this + parameter's value is NOT assigned via a simple pattern above (e.g. it's piped + through ForEach-Object first, like New-PfbNetworkInterface's -AttachedServers) -- + deliberately NOT guessed at, since over-matching here would misattribute a value + enum to the wrong field. + - 'TypedUnresolved': no -Attributes escape hatch exists AND no simple assignment was + found -- surfaced so a human can look, never silently dropped. + + -Array and -Attributes are never returned as inventory records themselves -- they are + plumbing, not spec-documented fields with values to validate. + + Each 'Typed' record also carries a best-effort Endpoint/Method: the literal + -Endpoint/-Method arguments of the Invoke-PfbApiRequest call the parameter's + resolved body/queryParams variable actually feeds, IF every such call in the + function agrees on exactly one (Method, Endpoint) pair. Left $null (never guessed) + when the variable feeds zero calls, or more than one distinct pair -- e.g. + Get-PfbNode's try/catch fallback that reuses the same $queryParams against two + genuinely different endpoints ('nodes' then 'blades'). This is what lets + Build-PfbFieldCmdletMap.ps1 resolve an 'inline-parameter'-kind value-enum record + (see tools/lib/PfbValueEnumTools.ps1), which is keyed by exact endpoint identity, + against the one specific cmdlet parameter that calls it. +#> + +# Deliberately NOT Set-StrictMode -- same reasoning as PfbSpecTools.ps1 / PfbValueEnumTools.ps1. + +function Test-PfbAssignmentGuardedBySwitch { + <# + .SYNOPSIS + True if $Assignment is lexically inside an `if ($ParameterName) { ... }` clause + whose condition is exactly a bare reference to $ParameterName -- the guard shape + Test-PfbAssignmentGuardedBySwitch's caller requires before trusting a literal + string assignment as switch-derived. + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [System.Management.Automation.Language.Ast]$Assignment, + + [Parameter(Mandatory)] + [string]$ParameterName + ) + + $expectedCondition = '$' + $ParameterName + $node = $Assignment.Parent + while ($node) { + if ($node -is [System.Management.Automation.Language.IfStatementAst]) { + foreach ($clause in $node.Clauses) { + if ($clause.Item1.Extent.Text.Trim() -eq $expectedCondition) { + $withinBody = $clause.Item2.FindAll({ param($n) $n -eq $Assignment }, $true) + if (@($withinBody).Count -gt 0) { return $true } + } + } + } + $node = $node.Parent + } + return $false +} + +function Get-PfbWireNameForParameter { + <# + .SYNOPSIS + Finds the request-body or query-string key a given parameter is assigned to + inside a cmdlet function body, or $null if no simple assignment pattern matches. + .OUTPUTS + $null, or [PSCustomObject]@{ WireName; TargetVariable } -- TargetVariable is the + literal variable name the assignment targeted ('body' or 'queryParams'), needed + by Get-PfbEndpointForVariable to find the specific Invoke-PfbApiRequest call(s) + that variable is later passed to. + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [System.Management.Automation.Language.FunctionDefinitionAst]$FunctionAst, + + [Parameter(Mandatory)] + [string]$ParameterName, + + [switch]$IsSwitchParameter + ) + + $assignments = $FunctionAst.FindAll({ + param($node) + $node -is [System.Management.Automation.Language.AssignmentStatementAst] -and + $node.Left -is [System.Management.Automation.Language.IndexExpressionAst] + }, $true) + + foreach ($assign in $assignments) { + $indexExpr = $assign.Left + $targetVar = $indexExpr.Target -as [System.Management.Automation.Language.VariableExpressionAst] + if (-not $targetVar) { continue } + if ($targetVar.VariablePath.UserPath -notin @('body', 'queryParams')) { continue } + + $keyExpr = $indexExpr.Index -as [System.Management.Automation.Language.StringConstantExpressionAst] + if (-not $keyExpr) { continue } + + $rhsText = $assign.Right.Extent.Text.Trim() + $simple = '$' + $ParameterName + $wrapped = '@(' + $simple + ')' + + $isJoinOfParameter = $false + # AssignmentStatementAst.Right is a StatementAst -- for a single-expression RHS (the + # only shape these cmdlets ever use) the parser always wraps it in a CommandExpressionAst, + # never exposing a BinaryExpressionAst directly, so unwrap one level before casting. + $rhsExpr = $assign.Right + if ($rhsExpr -is [System.Management.Automation.Language.CommandExpressionAst]) { + $rhsExpr = $rhsExpr.Expression + } + $rhsBinary = $rhsExpr -as [System.Management.Automation.Language.BinaryExpressionAst] + if ($rhsBinary -and $rhsBinary.Operator -eq [System.Management.Automation.Language.TokenKind]::Join) { + $joinLeft = $rhsBinary.Left -as [System.Management.Automation.Language.VariableExpressionAst] + if ($joinLeft -and $joinLeft.VariablePath.UserPath -eq $ParameterName) { + $isJoinOfParameter = $true + } + } + + $isSwitchLiteral = $false + if ($IsSwitchParameter -and $rhsExpr -is [System.Management.Automation.Language.StringConstantExpressionAst]) { + if (Test-PfbAssignmentGuardedBySwitch -Assignment $assign -ParameterName $ParameterName) { + $isSwitchLiteral = $true + } + } + + if ($rhsText -eq $simple -or $rhsText -eq $wrapped -or $isJoinOfParameter -or $isSwitchLiteral) { + return [PSCustomObject]@{ + WireName = $keyExpr.Value + TargetVariable = $targetVar.VariablePath.UserPath + } + } + } + + return $null +} + +function Find-PfbAccumulatorVariable { + <# + .SYNOPSIS + Finds the accumulator variable a parameter feeds via + `foreach ($x in $Param) { $accumulator.Add($x) }`, so its eventual wire-name + assignment can be traced by re-running Get-PfbWireNameForParameter against the + accumulator's own name. + .DESCRIPTION + Never guesses: returns $null unless there is exactly one such foreach loop over + $ParameterName, its body contains exactly one .Add(...) call whose target is a + bare variable and whose single argument is the loop variable, AND that same + accumulator variable is never .Add()-ed to from anywhere else in the function + (an ambiguous shared accumulator fed by more than one parameter's own loop). + .OUTPUTS + $null, or the accumulator's bare variable name (string, no leading '$'). + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [System.Management.Automation.Language.FunctionDefinitionAst]$FunctionAst, + + [Parameter(Mandatory)] + [string]$ParameterName + ) + + # ForEachStatementAst.Condition (the collection expression after `in`) is always wrapped + # in a PipelineAst containing a single CommandExpressionAst -- the parser never exposes + # a bare VariableExpressionAst directly here, so unwrap two levels before casting (the + # same wrapping phenomenon as AssignmentStatementAst.Right, documented on + # Get-PfbWireNameForParameter's $rhsExpr, just one layer deeper for a loop condition). + $allForeachLoops = @($FunctionAst.FindAll({ + param($node) + $node -is [System.Management.Automation.Language.ForEachStatementAst] + }, $true)) + + $foreachLoops = @($allForeachLoops | Where-Object { + $cond = $_.Condition + if ($cond -is [System.Management.Automation.Language.PipelineAst] -and $cond.PipelineElements.Count -eq 1) { + $cond = $cond.PipelineElements[0] + } + if ($cond -is [System.Management.Automation.Language.CommandExpressionAst]) { + $cond = $cond.Expression + } + $cond -is [System.Management.Automation.Language.VariableExpressionAst] -and + $cond.VariablePath.UserPath -eq $ParameterName + }) + + if ($foreachLoops.Count -ne 1) { return $null } + $loop = $foreachLoops[0] + $loopVarName = $loop.Variable.VariablePath.UserPath + + $addCallsInLoop = @($loop.Body.FindAll({ + param($node) + $node -is [System.Management.Automation.Language.InvokeMemberExpressionAst] -and + $node.Member -is [System.Management.Automation.Language.StringConstantExpressionAst] -and + $node.Member.Value -eq 'Add' -and + $node.Expression -is [System.Management.Automation.Language.VariableExpressionAst] -and + $node.Arguments.Count -eq 1 -and + $node.Arguments[0] -is [System.Management.Automation.Language.VariableExpressionAst] -and + $node.Arguments[0].VariablePath.UserPath -eq $loopVarName + }, $true)) + + if ($addCallsInLoop.Count -ne 1) { return $null } + $accumulatorName = $addCallsInLoop[0].Expression.VariablePath.UserPath + + $allAddCallsForAccumulator = @($FunctionAst.FindAll({ + param($node) + $node -is [System.Management.Automation.Language.InvokeMemberExpressionAst] -and + $node.Member -is [System.Management.Automation.Language.StringConstantExpressionAst] -and + $node.Member.Value -eq 'Add' -and + $node.Expression -is [System.Management.Automation.Language.VariableExpressionAst] -and + $node.Expression.VariablePath.UserPath -eq $accumulatorName + }, $true)) + + if ($allAddCallsForAccumulator.Count -ne 1) { return $null } + + return $accumulatorName +} + +function Get-PfbEndpointForVariable { + <# + .SYNOPSIS + Finds the (Method, Endpoint) pair a body/queryParams variable is passed to via + Invoke-PfbApiRequest -Body/-QueryParams within a function, IF every such call + agrees on exactly one (Method, Endpoint) pair. + .DESCRIPTION + Never guesses: returns $null when the variable feeds zero Invoke-PfbApiRequest + calls, or more than one call with a DIFFERENT (Method, Endpoint) pair (e.g. + Get-PfbNode's try/catch fallback that reuses the same $queryParams against two + genuinely different endpoints, 'nodes' then 'blades' -- correctly ambiguous, + not a case to force-pick one of). Only literal, unquoted-bareword-or-quoted- + string -Method/-Endpoint arguments are recognized, matching the exclusively + literal style every cmdlet in this repo actually uses for both. + .OUTPUTS + $null, or [PSCustomObject]@{ Method; Endpoint } + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [System.Management.Automation.Language.FunctionDefinitionAst]$FunctionAst, + + [Parameter(Mandatory)] + [string]$TargetVariable + ) + + $targetParamName = switch ($TargetVariable) { + 'body' { 'Body' } + 'queryParams' { 'QueryParams' } + default { $null } + } + if (-not $targetParamName) { return $null } + + $commands = $FunctionAst.FindAll({ + param($node) + $node -is [System.Management.Automation.Language.CommandAst] -and + $node.GetCommandName() -eq 'Invoke-PfbApiRequest' + }, $true) + + $pairs = [System.Collections.Generic.List[string]]::new() + + foreach ($cmd in $commands) { + $elements = $cmd.CommandElements + $usesVariable = $false + $method = $null + $endpoint = $null + + for ($i = 0; $i -lt $elements.Count; $i++) { + $el = $elements[$i] + if ($el -isnot [System.Management.Automation.Language.CommandParameterAst]) { continue } + $next = if ($i + 1 -lt $elements.Count) { $elements[$i + 1] } else { $null } + if (-not $next) { continue } + + if ($el.ParameterName -eq $targetParamName -and + $next -is [System.Management.Automation.Language.VariableExpressionAst] -and + $next.VariablePath.UserPath -eq $TargetVariable) { + $usesVariable = $true + } + elseif ($el.ParameterName -eq 'Method' -and $next -is [System.Management.Automation.Language.StringConstantExpressionAst]) { + $method = $next.Value + } + elseif ($el.ParameterName -eq 'Endpoint' -and $next -is [System.Management.Automation.Language.StringConstantExpressionAst]) { + $endpoint = $next.Value + } + } + + if ($usesVariable -and $method -and $endpoint) { + $pairs.Add("$($method.ToUpperInvariant())|$endpoint") + } + } + + $distinct = @($pairs | Select-Object -Unique) + if ($distinct.Count -ne 1) { return $null } + + $parts = $distinct[0] -split '\|', 2 + return [PSCustomObject]@{ Method = $parts[0]; Endpoint = $parts[1] } +} + +function Get-PfbCmdletParameterInventory { + <# + .SYNOPSIS + Inventories every typed parameter (excluding -Array/-Attributes themselves) + across every function defined under -PublicDirectory. + .OUTPUTS + [PSCustomObject]@{ File; Cmdlet; Parameter; HasValidateSet; ValidateSetValues; + WireName; Surface; Endpoint; Method } + + Endpoint/Method are $null unless the parameter's wire-name assignment resolved + to exactly one Invoke-PfbApiRequest call's endpoint (see + Get-PfbEndpointForVariable) -- never guessed. + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [string]$PublicDirectory + ) + + $results = [System.Collections.Generic.List[object]]::new() + $files = Get-ChildItem -Path $PublicDirectory -Filter '*.ps1' -Recurse -File + + foreach ($file in $files) { + $tokens = $null + $parseErrors = $null + $ast = [System.Management.Automation.Language.Parser]::ParseFile($file.FullName, [ref]$tokens, [ref]$parseErrors) + + $functionAsts = $ast.FindAll({ param($n) $n -is [System.Management.Automation.Language.FunctionDefinitionAst] }, $true) + + foreach ($funcAst in $functionAsts) { + $paramBlock = $funcAst.Body.ParamBlock + if (-not $paramBlock) { continue } + + $hasAttributesParam = [bool]($paramBlock.Parameters | Where-Object { $_.Name.VariablePath.UserPath -eq 'Attributes' }) + + foreach ($p in $paramBlock.Parameters) { + $paramName = $p.Name.VariablePath.UserPath + if ($paramName -in @('Array', 'Attributes')) { continue } + + $validateSetValues = $null + foreach ($attr in $p.Attributes) { + if ($attr -is [System.Management.Automation.Language.AttributeAst] -and $attr.TypeName.Name -eq 'ValidateSet') { + $validateSetValues = @($attr.PositionalArguments | ForEach-Object { $_.SafeGetValue() }) + } + } + + $isSwitch = $p.StaticType -eq [System.Management.Automation.SwitchParameter] + $wireInfo = Get-PfbWireNameForParameter -FunctionAst $funcAst -ParameterName $paramName -IsSwitchParameter:$isSwitch + if (-not $wireInfo) { + $accumulatorName = Find-PfbAccumulatorVariable -FunctionAst $funcAst -ParameterName $paramName + if ($accumulatorName) { + $wireInfo = Get-PfbWireNameForParameter -FunctionAst $funcAst -ParameterName $accumulatorName + } + } + $wireName = if ($wireInfo) { $wireInfo.WireName } else { $null } + + $endpointInfo = if ($wireInfo) { Get-PfbEndpointForVariable -FunctionAst $funcAst -TargetVariable $wireInfo.TargetVariable } else { $null } + + $surface = if ($wireName) { 'Typed' } + elseif ($hasAttributesParam) { 'AttributesOnly' } + else { 'TypedUnresolved' } + + $results.Add([PSCustomObject]@{ + File = $file.FullName + Cmdlet = $funcAst.Name + Parameter = $paramName + HasValidateSet = [bool]$validateSetValues + ValidateSetValues = $validateSetValues + WireName = $wireName + Surface = $surface + Endpoint = if ($endpointInfo) { $endpointInfo.Endpoint } else { $null } + Method = if ($endpointInfo) { $endpointInfo.Method } else { $null } + }) + } + } + } + + return $results +} diff --git a/tools/lib/PfbSpecTools.ps1 b/tools/lib/PfbSpecTools.ps1 new file mode 100644 index 0000000..69082d9 --- /dev/null +++ b/tools/lib/PfbSpecTools.ps1 @@ -0,0 +1,319 @@ +<# +.SYNOPSIS + Shared helpers for fetching and diffing FlashBlade OpenAPI specs across REST + versions. Dot-sourced by tools/Update-PfbApiSpecs.ps1, tools/Build-PfbCapabilityMap.ps1, + and their Pester tests. + +.DESCRIPTION + Each FlashBlade REST version's ReDoc reference page at + https://code.purestorage.com/swagger/redoc/fb-api-reference.html embeds the + full OpenAPI 3.0.1 document inline as a JavaScript object literal: + + + + There is no standalone .json/.yaml URL — the page's "Download" button serializes this + in-memory object to a client-side blob: URL, which cannot be fetched directly. These + helpers extract the embedded object server-side instead. + + Confirmed (2025-07-08, specs fb2.10 and fb2.27): + - The object is a single valid JSON value (ConvertFrom-Json handles it directly). + - Paths for versioned resource endpoints are prefixed with the REST version itself, + e.g. "/api/2.27/arrays" vs "/api/2.10/arrays" — must be normalized before + comparing the same logical endpoint across versions. A handful of auth/meta + endpoints (/api/login, /api/api_version, /api/logout, /api/login-banner, + /oauth2/1.0/token) are NOT version-prefixed and are left as-is. + - Path items include a vendor extension key "x-pure-authorization-resource" + alongside real HTTP-method keys — must filter to actual HTTP verbs. + - Parameters and request bodies are almost always $ref'd into + components.parameters / components.schemas rather than inlined. + - The spec contains NO structural JSON Schema "enum" anywhere (verified: zero + occurrences across all 925 schemas / 224 parameters in fb2.27, and again in + fb2.10). Allowed values for fields like Bucket.versioning are documented only in + free-text `description` prose ("Valid values are `none`, `enabled`, ..."). This + means per-enum-value "introduced in version X" tracking is NOT derivable from + structured data, and is intentionally out of scope for the generated capability + map — only endpoint, parameter, and request-body top-level property existence are + tracked. +#> + +# Deliberately NOT Set-StrictMode: these functions walk deeply heterogeneous +# PSCustomObjects deserialized from JSON where a given node legitimately may or may not +# have a given property (e.g. not every operation has .parameters or .requestBody). +# Under StrictMode -Version Latest, referencing a missing property throws instead of +# returning $null, which breaks the `if ($op.parameters)`-style presence checks used +# throughout. Every access here is deliberately null-tolerant. + +$script:PfbHttpMethods = @('get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace') + +function ConvertFrom-PfbRedocHtml { + <# + .SYNOPSIS + Extracts the embedded OpenAPI document from a FlashBlade ReDoc reference page. + .PARAMETER Html + The full HTML content of a fb-api-reference.html page. + .OUTPUTS + The OpenAPI document (PSCustomObject), i.e. __redoc_state.spec.data. + #> + [CmdletBinding()] + param( + [Parameter(Mandatory)] + [string]$Html + ) + + $marker = 'const __redoc_state = ' + $markerIdx = $Html.IndexOf($marker) + if ($markerIdx -lt 0) { + throw "Could not find '__redoc_state' assignment in the ReDoc page. The page format may have changed." + } + + $braceStart = $Html.IndexOf('{', $markerIdx) + if ($braceStart -lt 0) { + throw "Found '__redoc_state' marker but no opening brace followed it." + } + + # Balanced-brace scan respecting quoted strings and escape sequences, since the + # object is minified JSON embedded directly in a